Bagikan melalui


Arsitektur layanan mikro

Petunjuk / Saran

Konten ini adalah kutipan dari eBook, Arsitektur Layanan Mikro .NET untuk Aplikasi .NET Kontainer, tersedia di .NET Docs atau sebagai PDF gratis yang dapat diunduh yang dapat dibaca secara offline.

Arsitektur Layanan Mikro .NET untuk Aplikasi .NET Dalam Kontainer: gambar kecil sampul eBook.

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

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

Mengapa 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 meluaskan skala layanan mikro tertentu. Dengan begitu, Anda dapat menskalakan hanya area fungsi yang membutuhkan lebih banyak daya pemrosesan atau bandwidth jaringan untuk mendukung permintaan, daripada menskalakan area lain dari aplikasi yang tidak perlu diskalakan. Artinya biaya yang Anda keluarkan lebih hemat karena perangkat keras yang dibutuhkan lebih sedikit.

Diagram perbedaan antara dua metode penyebaran.

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. Dalam pendekatan layanan mikro, fungsionalitas dipisahkan dalam layanan yang lebih kecil, sehingga setiap layanan dapat diskalakan secara independen. Pendekatan layanan mikro memungkinkan perubahan yang gesit dan iterasi yang cepat dari setiap layanan mikro, karena Anda dapat mengubah area spesifik, kecil aplikasi yang kompleks, besar, dan 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 halus juga memungkinkan Anda untuk menjalankan dan menguji layanan mikro dalam isolasi, dan untuk mengembangkannya secara otonom sambil mempertahankan kontrak yang jelas di antara mereka. 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 memungkinkan keberhasilan dalam masuk ke produksi dengan sistem berbasis layanan mikro:

  • Pemantauan dan pemeriksaan kesehatan layanan dan infrastruktur.

  • Infrastruktur yang dapat diskalakan 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 yang berbeda yang berfokus pada layanan mikro yang berbeda.

  • Praktik dan infrastruktur DevOps dan CI/CD.

Dari jumlah tersebut, 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 Terkontainer dengan Platform dan Alat Microsoft.

Sumber daya tambahan