

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

# Arsitektur microservices sederhana di AWS
<a name="simple-microservices-architecture-on-aws"></a>

 Aplikasi monolitik khas terdiri dari lapisan yang berbeda: lapisan presentasi, lapisan aplikasi, dan lapisan data. Arsitektur layanan mikro, di sisi lain, memisahkan fungsionalitas menjadi *vertikal* kohesif menurut domain tertentu, bukan lapisan teknologi. Gambar 1 mengilustrasikan arsitektur referensi untuk aplikasi layanan mikro yang khas pada. AWS

![\[Diagram yang menunjukkan aplikasi layanan mikro khas pada AWS\]](http://docs.aws.amazon.com/id_id/whitepapers/latest/microservices-on-aws/images/typical-microservices-application.png)


# Antarmuka pengguna
<a name="user-interface"></a>

 Aplikasi web modern sering menggunakan JavaScript kerangka kerja untuk mengembangkan aplikasi satu halaman yang berkomunikasi dengan backend. APIs Ini APIs biasanya dibangun menggunakan Representational State Transfer (REST) atau RESTful APIs, atau APIs GraphQL. [Konten web statis dapat disajikan menggunakan Amazon Simple Storage Service ([Amazon S3](https://aws.amazon.com/s3/)) dan Amazon. CloudFront](https://aws.amazon.com/cloudfront/) 

# Layanan mikro
<a name="microservices"></a>

 APIs dianggap sebagai *pintu depan* layanan mikro, karena merupakan titik masuk untuk logika aplikasi. Biasanya, API layanan RESTful web atau APIs GraphQL digunakan. Ini APIs mengelola dan memproses panggilan klien, menangani fungsi seperti manajemen lalu lintas, pemfilteran permintaan, perutean, caching, otentikasi, dan otorisasi. 

## Implementasi Microservices
<a name="microservices-implementations"></a>

 AWS menawarkan blok bangunan untuk mengembangkan layanan mikro, termasuk Amazon ECS dan Amazon EKS sebagai pilihan untuk mesin orkestrasi kontainer dan AWS Fargate dan EC2 sebagai opsi hosting. AWS Lambda adalah cara lain tanpa server untuk membangun layanan mikro. AWS Pilihan antara opsi hosting ini tergantung pada kebutuhan pelanggan untuk mengelola infrastruktur yang mendasarinya. 

 AWS Lambda memungkinkan Anda untuk mengunggah kode Anda, secara otomatis menskalakan dan mengelola pelaksanaannya dengan ketersediaan tinggi. Ini menghilangkan kebutuhan akan manajemen infrastruktur, sehingga Anda dapat bergerak cepat dan fokus pada logika bisnis Anda. Lambda mendukung [beberapa bahasa pemrograman](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html) dan dapat dipicu oleh AWS layanan lain atau dipanggil langsung dari web atau aplikasi seluler. 

 Aplikasi berbasis kontainer telah mendapatkan popularitas karena portabilitas, produktivitas, dan efisiensi.AWS menawarkan beberapa layanan untuk membangun, menyebarkan, dan mengelola kontainer. 
+  [App2Container](https://aws.amazon.com/app2container/), alat baris perintah untuk memigrasi dan memodernisasi aplikasi web Java dan .NET ke dalam format kontainer. AWS A2C menganalisis dan membuat inventaris aplikasi yang berjalan di bare metal, mesin virtual, instans Amazon Elastic Compute Cloud (EC2), atau di cloud. 
+  Amazon Elastic Container Service ([Amazon ECS](https://aws.amazon.com/ecs/)) dan Amazon Elastic Kubernetes [Service (](https://aws.amazon.com/eks/)Amazon EKS) mengelola infrastruktur container Anda, sehingga memudahkan peluncuran dan pemeliharaan aplikasi kontainer.  
  +  [Amazon EKS adalah layanan Kubernetes terkelola untuk menjalankan Kubernetes di AWS cloud dan pusat data lokal (Amazon EKS Anywhere).](https://aws.amazon.com/eks/eks-anywhere/) Ini memperluas layanan cloud ke lingkungan lokal untuk latensi rendah, pemrosesan data lokal, biaya transfer data tinggi, atau persyaratan residensi data (lihat whitepaper di "[Menjalankan Beban Kerja Kontainer Hibrid Dengan Amazon](https://d1.awsstatic.com/kubernetes-pmm/eks-a/getting-started/AWS_Whitepaper_Running_Hybrid_Container_Workloads_with_Amazon_EKS_Anywhere.pdf) EKS Anywhere “). Anda dapat menggunakan semua plug-in dan tooling yang ada dari komunitas Kubernetes dengan EKS. 
  +  Amazon Elastic Container Service (Amazon ECS) adalah layanan orkestrasi kontainer yang dikelola sepenuhnya yang menyederhanakan penerapan, pengelolaan, dan penskalaan aplikasi kontainer Anda. Pelanggan memilih ECS untuk kesederhanaan dan integrasi mendalam dengan AWS layanan. 

 Untuk bacaan lebih lanjut, lihat blog [Amazon ECS vs Amazon EKS: memahami layanan AWS kontainer](https://aws.amazon.com/blogs/containers/amazon-ecs-vs-amazon-eks-making-sense-of-aws-container-services/). 
+  [AWS App Runner](https://aws.amazon.com/apprunner/)adalah layanan aplikasi kontainer yang dikelola sepenuhnya yang memungkinkan Anda membangun, menyebarkan, dan menjalankan aplikasi web dan layanan API kontainer tanpa infrastruktur atau pengalaman kontainer sebelumnya. 
+  [AWS Fargate](https://aws.amazon.com/fargate/), mesin komputasi tanpa server, bekerja dengan Amazon ECS dan Amazon EKS untuk secara otomatis mengelola sumber daya komputasi untuk aplikasi kontainer. 
+  [Amazon ECR](https://aws.amazon.com/ecr/) adalah registri kontainer yang dikelola sepenuhnya yang menawarkan hosting berkinerja tinggi, sehingga Anda dapat menyebarkan gambar dan artefak aplikasi dengan andal di mana saja. 

# Integrasi berkelanjutan dan penyebaran berkelanjutan (CI/CD)
<a name="continuous-integration-and-continuous-deployment-cicd"></a>

 Integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD) adalah bagian penting dari DevOps inisiatif untuk perubahan perangkat lunak yang cepat. AWS menawarkan layanan untuk diterapkan CI/CD untuk layanan mikro, tetapi diskusi terperinci berada di luar cakupan dokumen ini. Untuk informasi selengkapnya, lihat [Mempraktikkan Integrasi Berkelanjutan dan Pengiriman Berkelanjutan di AWS](https://docs.aws.amazon.com/whitepapers/latest/practicing-continuous-integration-continuous-delivery/welcome.html) whitepaper.

# Jaringan pribadi
<a name="private-networking"></a>

AWS PrivateLink adalah teknologi yang meningkatkan keamanan layanan mikro dengan memungkinkan koneksi pribadi antara Virtual Private Cloud (VPC) dan layanan yang didukung. AWS Ini membantu mengisolasi dan mengamankan lalu lintas layanan mikro, memastikannya tidak pernah melintasi internet publik. Ini sangat berguna untuk mematuhi peraturan seperti PCI atau HIPAA.

# Penyimpanan data
<a name="data-store"></a>

 Penyimpanan data digunakan untuk mempertahankan data yang dibutuhkan oleh layanan mikro. Toko populer untuk data sesi adalah cache dalam memori seperti Memcached atau Redis. AWS menawarkan kedua teknologi sebagai bagian dari ElastiCache layanan [Amazon](https://aws.amazon.com/elasticache/) yang dikelola. 

 Menempatkan cache antara server aplikasi dan database adalah mekanisme umum untuk mengurangi beban baca pada database, yang, pada gilirannya, memungkinkan sumber daya digunakan untuk mendukung lebih banyak penulisan. Cache juga dapat meningkatkan latensi. 

 Database relasional masih sangat populer untuk menyimpan data terstruktur dan objek bisnis. AWS [https://aws.amazon.com/rds/aurora/](https://aws.amazon.com/rds/aurora/) 

 Database relasional, bagaimanapun, tidak dirancang untuk skala tanpa akhir, yang dapat mempersulit dan intensif waktu untuk menerapkan teknik untuk mendukung sejumlah besar pertanyaan. 

 Database NoSQL telah dirancang untuk mendukung skalabilitas, kinerja, dan ketersediaan daripada konsistensi database relasional. Salah satu elemen penting dari database NoSQL adalah bahwa mereka biasanya tidak menerapkan skema yang ketat. Data didistribusikan melalui partisi yang dapat diskalakan secara horizontal dan diambil menggunakan kunci partisi. 

 Karena layanan mikro individu dirancang untuk melakukan satu hal dengan baik, mereka biasanya memiliki model data yang disederhanakan yang mungkin cocok untuk ketekunan NoSQL. Penting untuk dipahami bahwa database NoSQL memiliki pola akses yang berbeda dari database relasional. Misalnya, tidak mungkin untuk bergabung dengan tabel. Jika ini perlu, logika harus diimplementasikan dalam aplikasi. Anda dapat menggunakan [Amazon DynamoDB](https://aws.amazon.com/dynamodb/) untuk membuat tabel database yang dapat menyimpan dan mengambil sejumlah data dan melayani setiap tingkat lalu lintas permintaan. DynamoDB memberikan kinerja milidetik satu digit, namun, ada kasus penggunaan tertentu yang memerlukan waktu respons dalam mikrodetik. [DynamoDB](https://aws.amazon.com/dynamodb/dax/) Accelerator (DAX) menyediakan kemampuan caching untuk mengakses data. 

 DynamoDB juga menawarkan fitur penskalaan otomatis untuk menyesuaikan kapasitas throughput secara dinamis sebagai respons terhadap lalu lintas aktual. Namun, ada kasus di mana perencanaan kapasitas sulit atau tidak mungkin karena lonjakan aktivitas besar dengan durasi pendek dalam aplikasi Anda. Untuk situasi seperti itu, DynamoDB menyediakan opsi sesuai permintaan, yang menawarkan harga sederhana. pay-per-request DynamoDB on-demand mampu melayani ribuan permintaan per detik secara instan tanpa perencanaan kapasitas. 

 Untuk informasi selengkapnya, lihat [Manajemen data terdistribusi](distributed-data-management.md) dan [Cara Memilih Database](https://aws.amazon.com/startups/learn/maximizing-performance-with-aws-databases). 

# Menyederhanakan operasi
<a name="simplyfing-operations"></a>

 Untuk lebih menyederhanakan upaya operasional yang diperlukan untuk menjalankan, memelihara, dan memantau layanan mikro, kita dapat menggunakan arsitektur tanpa server sepenuhnya. 

## Menyebarkan aplikasi berbasis Lambda
<a name="deploying-lambda-based-applications"></a>

 Anda dapat menerapkan kode Lambda dengan mengunggah `zip` arsip file atau dengan membuat dan mengunggah gambar kontainer melalui UI konsol menggunakan URI gambar Amazon ECR yang valid. Namun, ketika fungsi Lambda menjadi kompleks, artinya memiliki lapisan, dependensi, dan izin, mengunggah melalui UI dapat menjadi berat untuk perubahan kode. 

 Menggunakan AWS CloudFormation dan AWS Serverless Application Model ([AWS SAM](https://github.com/awslabs/serverless-application-model)), AWS Cloud Development Kit (AWS CDK), atau Terraform merampingkan proses mendefinisikan aplikasi tanpa server. AWS SAM, didukung secara native oleh CloudFormation, menawarkan sintaks yang disederhanakan untuk menentukan sumber daya tanpa server.AWS Lambda Lapisan membantu mengelola pustaka bersama di beberapa fungsi Lambda, meminimalkan jejak fungsi, memusatkan pustaka sadar penyewa, dan meningkatkan pengalaman pengembang. Lambda SnapStart untuk Java meningkatkan kinerja startup untuk aplikasi yang sensitif terhadap latensi. 

 Untuk menerapkan, tentukan kebijakan sumber daya dan izin dalam CloudFormation templat, artefak penerapan paket, dan terapkan templat. SAM Local, sebuah AWS CLI alat, memungkinkan pengembangan lokal, pengujian, dan analisis aplikasi tanpa server sebelum mengunggah ke Lambda. 

 Integrasi dengan alat seperti AWS Cloud9 IDE, AWS CodeBuild, AWS CodeDeploy, dan AWS CodePipeline merampingkan penulisan, pengujian, debugging, dan penerapan aplikasi berbasis SAM. 

 Diagram berikut menunjukkan penyebaran AWS Serverless Application Model sumber daya menggunakan CloudFormation dan alat AWS CI/CD. 

![\[Diagram yang menunjukkan AWS Serverless Application Model (AWS SAM)\]](http://docs.aws.amazon.com/id_id/whitepapers/latest/microservices-on-aws/images/aws-sam.png)


## Mengabstraksikan kompleksitas multi-tenancy
<a name="abstracting-multi-tenancy-complexities"></a>

 Dalam lingkungan multi-penyewa seperti platform SaaS, sangat penting untuk merampingkan seluk-beluk yang terkait dengan multi-tenancy, membebaskan pengembang untuk berkonsentrasi pada pengembangan fitur dan fungsionalitas. Ini dapat dicapai dengan menggunakan alat seperti [AWS Lambda Layers](https://docs.aws.amazon.com/lambda/latest/dg/chapter-layers.html), yang menawarkan pustaka bersama untuk mengatasi masalah lintas sektor. Alasan di balik pendekatan ini adalah bahwa perpustakaan dan alat bersama, bila digunakan dengan benar, mengelola konteks penyewa secara efisien.  

 Namun, mereka tidak boleh meluas ke enkapsulasi logika bisnis karena kompleksitas dan risiko yang mungkin mereka perkenalkan. Masalah mendasar dengan pustaka bersama adalah meningkatnya kompleksitas seputar pembaruan, membuatnya lebih menantang untuk dikelola dibandingkan dengan duplikasi kode standar. Oleh karena itu, penting untuk mencapai keseimbangan antara penggunaan perpustakaan bersama dan duplikasi dalam pencarian abstraksi yang paling efektif. 

## Manajemen API
<a name="api-management"></a>

 Mengelola APIs dapat memakan waktu, terutama ketika mempertimbangkan beberapa versi, tahapan siklus pengembangan, otorisasi, dan fitur lain seperti throttling dan caching. Selain [API Gateway](https://aws.amazon.com/api-gateway/), beberapa pelanggan juga menggunakan ALB (Application Load Balancer) atau NLB (Network Load Balancer) untuk manajemen API. Amazon API Gateway membantu mengurangi kompleksitas operasional pembuatan dan pemeliharaan RESTful APIs. Ini memungkinkan Anda untuk membuat APIs secara terprogram, berfungsi sebagai “pintu depan” untuk mengakses data, logika bisnis, atau fungsionalitas dari layanan backend Anda, Otorisasi dan kontrol akses, pembatasan tarif, caching, pemantauan, dan manajemen lalu lintas dan berjalan tanpa mengelola server. APIs 

 Gambar 3 menggambarkan bagaimana API Gateway menangani panggilan API dan berinteraksi dengan komponen lain. Permintaan dari perangkat seluler, situs web, atau layanan backend lainnya dialihkan ke CloudFront Point of Presence (PoP) terdekat untuk mengurangi latensi dan memberikan pengalaman pengguna yang optimal. 

![\[Diagram yang menunjukkan alur panggilan API Gateway\]](http://docs.aws.amazon.com/id_id/whitepapers/latest/microservices-on-aws/images/api-gateway-call-flow.png)
