Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Contoh infrastruktur di AWS
Bagian ini memberikan contoh untuk merancang infrastruktur untuk aplikasi Anda AWS yang dapat Anda gunakan untuk mengimplementasikan arsitektur heksagonal. Kami menyarankan Anda memulai dengan arsitektur sederhana untuk membangun produk minimum yang layak (MVP). Sebagian besar layanan mikro memerlukan satu titik masuk untuk menangani permintaan klien, lapisan komputasi untuk menjalankan kode, dan lapisan persistensi untuk menyimpan data. AWS Layanan berikut adalah kandidat yang bagus untuk digunakan sebagai klien, adaptor primer, dan adaptor sekunder dalam arsitektur heksagonal:
-
Klien: Amazon API Gateway, Amazon Simple Queue Service (Amazon SQS), Elastic Load Balancing, Amazon EventBridge
-
Adaptor utama: AWS Lambda, Amazon Elastic Container Service (Amazon ECS), Amazon Elastic Kubernetes Service (Amazon EKS), Amazon Elastic Compute Cloud (Amazon) EC2
-
Adaptor sekunder: Amazon DynamoDB, Amazon Relational Database Service (Amazon RDS), Amazon Aurora, API Gateway, Amazon SQS, Elastic Load EventBridge Balancing, Layanan Pemberitahuan Sederhana Amazon (Amazon SNS)
Bagian berikut membahas layanan ini dalam konteks arsitektur heksagonal secara lebih rinci.
Mulai sederhana
Kami menyarankan Anda memulai dengan sederhana ketika Anda merancang aplikasi dengan menggunakan arsitektur heksagonal. Dalam contoh ini, API Gateway digunakan sebagai klien (REST API), Lambda digunakan sebagai adaptor utama (komputasi), dan DynamoDB digunakan sebagai adaptor sekunder (persistensi). Klien gateway memanggil titik masuk, yang, dalam hal ini, adalah penangan Lambda.

Arsitektur ini sepenuhnya tanpa server dan memberi arsitek titik awal yang baik. Kami menyarankan Anda menggunakan pola perintah di domain karena membuat kode lebih mudah dipelihara, dan menyesuaikan dengan bisnis baru dan persyaratan non-fungsional. Arsitektur ini bisa cukup untuk membangun layanan mikro sederhana dengan beberapa operasi.
Terapkan pola CQRS
Kami menyarankan Anda beralih ke pola CQRS jika jumlah operasi pada domain akan berskala. Anda dapat menerapkan pola CQRS sebagai arsitektur tanpa server sepenuhnya AWS dengan menggunakan contoh berikut.

Contoh ini menggunakan dua penangan Lambda, satu untuk kueri dan satu untuk perintah. Kueri dijalankan secara sinkron dengan menggunakan gateway API sebagai klien. Perintah dijalankan secara asinkron dengan menggunakan Amazon SQS sebagai klien.
Arsitektur ini mencakup beberapa klien (API Gateway dan Amazon SQS) dan beberapa adaptor utama (Lambda), yang dipanggil oleh titik masuk yang sesuai (penangan Lambda). Semua komponen termasuk dalam konteks terbatas yang sama, sehingga mereka berada dalam domain yang sama.
Mengembangkan arsitektur dengan menambahkan container, database relasional, dan API eksternal
Wadah adalah pilihan yang baik untuk tugas yang berjalan lama. Anda mungkin juga ingin menggunakan database relasional jika Anda memiliki skema data yang telah ditentukan dan ingin mendapatkan keuntungan dari kekuatan bahasa SQL. Selain itu, domain harus berkomunikasi dengan eksternal APIs. Anda dapat mengembangkan contoh arsitektur untuk mendukung persyaratan ini seperti yang ditunjukkan pada diagram berikut.

Contoh ini menggunakan Amazon ECS sebagai adaptor utama untuk meluncurkan tugas yang berjalan lama di domain. Amazon EventBridge (klien) memulai tugas Amazon ECS (titik masuk) ketika peristiwa tertentu terjadi. Arsitekturnya mencakup Amazon RDS sebagai adaptor sekunder lain untuk menyimpan data relasional. Ini juga menambahkan gateway API lain sebagai adaptor sekunder untuk menjalankan panggilan API eksternal. Akibatnya, arsitektur menggunakan beberapa adaptor primer dan sekunder yang mengandalkan lapisan komputasi dasar yang berbeda dalam satu domain bisnis.
Domain selalu digabungkan secara longgar dengan semua adaptor primer dan sekunder melalui abstraksi yang disebut port. Domain mendefinisikan apa yang dibutuhkan dari dunia luar dengan menggunakan port. Karena itu adalah tanggung jawab adaptor untuk mengimplementasikan port, beralih dari satu adaptor ke adaptor lainnya tidak mempengaruhi domain. Misalnya, Anda dapat beralih dari Amazon DynamoDB ke Amazon RDS dengan menulis adaptor baru, tanpa memengaruhi domain.
Tambahkan lebih banyak domain (perkecil)
Arsitektur heksagonal selaras dengan prinsip-prinsip arsitektur microservices. Contoh arsitektur yang ditampilkan sejauh ini berisi satu domain (atau konteks terbatas). Aplikasi biasanya mencakup beberapa domain, yang perlu berkomunikasi melalui adaptor primer dan sekunder. Setiap domain mewakili layanan mikro dan secara longgar digabungkan dengan domain lain.

Dalam arsitektur ini, setiap domain menggunakan serangkaian lingkungan komputasi yang berbeda. (Setiap domain mungkin juga memiliki beberapa lingkungan komputasi, seperti pada contoh sebelumnya.) Setiap domain mendefinisikan antarmuka yang diperlukan untuk berkomunikasi dengan domain lain melalui port. Port diimplementasikan dengan menggunakan adaptor primer dan sekunder. Dengan cara ini, domain tidak terpengaruh jika ada perubahan pada adaptor. Selain itu, domain dipisahkan satu sama lain.
Dalam contoh arsitektur yang ditunjukkan pada diagram sebelumnya, Lambda, Amazon, EC2 Amazon ECS, dan AWS Fargate digunakan sebagai adaptor utama. API Gateway, Elastic Load Balancing EventBridge, dan Amazon SQS digunakan sebagai adaptor sekunder.