Cách KoreroPlatforms (Được cung cấp bởi DiGiSPICE) đã xây dựng kiến trúc SaaS cho multi-tenant để dành cho các khách hàng doanh nghiệp của họ bằng cách sử dụng AWS Organizations

DiGiSPICE – Nền tảng truyền thông KoreroPlatforms hỗ trợ mô hình tài khoản-mỗi-khách hàng bằng AWS Organizations

DiGiSPICE được khách hàng biết đến như một tổ chức dẫn đầu trong việc đổi mới, sáng tạo và có kinh nghiệm rộng lớn trong việc vận hành các dịch vụ viễn thông tại Ấn Độ (Spice Telecom). Họ hỗ trợ doanh nghiệp trong hành trình chuyển đổi kỹ thuật số bằng cách tận dụng sức mạnh của di động và sử dụng công nghệ để cải thiện trải nghiệm kết nối của khách hàng.

Với sứ mệnh trên, DiGiSPICE đã xây dựng một nền tảng truyền thông mang tên KoreroPlatforms và cung cấp dịch vụ này cho các doanh nghiệp. Email là một trong những kênh truyền thông được hỗ trợ như một phần của các ưu đãi của KoreroPlatforms. Bằng cách sử dụng dịch vụ này, các doanh nghiệp có thể gửi thông báo cho khách hàng, chẳng hạn như tin nhắn giao dịch, cảnh báo, nhắc nhở, nội dung khuyến mãi và tin tức thông báo. Điều này cũng cho phép các doanh nghiệp giúp khách hàng giữ liên lạc với các hoạt động của họ thông qua một chiến dịch được quản lý.

Bài viết này sẽ cho thấy cách KoreroPlatforms sử dụng mô hình tài khoản-mỗi-khách hàng bằng cách sử dụng tổ chức AWS để tận dụng một mô hình Software as a Service (SaaS) “ngăn chặn” hơn để hỗ trợ những nhu cầu phân tầng độc đáo của khách hàng.

Điều kiện tiên quyết

Bài viết này dựa trên các khái niệm và mô hình cô lập được khuyến nghị trong bài báo trắng SaaS Tenant Isolation Strategies. Việc xem xét các chiến lược cô lập khác nhau và trách nhiệm đi kèm với mỗi mô hình sẽ giúp bạn lựa chọn đúng cho nền tảng SaaS của mình. Bài viết này được dành cho các nhà cung cấp phần mềm độc lập (ISV) cung cấp sản phẩm SaaS, cũng như các kiến trúc sư thiết kế hệ thống có mô hình tài khoản AWS cho mỗi khách hàng. Kiến trúc được mô tả phù hợp với các yêu cầu có quy mô từ hàng ngàn khách hàng, nhưng khó mở rộng lên hàng trăm ngàn hoặc triệu khách hàng.

Tổng quan về giải pháp

Kiến trúc ban đầu của KoreroPlatforms dựa trên một mô hình trong đó tất cả các thành phần của nền tảng được triển khai trong một mô hình SaaS “pooled”, trong đó cơ sở hạ tầng của toàn bộ khách hàng được chia sẻ bởi các khách hàng chạy trong một tài khoản AWS duy nhất. Dưới đây là danh sách các thành phần giải pháp là một phần của kiến trúc KoreroPlatforms:

  • Giao diện người dùng web cổng thông tin: Cung cấp các tính năng và khả năng cho các khách hàng doanh nghiệp để họ có thể tự phục vụ đăng ký trên KoreroPlatforms. Các doanh nghiệp có thể quản lý danh sách người nhận email, tin nhắn và mẫu chiến dịch và có thể tạo báo cáo.
  • Ứng dụng Backend: Cung cấp các chức năng Backend cho các tính năng của ứng dụng web cổng thông tin.
  • CPaaS API Manager: Cung cấp các API đơn giản dựa trên HTTP JSON có đầy đủ tính năng hoạt động trong bất kỳ ngôn ngữ lập trình nào. Lớp Backend ứng dụng liên lạc với lớp CPaaS API Manager để tương tác với các dịch vụ AWS qua SDK AWS cho Java. Ví dụ, Amazon Simple Email Service (Amazon SES) để gửi và nhận email.

Các AWS Services được sử dụng trong giải pháp này

Bài viết này sẽ giới thiệu về cách các thành phần này được triển khai trên kiến trúc AWS. Hình ảnh trong hình 1 cung cấp một tổng quan về các bộ phận của hệ thống này và cách chúng được triển khai trên các dịch vụ AWS khác nhau.

Hình 1: Kiến trúc trước của KoreroPlatforms

Trong hình ảnh này, bạn sẽ nhận thấy rằng KoreroPlatforms đã sử dụng Amazon EC2 Auto Scaling để có khả năng tính toán có khả năng mở rộng cho khối lượng công việc của họ. Các thành phần Portal Web Front End, Application Backend và CPaaS API Manager đều được triển khai trên các instance Amazon Elastic Compute Cloud (Amazon EC2).

Khái niệm về tenancy được hỗ trợ trên các phần khác nhau của mô hình KoreroPlatforms. Quá trình Onboarding được khách hàng khởi động thông qua Ứng dụng Web Portal. Cấu hình của tenant được quản lý bởi các dịch vụ Application Backend. CPaaS API Manager cũng được triển khai như một dịch vụ riêng chạy trên Amazon EC2.

Cơ sở dữ liệu được hiển thị trong biểu đồ này đại diện cho  Amazon Relational Database Service (Amazon RDS) (Amazon RDS) được sử dụng để lưu trữ và cấu hình dữ liệu của khách hàng. Nó giữ tất cả thông tin cần thiết để lấy và xử lý tất cả các yêu cầu cụ thể của khách hàng.

KoreroPlatforms sử dụng Amazon SES để gửi email, bao gồm email giao dịch, email tiếp thị hoặc email hàng loạt. Amazon SES gửi thông báo sự kiện đến một chủ đề Amazon Simple Notification Service (Amazon SNS) để cho phép theo dõi các email được gửi bằng Amazon SES và tạo báo cáo. Cả việc đăng nhập và giám sát của nền tảng Korero được thực hiện bằng Amazon CloudWatch.

Ban đầu, KoreroPlatforms bắt đầu xây dựng nền tảng giao tiếp qua email bằng các dịch vụ AWS được đề cập trên trong một tài khoản AWS duy nhất. Khi có nhiều doanh nghiệp tham gia, KoreroPlatforms nhận được yêu cầu mới từ một số doanh nghiệp về khả năng gửi email trực tiếp bằng một client SMTP. Hơn nữa, KoreroPlatforms muốn duy trì danh tiếng người gửi email của từng doanh nghiệp một cách riêng biệt, điều này không thể thực hiện trong một tài khoản duy nhất.

Để giải quyết các trường hợp sử dụng này, KoreroPlatforms quyết định chuyển sang mô hình triển khai Hybrid SaaS và sử dụng các nguồn tài nguyên cơ sở hạ tầng riêng biệt cho dịch vụ Amazon SES cho mỗi khách hàng. Điều này cho phép họ cung cấp trải nghiệm riêng biệt cho từng khách hàng mà không thể đạt được trong mô hình pool. Để phân tách các tài nguyên này và đạt được mục tiêu của khách hàng của họ, KoreroPlatforms đã chọn phân tách phần Amazon SES của trải nghiệm của họ bằng cách sử dụng các tài khoản riêng cho phần Amazon SES của hệ thống của họ. Điều này đưa họ vào một mô hình sử dụng Tổ chức để tập trung quản lý các tài khoản được phân tách của họ.

Cách KoreroPlatforms làm cho nó hoạt động

Thiết lập tài khoản mới với Organizations

Trong giai đoạn đầu tiên, KoreroPlatforms đã tạo một tài khoản mới và thiết lập một tổ chức mới trong tài khoản này bằng cách sử dụng tính năng Organizations. Các thành phần của một tổ chức bao gồm một gốc (the recognized boundary of the organization), tài khoản quản lý và các tài khoản thành viên được tổ chức thành các đơn vị tổ chức.

Hình 2 cung cấp một cái nhìn về kiến trúc mới. Ở đây, các thành phần Korero hiện có, chẳng hạn như giao diện trước của web Portal, ứng dụng backend và CPaaS API Manager, vẫn sẽ cư trú trong cùng mô hình được gom nhóm mà họ đã sử dụng trước đó (chạy trong cùng một tài khoản). Điểm mới ở đây là chúng ta hiện có một tài khoản riêng được sử dụng để chạy phần Amazon SES của trải nghiệm.

Hình 2: Kiến trúc KoreroPlatforms sử dụng Organizations

Tại đây, bạn sẽ thấy cách tiếp cận mới được sử dụng để hỗ trợ việc có các tài khoản riêng biệt cho các yếu tố Amazon SES của kiến trúc. Đây là nơi nhóm đã dựa vào tính năng Organizations để hỗ trợ mô hình mới này, tạo ra một tài khoản thành viên riêng để hỗ trợ cho mỗi khách hàng. Sau đó, chúng ta có một tài khoản quản lý được sử dụng để tổng hợp các sự kiện từ các tài khoản thành viên này bằng cách sử dụng Amazon SNS.

Việc sử dụng Amazon SNS trong tài khoản quản lý này cho phép KoreroPlatforms giới thiệu một cơ chế giám sát tập trung, nơi thông báo sự kiện của Amazon SES được xuất bản từ mỗi tài khoản khách hàng đến một chủ đề Amazon SNS duy nhất được cấu hình trong tài khoản quản lý.

Phương pháp này đã cung cấp cho KoreroPlatforms tính linh hoạt để cấu hình dịch vụ Amazon SES và thông tin đăng nhập SMTP cho mỗi doanh nghiệp trong một tài khoản được dành riêng cho khách hàng đó. Nó cũng cung cấp khả năng duy trì sự uy tín của người gửi một cách riêng biệt cho mỗi khách hàng và vẫn cho phép KoreroPlatforms quản lý và vận hành các môi trường này thông qua một giao diện duy nhất.

Cách KoreroPlatforms tự động hóa quy trình làm việc giới thiệu tenant mới với những thay đổi này

Tự động hóa việc tạo, cấu hình, và cung cấp tài nguyên cho khách hàng là một yếu tố cốt lõi để tạo ra trải nghiệm đa khách hàng phong phú và có khả năng mở rộng. Bạn có thể truy cập liên kết này để hiểu về các thực tiễn tốt nhất để đưa khách hàng mới vào hệ thống.

Bài viết này sẽ phân tích các thay đổi mã trong lớp Quản lý API CPaaS để sử dụng Tổ chức trong bộ công cụ KoreroPlatforms. Lưu ý rằng Quản lý API CPaaS được triển khai trên một tài khoản không phải là thành viên của tổ chức.

Khi khách hàng doanh nghiệp đăng ký trên Cổng ứng dụng Web và bắt đầu quá trình chào đón, quy trình làm việc sau đây sẽ được kích hoạt:

Hình 3: Quy trình Workflow làm việc giới thiệu doanh nghiệp sử dụng Organizations

Quá trình tạo và cấu hình tài khoản cho từng tenant doanh nghiệp trên KoreroPlatforms bao gồm các bước sau được thực thi từ CPaaS API Manager Layer:

Bước 1: Truy cập tài khoản quản lý: Để tạo tài khoản cho doanh nghiệp, bước đầu tiên là truy cập theo chương trình tài khoản quản lý của Organizations từ CPaaS API Manager Layer. Điều này được thực hiện bằng cách sử dụng hướng dẫn được lưu trữ tốt của AWS để sử dụng thông tin xác thực tạm thời dựa trên giả định về vai trò nhiều tài khoản.

Bước 2: Tạo và xác minh tài khoản thành viên mới: Sau khi truy cập vào tài khoản quản lý, CPaaS API Manager Layer thực hiện các bước sau:

2.1. Tạo tài khoản thành viên mới bằng CreateAccount API.

Khi một tài khoản thành viên được tạo bằng Organizations, nó sẽ tự động tạo một vai trò IAM có tên là OrganizationAccountAccessRole trong tài khoản. Vai trò này có đầy đủ quyền quản trị đối với tài khoản thành viên đó. Vai trò này được định cấu hình để cấp quyền truy cập đó vào tài khoản quản lý của Organizations

Vui lòng theo liên kết này để biết thêm chi tiết về khái niệm này.

2.2. Vì CreateAccount  hoạt động không đồng bộ, trạng thái hoàn thành yêu cầu này được kiểm tra bằng cách gọi hoạt động DescribeCreateAccountStatus trong một vòng lặp trước khi tiếp tục các bước tiếp theo.

2.3 Di chuyển tài khoản thành viên vào đơn vị tổ chức bằng cách gọi MoveAccount API.

Bước 3: Định cấu hình các dịch vụ trong Tài khoản thành viên: Sau khi tài khoản thành viên được tạo, xác minh và chuyển đến đơn vị tổ chức cần thiết, bước tiếp theo là cấu hình tài nguyên trong tài khoản thành viên. Để định cấu hình tài khoản mới được tạo, lớp người quản lý API CPaaS sử dụng thông tin đăng nhập tạm thời của tài khoản quản lý từ Bước 1 và đảm nhận vai trò (OrganizationAccountAccessRole) được tạo trong tài khoản thành viên ở Bước 2. Để đảm nhận vai trò, AssumeRole API từ  AWS Security Token Service (AWS STS) được sử dụng. Hãy nhấp vào liên kết này để hiểu khái niệm liên quan đến việc sử dụng vai trò AWS Identity and Access Management (IAM) cho các khái niệm truy cập nhiều tài khoản.

Sau khi đảm nhận vai trò OrganizationAccountAccessRole, hãy xây dựng cấu hình dịch vụ mạng, IAM và Amazon SES của tài khoản mới để gửi email.

Sau khi chuyển tài khoản thành viên vào một đơn vị tổ chức, các quyền của OrganizationAccountAccessRole sẽ được giảm bớt để phù hợp với việc sử dụng vai trò này trong tương lai.

Bài đăng, Cách sử dụng AWS Organizations  để tự động tạo tài khoản từ đầu đến cuối, chứa chi tiết hơn về các bước trên được mô tả trong quy trình KoreroPlatforms.

Bước 4: Giám sát sự kiện email tập trung trong Tài khoản quản lý: KoreroPlatforms đã triển khai giám sát tập trung trong tài khoản quản lý bằng cách xuất bản thông báo sự kiện Amazon SES từ tất cả các tài khoản của tenant đến một chủ đề Amazon SNS được định cấu hình trong tài khoản quản lý. KoreroPlatforms đạt được điều này bằng cách triển khai các bộ cấu hình Amazon SES trong tài khoản thành viên bằng cách gọi API CreateConfigurationSet. Đặt điểm đến của sự kiện thành chủ đề Amazon SNS được định cấu hình trong tài khoản quản lý bằng cách gọi API CreateConfigurationSetEventDestination

Để cho phép Amazon SES từ tài khoản thành viên xuất bản lên chủ đề thuộc sở hữu của tài khoản quản lý, KoreroPlatforms thực hiện theo các khuyến nghị này.

Điều này cho phép KoreroPlatforms nhận được tất cả các tài khoản thành viên thông báo gọi lại các sự kiện Amazon SES cho các chỉ số gửi email, bao gồm số lần gửi, số lần gửi, số lần mở, nhấp chuột, bị trả lại, từ chối, lỗi hiển thị và khiếu nại đến tài khoản quản lý và thực hiện các hành động cần thiết một cách tập trung.

Bước 5: Thêm và xác minh miền trong tài khoản thành viên: Thêm miền vào danh sách nhận dạng cho tài khoản Amazon SES của bạn và cố gắng xác minh nó bằng lệnh gọi VerifyDomainIdentity API . Sau khi miền được thêm và xác minh, KoreroPlatforms có thể tạo ID DKIM cho mỗi tài khoản tenant trên mỗi miền. Sử dụng VerifyDomainDkim AP để trả lại tập hợp mã thông báo DKIM cho danh tính miền.

Khi các bước nêu trên được định cấu hình, tài khoản tenant đã sẵn sàng để gửi email. Điều này cho phép KoreroPlatforms phân vùng và quản lý email của từng doanh nghiệp một cách riêng biệt và độc lập với nhau. Nó cũng cho phép khả năng quản lý hạn ngạch dịch vụ theo từng yêu cầu của doanh nghiệp. Ngoài ra, bằng cách sử dụng các tính năng của Nhóm tài nguyên AWS, Thẻ tài nguyên Amazon SES và thẻ Phân bổ chi phí, họ có kế hoạch tăng khả năng hiển thị về chi phí dịch vụ Amazon SES trên mỗi miền ở cấp tài khoản thành viên.

Tóm tắt

Bằng cách triển khai các thay đổi tổ chức và sử dụng chiến lược đa tài khoản thông qua Organizations, KoreroPlatforms đã đạt được các kết quả sau trong kiến trúc của mình:

  1. Định nghĩa mô hình chịu trách nhiệm chung về chi phí, bảo mật, tuân thủ và thời gian chạy trong các Tài khoản AWS.
  2. Tạo các tài khoản công việc riêng cho tất cả các khách hàng doanh nghiệp.
  3. Tạo các tài khoản sandbox riêng cho các nhà phát triển làm việc, thử nghiệm và đào tạo.
  4. Tạo các tài khoản riêng cho PoC và Demo.
  5. Bằng cách cấu hình dịch vụ Amazon SES cho mỗi tài khoản thành viên, KoreroPlatforms có thể quản lý các hạn ngạch dịch vụ riêng cho từng khách hàng doanh nghiệp.
  6. Hiện nay, KoreroPlatforms có kiểm soát tốt hơn về vệ sinh email và có thể cung cấp một tài khoản SMTP tại mỗi cấp độ khách hàng, điều này trước đây không thể thực hiện được.
  7. Trong bất kỳ ngày nào, KoreroPlatforms đang gửi khoảng 5 triệu email thay mặt cho các khách hàng doanh nghiệp của mình và số lượng này đang tăng nhanh chóng.

Silo, pool and bridge  là các mô hình kiến trúc khác nhau dưới  SaaS Lens của  AWS Well-Architected Framework. AWS Well-Architected là một tập hợp các nguyên tắc thiết kế hướng dẫn do AWS phát triển để giúp các tổ chức xây dựng cơ sở hạ tầng an toàn, hiệu suất cao, khả năng phục hồi và hiệu quả cho nhiều ứng dụng và khối lượng công việc. Sử dụng AWS Well-Architected Tool để xem xét khối lượng công việc của bạn theo định kỳ nhằm giải quyết các cân nhắc thiết kế quan trọng và đảm bảo rằng chúng tuân theo các phương pháp và hướng dẫn tốt nhất của Khung kiến trúc tốt AWS. Đối với các câu hỏi hoặc nhận xét tiếp theo, hãy tham gia cộng đồng đang phát triển của chúng tôi trên  AWS re:Post. ”


Bài được dịch từ bài viết trên AWS Blogs, bạn có thể xem bài viết gốc tại đây.