

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Mengelola penghuni di beberapa produk SaaS pada satu bidang kontrol
<a name="manage-tenants-across-multiple-saas-products-on-a-single-control-plane"></a>

*Ramanna Avancha, Kishan Kavala, Anusha Mandava, dan Jenifer Pascal, Amazon Web Services*

## Ringkasan
<a name="manage-tenants-across-multiple-saas-products-on-a-single-control-plane-summary"></a>

Pola ini menunjukkan cara mengelola siklus hidup penyewa di beberapa produk perangkat lunak sebagai layanan (SaaS) pada satu bidang kontrol di AWS Cloud. Arsitektur referensi yang disediakan dapat membantu organisasi mengurangi implementasi fitur bersama yang berlebihan di seluruh produk SaaS masing-masing dan memberikan efisiensi tata kelola dalam skala besar.

Perusahaan besar dapat memiliki beberapa produk SaaS di berbagai unit bisnis. Produk-produk ini sering perlu disediakan untuk digunakan oleh penyewa eksternal pada tingkat langganan yang berbeda. Tanpa solusi penyewa umum, administrator TI harus menghabiskan waktu mengelola fitur yang tidak terdiferensiasi di beberapa SaaS APIs, alih-alih berfokus pada pengembangan fitur produk inti.

Solusi penyewa umum yang disediakan dalam pola ini dapat membantu memusatkan pengelolaan banyak fitur produk SaaS bersama organisasi, termasuk yang berikut:
+ Keamanan
+ Penyediaan penyewa
+ Penyimpanan data penyewa
+ Komunikasi penyewa
+ Manajemen produk
+ Pencatatan dan pemantauan metrik

## Prasyarat dan batasan
<a name="manage-tenants-across-multiple-saas-products-on-a-single-control-plane-prereqs"></a>

**Prasyarat**
+ Akun AWS yang aktif
+ Pengetahuan tentang Amazon Cognito atau penyedia identitas pihak ketiga (iDP)
+ Pengetahuan tentang Amazon API Gateway
+ Pengetahuan tentang AWS Lambda
+ Pengetahuan tentang Amazon DynamoDB
+ Pengetahuan tentang AWS Identity and Access Management (IAM)
+ Pengetahuan tentang AWS Step Functions
+ Pengetahuan tentang AWS CloudTrail dan Amazon CloudWatch
+ Pengetahuan tentang pustaka dan kode Python
+ Pengetahuan tentang SaaS APIs, termasuk berbagai jenis pengguna (organisasi, penyewa, administrator, dan pengguna aplikasi), model berlangganan, dan model isolasi penyewa
+ Pengetahuan tentang persyaratan SaaS multi-produk organisasi Anda dan langganan multi-penyewa

**Batasan**
+ Integrasi antara solusi penyewa umum dan produk SaaS individu tidak tercakup dalam pola ini.
+ Pola ini menerapkan layanan Amazon Cognito hanya dalam satu Wilayah AWS.

## Arsitektur
<a name="manage-tenants-across-multiple-saas-products-on-a-single-control-plane-architecture"></a>

**Tumpukan teknologi target**
+ Amazon API Gateway
+ Amazon Cognito
+ AWS CloudTrail
+ Amazon CloudWatch
+ Amazon DynamoDB
+ IAM
+ AWS Lambda
+ Amazon Simple Storage Service (Amazon S3)
+ Amazon Simple Notification Service (Amazon SNS)
+ Fungsi AWS Step

**Arsitektur target**

Diagram berikut menunjukkan contoh alur kerja untuk mengelola siklus hidup penyewa di beberapa produk SaaS pada satu bidang kontrol di AWS Cloud.

![Alur kerja untuk mengelola siklus hidup penyewa pada satu bidang kontrol.](https://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/4306bc76-22a7-45ca-a107-43df6c6f7ac8/images/700faf4d-c28f-4814-96aa-2d895cdcb518.png)


 Diagram menunjukkan alur kerja berikut:

1. Pengguna AWS memulai penyediaan penyewa, penyediaan produk, atau tindakan terkait administrasi dengan melakukan panggilan ke titik akhir API Gateway.

1. Pengguna diautentikasi oleh token akses yang diambil dari kumpulan pengguna Amazon Cognito, atau IDP lain.

1. Tugas penyediaan atau administrasi individu dijalankan oleh fungsi Lambda yang terintegrasi dengan titik akhir API Gateway API.

1. Administrasi APIs untuk solusi penyewa umum (untuk penyewa, produk, dan pengguna) mengumpulkan semua parameter input, header, dan token yang diperlukan. Kemudian, administrasi APIs memanggil fungsi Lambda terkait.

1. Izin IAM untuk administrasi APIs dan fungsi Lambda divalidasi oleh layanan IAM.

1. Fungsi Lambda menyimpan dan mengambil data dari katalog (untuk penyewa, produk, dan pengguna) di DynamoDB dan Amazon S3.

1. Setelah izin divalidasi, alur kerja AWS Step Functions dipanggil untuk melakukan tugas tertentu. Contoh dalam diagram menunjukkan alur kerja penyediaan penyewa.

1. Tugas alur kerja AWS Step Functions individual dijalankan dalam alur kerja yang telah ditentukan (state machine).

1. Setiap data penting yang diperlukan untuk menjalankan fungsi Lambda yang terkait dengan setiap tugas alur kerja diambil dari DynamoDB atau Amazon S3. Sumber daya AWS lainnya mungkin perlu disediakan dengan menggunakan templat CloudFormation AWS.

1. Jika diperlukan, alur kerja mengirimkan permintaan untuk menyediakan sumber daya AWS tambahan untuk produk SaaS tertentu ke akun AWS produk tersebut.

1. Ketika permintaan berhasil atau gagal, alur kerja menerbitkan pembaruan status sebagai pesan ke topik Amazon SNS.

1. Amazon SNS berlangganan topik Amazon SNS alur kerja Step Functions.

1. Amazon SNS kemudian mengirimkan pembaruan status alur kerja kembali ke pengguna AWS.

1. Log dari setiap tindakan layanan AWS, termasuk jejak audit panggilan API, dikirim ke CloudWatch. Aturan dan alarm khusus dapat dikonfigurasi CloudWatch untuk setiap kasus penggunaan.

1. Log diarsipkan dalam bucket Amazon S3 untuk tujuan audit.

**Otomatisasi dan skala**

Pola ini menggunakan CloudFormation template untuk membantu mengotomatiskan penerapan solusi penyewa umum. Template juga dapat membantu Anda dengan cepat meningkatkan atau menurunkan sumber daya terkait.

Untuk informasi selengkapnya, lihat [Bekerja dengan CloudFormation templat AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html) di *Panduan CloudFormation Pengguna AWS*.

## Alat
<a name="manage-tenants-across-multiple-saas-products-on-a-single-control-plane-tools"></a>

**Layanan AWS**
+ [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) membantu Anda membuat, menerbitkan, memelihara, memantau, dan mengamankan REST, HTTP, dan WebSocket APIs dalam skala apa pun.
+ [Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html) menyediakan otentikasi, otorisasi, dan manajemen pengguna untuk aplikasi web dan seluler.
+ [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) membantu Anda mengaudit tata kelola, kepatuhan, dan risiko operasional akun AWS Anda.
+ [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) membantu Anda memantau metrik sumber daya AWS Anda dan aplikasi yang Anda jalankan di AWS secara real time.
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) adalah layanan database NoSQL yang dikelola sepenuhnya yang menyediakan kinerja yang cepat, dapat diprediksi, dan terukur.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) membantu Anda mengelola akses ke sumber daya AWS dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) adalah layanan komputasi yang membantu Anda menjalankan kode tanpa perlu menyediakan atau mengelola server. Ini menjalankan kode Anda hanya bila diperlukan dan skala secara otomatis, jadi Anda hanya membayar untuk waktu komputasi yang Anda gunakan.
+ [Amazon Simple Storage Service (Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.
+ [Amazon Simple Notification Service (Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html)) membantu Anda mengoordinasikan dan mengelola pertukaran pesan antara penayang dan klien, termasuk server web dan alamat email.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) adalah layanan orkestrasi tanpa server yang membantu Anda menggabungkan fungsi AWS Lambda dan layanan AWS lainnya untuk membangun aplikasi yang penting bagi bisnis.

## Praktik terbaik
<a name="manage-tenants-across-multiple-saas-products-on-a-single-control-plane-best-practices"></a>

Solusi dalam pola ini menggunakan pesawat kontrol tunggal untuk mengelola orientasi beberapa penyewa dan untuk menyediakan akses ke beberapa produk SaaS. Bidang kontrol membantu pengguna administratif mengelola empat bidang khusus fitur lainnya:
+ Pesawat keamanan
+ Bidang alur kerja
+ Pesawat komunikasi
+ Pesawat penebangan dan pemantauan

## Epik
<a name="manage-tenants-across-multiple-saas-products-on-a-single-control-plane-epics"></a>

### Konfigurasikan pesawat keamanan
<a name="configure-the-security-plane"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Tetapkan persyaratan untuk platform SaaS multi-penyewa Anda. | Tetapkan persyaratan terperinci untuk hal-hal berikut:+ Penyewa<br />+ Pengguna<br />+ Peran<br />+ Produk SaaS<br />+ Langganan<br />+ Pertukaran profil | Arsitek cloud, administrator sistem AWS | 
| Siapkan layanan Amazon Cognito. | Ikuti petunjuk di [Memulai Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-getting-started.html) di Panduan Pengembang *Amazon Cognito*. | Arsitek awan | 
| Konfigurasikan kebijakan IAM yang diperlukan. | Buat kebijakan IAM yang diperlukan untuk kasus penggunaan Anda. Kemudian, petakan kebijakan ke peran IAM di Amazon Cognito.<br />Untuk informasi selengkapnya, lihat [Mengelola akses menggunakan kebijakan](https://docs.aws.amazon.com/cognito/latest/developerguide/security-iam.html#security_iam_access-manage) dan [kontrol akses berbasis peran di Panduan](https://docs.aws.amazon.com/cognito/latest/developerguide/role-based-access-control.html) Pengembang *Amazon Cognito*. | Administrator cloud, arsitek Cloud, keamanan AWS IAM | 
| Konfigurasikan izin API yang diperlukan.  | Siapkan izin akses API Gateway dengan menggunakan peran dan kebijakan IAM, serta otorisasi Lambda.<br />Untuk petunjuknya, lihat bagian berikut dari *Panduan Pengembang Amazon API Gateway*:+ [Kontrol akses ke API dengan izin IAM](https://docs.aws.amazon.com/apigateway/latest/developerguide/permissions.html)<br />+ [Gunakan otorisasi API Gateway Lambda](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html) | Administrator cloud, arsitek Cloud | 

### Konfigurasikan bidang data
<a name="configure-the-data-plane"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat katalog data yang diperlukan. | 1. Buat tabel DynamoDB untuk menyimpan data untuk katalog pengguna. Pastikan Anda menyertakan atribut dan peran pengguna. Selain itu, pastikan Anda melakukan pemodelan data pada tabel katalog untuk mempertahankan atribut yang diperlukan dan opsional untuk setiap pengguna dan peran.<br />2. Buat tabel DynamoDB untuk menyimpan data untuk katalog produk. Pastikan Anda memodelkan kasus penggunaan khusus untuk produk SaaS Anda.<br />3. Buat tabel DynamoDB untuk menyimpan data untuk katalog penyewa. Pastikan Anda menyiapkan model berlangganan untuk penyewa, produk, dan lisensi untuk langganan dan tag multi-SaaS.Untuk informasi selengkapnya, lihat [Menyiapkan DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/SettingUp.html) di Panduan Pengembang Amazon *DynamoDB*. | DBA | 

### Konfigurasikan bidang kontrol
<a name="configure-the-control-plane"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat fungsi Lambda dan API Gateway APIs untuk menjalankan tugas bidang kontrol yang diperlukan. | Buat fungsi Lambda terpisah dan API Gateway APIs untuk menambahkan, menghapus, dan mengelola hal-hal berikut:+ Pengguna<br />+ Penyewa<br />+ Produk<br />Untuk informasi selengkapnya, lihat [Menggunakan AWS Lambda dengan Amazon API Gateway di Panduan Pengembang](https://docs.aws.amazon.com/lambda/latest/dg/services-apigateway.html) *AWS Lambda*. | Pengembang aplikasi | 

### Konfigurasikan bidang alur kerja
<a name="configure-the-workflow-plane"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Identifikasi tugas yang harus dijalankan oleh alur kerja AWS Step Functions. | Identifikasi dan dokumentasikan persyaratan alur kerja AWS Step Functions terperinci untuk hal-hal berikut:+ Pengguna<br />+ Penyewa<br />+ ProdukPastikan bahwa pemangku kepentingan utama menyetujui persyaratan. | Pemilik aplikasi | 
| Buat alur kerja AWS Step Functions yang diperlukan. | 1. Buat alur kerja yang diperlukan untuk pengguna, penyewa, dan produk di AWS Step Functions. Untuk informasi selengkapnya, lihat [*Panduan Pengembang AWS Step Functions*](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html).<br />2. Identifikasi mekanisme coba lagi dan penanganan kesalahan. Untuk informasi selengkapnya, lihat [Menangani kesalahan, mencoba ulang, dan menambahkan peringatan ke Mesin Status Fungsi Langkah di Blog](https://aws.amazon.com/blogs/developer/handling-errors-retries-and-adding-alerting-to-step-function-state-machine-executions/) AWS.<br />3. Menerapkan langkah-langkah alur kerja dengan menggunakan fungsi Lambda. Untuk petunjuknya, lihat [Membuat mesin status Step Functions yang menggunakan Lambda](https://docs.aws.amazon.com/step-functions/latest/dg/tutorial-creating-lambda-state-machine.html) di Panduan *Pengembang AWS Step Functions*.<br />4. Integrasikan layanan eksternal apa pun dengan AWS Step Functions sesuai kebutuhan.<br />5. Pertahankan status setiap alur kerja dalam tabel DynamoDB dan komunikasikan setiap status alur kerja menggunakan Amazon SNS. | Pengembang aplikasi, Membangun prospek | 

### Konfigurasikan bidang komunikasi
<a name="configure-the-communication-plane"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat topik Amazon SNS. | Buat topik Amazon SNS untuk menerima pemberitahuan tentang hal berikut:+ Status alur kerja<br />+ Kesalahan<br />+ Percobaan ulang<br />Untuk informasi selengkapnya, lihat [Membuat topik SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html) di Panduan Pengembang *Amazon SNS*. | Pemilik aplikasi, arsitek Cloud | 
| Berlangganan titik akhir untuk setiap topik Amazon SNS. | Untuk menerima pesan yang dipublikasikan ke topik Amazon SNS, Anda harus berlangganan titik akhir untuk setiap topik.<br />Untuk informasi selengkapnya, lihat [Berlangganan topik Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-create-subscribe-endpoint-to-topic.html) di Panduan Pengembang *Amazon SNS*. | Pengembang aplikasi, arsitek Cloud | 

### Konfigurasikan bidang logging dan monitoring
<a name="configure-the-logging-and-monitoring-plane"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Aktifkan logging untuk setiap komponen solusi penyewa umum. | Aktifkan logging di tingkat komponen untuk setiap sumber daya dalam solusi penyewa umum yang Anda buat.<br />Untuk petunjuk, lihat yang berikut ini:+ [Bagaimana cara mengaktifkan CloudWatch Log untuk memecahkan masalah API Gateway REST API atau WebSocket API saya?](https://aws.amazon.com/premiumsupport/knowledge-center/api-gateway-cloudwatch-logs/) (Pusat Pengetahuan AWS)<br />+ [Logging menggunakan CloudWatch Log](https://docs.aws.amazon.com/step-functions/latest/dg/cw-logs.html) (*AWS Step Functions Developer Guide*)<br />+ [Pencatatan fungsi AWS Lambda dengan Python (Panduan Pengembang AWS](https://docs.aws.amazon.com/lambda/latest/dg/python-logging.html) *Lambda)*<br />+ [Pencatatan dan pemantauan di Amazon Cognito (Panduan Pengembang](https://docs.aws.amazon.com/cognito/latest/developerguide/monitoring.html) *Amazon Cognito*)<br />+ [Pemantauan dengan Amazon CloudWatch](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/monitoring-cloudwatch.html) (Panduan Pengembang *Amazon DynamoDB*)Anda dapat mengkonsolidasikan log untuk setiap sumber daya ke akun logging terpusat dengan menggunakan kebijakan IAM. Untuk informasi selengkapnya, lihat [Pencatatan terpusat dan pagar keamanan beberapa akun](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/centralized-logging-and-multiple-account-security-guardrails.html). | Pengembang aplikasi, administrator sistem AWS, administrator Cloud | 

### Menyediakan dan menyebarkan solusi penyewa umum
<a name="provision-and-deploy-the-common-tenant-solution"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat CloudFormation template. | Otomatiskan penerapan dan pemeliharaan solusi penyewa umum penuh dan semua komponennya dengan menggunakan templat. CloudFormation <br />Untuk informasi selengkapnya, lihat [*Panduan CloudFormation Pengguna AWS*](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html). | Pengembang aplikasi, DevOps insinyur, CloudFormation pengembang | 

## Sumber daya terkait
<a name="manage-tenants-across-multiple-saas-products-on-a-single-control-plane-resources"></a>
+ [Kontrol akses ke REST API menggunakan kumpulan pengguna Amazon Cognito sebagai otorisasi](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-integrate-with-cognito.html) (Panduan Pengembang *Amazon API Gateway*)
+ [Gunakan otorisasi API Gateway Lambda](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html) (Panduan Pengembang *Amazon API Gateway*)
+ [Kumpulan pengguna Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html) (Panduan Pengembang *Amazon Cognito*)
+ [ CloudWatch Konsol lintas wilayah lintas akun](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Cross-Account-Cross-Region.html) (* CloudWatch Panduan Pengguna Amazon*)