Bagikan melalui


Layanan mikro arsitektur

Tip

Konten ini adalah kutipan dari eBook, .NET Microservices Architecture for Containerized .NET Applications, tersedia di .NET Docs atau sebagai PDF yang dapat diunduh gratis dan dapat dibaca secara offline.

.NET Microservices Architecture for Containerized .NET Applications eBook cover thumbnail.

Seperti namanya, arsitektur layanan mikro adalah pendekatan untuk membangun aplikasi server sebagai serangkaian layanan kecil. Itu berarti arsitektur layanan mikro terutama berorientasi pada ujung-belakang, meskipun pendekatannya juga digunakan untuk ujung depan. Setiap layanan berjalan dalam prosesnya sendiri dan berkomunikasi dengan proses lain menggunakan protokol seperti HTTP/HTTPS, WebSocket, atau AMQP. Setiap layanan mikro mengimplementasikan domain ujung-ke-ujung atau kemampuan bisnis tertentu dalam batas konteks tertentu, dan masing-masing harus dikembangkan secara mandiri dan dapat digunakan secara independen. Akhirnya, setiap layanan mikro harus memiliki model data domain dan logika domain yang terkait dengannya (kedaulatan dan manajemen data terdesentralisasi) dan dapat didasarkan pada teknologi penyimpanan data yang berbeda (SQL, NoSQL) serta bahasa pemrograman yang berbeda.

Sebesar apa seharusnya ukuran layanan mikro? Saat mengembangkan layanan mikro, ukuran seharusnya tidak menjadi poin yang penting. Sebaliknya, poin pentingnya adalah untuk membuat layanan yang digabungkan secara longgar sehingga Anda memiliki otonomi pengembangan, penyebaran, dan penskalaan untuk setiap layanan. Tentu saja, ketika mengidentifikasi dan merancang layanan mikro, Anda harus mencoba membuatnya sekecil mungkin selama Anda tidak memiliki terlalu banyak dependensi langsung dengan layanan mikro lainnya. Yang lebih penting daripada ukuran layanan mikro adalah kohesi internal yang harus dimilikinya dan kemandiriannya dari layanan lain.

Kenapa harus arsitektur layanan mikro? Singkatnya, ini memberikan kelincahan jangka panjang. Layanan mikro memungkinkan pemeliharaan yang lebih baik dalam sistem yang kompleks, besar, dan sangat dapat diskalakan dengan memungkinkan Anda membuat aplikasi berdasarkan banyak layanan yang dapat disebarkan secara independen yang masing-masing memiliki siklus hidup granular dan otonom.

Sebagai manfaat tambahan, layanan mikro dapat menskalakan secara independen. Alih-alih memiliki satu aplikasi monolitik yang harus Anda skalakan sebagai unit, Anda dapat menskalakan layanan mikro tertentu. Dengan begitu, Anda hanya dapat menskalakan area fungsi yang membutuhkan lebih banyak daya pemrosesan atau bandwidth jaringan untuk mendukung permintaan, daripada meluaskan skala area lain dari aplikasi yang tidak perlu diskalakan. Artinya biaya yang Anda keluarkan lebih hemat karena perangkat keras yang dibutuhkan lebih sedikit.

Diagram of the differences between the two deployment methods.

Gambar 4-6. Penyebaran monolitik versus pendekatan layanan mikro

Seperti yang ditunjukkan Gambar 4-6, dalam pendekatan monolitik tradisional, aplikasi menskalakan dengan mengkloning seluruh aplikasi di beberapa server/VM (mesin virtual). Dalam pendekatan layanan mikro, fungsionalitas dipisahkan dalam layanan yang lebih kecil, sehingga setiap layanan dapat menskalakan secara independen. Pendekatan layanan mikro memungkinkan perubahan yang gesit dan iterasi yang cepat dari setiap layanan mikro, karena Anda dapat mengubah aplikasi spesifik, aplikasi kompleks dengan area kecil, aplikasi besar, dan aplikasi yang dapat diskalakan.

Merancang aplikasi berbasis layanan mikro terperinci memungkinkan integrasi berkelanjutan dan praktik pengiriman berkelanjutan. Ini juga mempercepat pengiriman fungsi baru ke dalam aplikasi. Komposisi aplikasi yang tersaring juga memungkinkan Anda untuk menjalankan dan menguji layanan mikro dalam isolasi, serta untuk mengembangkannya secara otonom sambil mempertahankan kontrak yang jelas di antar-aplikasi. Selama Anda tidak mengubah antarmuka atau kontrak, Anda dapat mengubah implementasi internal layanan mikro apa pun atau menambahkan fungsionalitas baru tanpa merusak layanan mikro lainnya.

Berikut ini adalah aspek penting untuk meningkatkan kemungkinan keberhasilan saat naik ke produksi dengan sistem berbasis layanan mikro:

  • Pemantauan serta pemeriksaan kesehatan layanan dan infrastruktur.

  • Infrastruktur scalable untuk layanan (yaitu cloud dan orkestrator).

  • Desain dan implementasi keamanan di beberapa tingkat: autentikasi, otorisasi, manajemen rahasia, komunikasi yang aman, dll.

  • Pengiriman aplikasi yang cepat, biasanya dengan tim berbeda yang berfokus pada layanan mikro yang berbeda.

  • Praktik dan infrastruktur Azure DevOps dan CI/CD.

Dari semua ini, hanya tiga pertama yang tercakup atau diperkenalkan dalam panduan ini. Dua poin terakhir, yang terkait dengan siklus hidup aplikasi, tercakup dalam e-book tambahan Siklus Hidup Aplikasi Docker Dalam Kontainer dengan Platform dan Alat Microsoft.

Sumber daya tambahan