Pola desain layanan mikro yang paling penting untuk mempersiapkan wawancara
Cara kerja pola desain layanan mikro
Pola desain layanan mikro menjadi semakin populer karena kemampuannya untuk meningkatkan kelincahan, skalabilitas, ketahanan, dan pemeliharaan perangkat lunak. Pola desain layanan mikro adalah serangkaian prinsip dan praktik terbaik yang digunakan untuk mengembangkan dan memelihara sistem perangkat lunak yang terdiri dari layanan kecil yang dapat diterapkan secara independen. Pada artikel ini, kita akan membahas pola desain layanan mikro penting yang dapat digunakan untuk membuat layanan mikro yang tangguh dan efisien ilmu bangunan.
Gerbang API:
API Gateway adalah layanan yang bertindak sebagai ujung depan untuk layanan mikro. Ini menerima permintaan dari klien dan mengarahkan mereka ke layanan yang sesuai.
Cara kerja Pola Gateway API:
Pola API Gateway bekerja dengan mencegat permintaan dari klien dan merutekannya ke layanan yang sesuai. Saat klien membuat permintaan ke sistem, permintaan tersebut pertama kali dikirim ke API Gateway. API Gateway kemudian memeriksa apakah permintaan tersebut diotorisasi dan jika demikian, permintaan akan diteruskan ke layanan yang sesuai.
API Gateway juga dapat melakukan fungsi lain seperti pembatasan kecepatan, caching, dan autentikasi. Misalnya, dapat membatasi jumlah permintaan yang dapat dilakukan klien ke layanan dalam jangka waktu tertentu. Itu juga dapat menyimpan tanggapan dari layanan untuk mengurangi beban pada layanan yang mendasarinya.
Pemutus arus:
Pola Pemutus Sirkuit digunakan untuk mendeteksi kegagalan dan mencegah kegagalan kaskade dalam sistem terdistribusi. Ini beroperasi seperti pemutus sirkuit listrik, yang membuat trip dan memutus sirkuit saat terjadi kelebihan beban, mencegah kerusakan pada peralatan listrik. Demikian pula, pola Circuit Breaker dapat tersandung dan menghentikan arus lalu lintas ke sistem yang gagal.
Cara kerja pola Pemutus Arus:
Pola Circuit Breaker bekerja dengan memantau kesehatan komponen sistem dan mengambil tindakan saat mendeteksi kegagalan. Circuit Breaker memiliki tiga status: tertutup, terbuka, dan setengah terbuka.
- Keadaan tertutup: Dalam keadaan tertutup, Pemutus Sirkuit memungkinkan lalu lintas mengalir secara normal ke komponen sistem. Pemutus Sirkuit memantau waktu respons dan tingkat kesalahan komponen sistem.
- Keadaan terbuka: Jika Pemutus Sirkuit mendeteksi bahwa komponen sistem gagal, ia akan trip dan memasuki keadaan terbuka. Dalam keadaan terbuka, Pemutus Sirkuit menghentikan semua lalu lintas ke komponen sistem dan mengalihkan lalu lintas ke komponen cadangan atau mengembalikan pesan kesalahan ke klien.
- Kondisi setengah terbuka: Setelah waktu tertentu berlalu, Pemutus Sirkuit memasuki kondisi setengah terbuka. Dalam keadaan setengah terbuka, Pemutus Sirkuit memungkinkan lalu lintas dalam jumlah terbatas mengalir ke komponen sistem. Jika komponen sistem berhasil merespons lalu lintas, Pemutus Sirkuit kembali ke keadaan tertutup. Jika komponen sistem gagal merespons dengan sukses, Pemutus Arus akan kembali ke keadaan terbuka.
Dalam sistem tradisional, ada satu model yang menangani operasi baca dan tulis. Model ini bertanggung jawab untuk menjaga keadaan sistem, memproses perintah, dan mengembalikan data ke klien. Namun, ketika sistem tumbuh dalam kompleksitas dan ukuran, menjadi sulit untuk diskalakan dan dipelihara.
Untuk mengatasi masalah di atas, pola CQRS memisahkan operasi baca dan tulis menjadi dua model yang berbeda: model Command dan model Query. Model Command bertanggung jawab untuk menangani operasi tulis dan memperbarui status sistem. Model Query bertanggung jawab untuk menangani operasi baca dan mengembalikan data ke klien.
Bagaimana pola CQRS bekerja:
Ketika klien mengirim perintah ke sistem, itu ditangani oleh model Perintah. Model Command memproses perintah dan memperbarui status sistem. Jika perintah berhasil, ia mengembalikan pesan sukses ke klien.
Saat klien mengirimkan kueri ke sistem, kueri tersebut ditangani oleh model Kueri. Model Query mengambil data dari sistem dan mengembalikannya ke klien. Model Query dapat dioptimalkan untuk operasi baca, yang dapat meningkatkan kinerja sistem.
Pengadaan Acara
Event sourcing adalah pola yang digunakan dalam desain perangkat lunak yang melibatkan pemodelan keadaan aplikasi sebagai urutan kejadian. Alih-alih menyimpan status aplikasi saat ini, sistem menyimpan urutan kejadian.
Cara kerja sumber acara:
Pola sumber kejadian bekerja dengan menyimpan urutan kejadian yang menjelaskan perubahan status aplikasi. Setiap kejadian disimpan sebagai rekaman terpisah di penyimpanan kejadian, yang merupakan database yang dioptimalkan untuk menyimpan kejadian dalam jumlah besar.
Saat pengguna berinteraksi dengan sistem, sistem menghasilkan peristiwa yang menjelaskan tindakan pengguna. Misalnya, jika pengguna memesan, sistem akan menghasilkan peristiwa yang menjelaskan detail pesanan. Acara tersebut akan disimpan di penyimpanan acara, dan sistem akan memperbarui status aplikasi berdasarkan acara tersebut.
Ketika keadaan aplikasi perlu ditanyakan, sistem membaca semua kejadian di penyimpanan kejadian dan menerapkannya secara berurutan untuk merekonstruksi keadaan aplikasi saat ini. Proses ini dikenal sebagai acara replay.
Pola Saga
Pola desain saga adalah teknik yang digunakan dalam sistem terdistribusi untuk menjaga konsistensi di beberapa transaksi yang melibatkan banyak layanan. Ini digunakan untuk mengelola transaksi terdistribusi di beberapa layanan dengan cara yang memastikan konsistensi data.
Dalam sistem terdistribusi, biasanya satu transaksi melibatkan banyak layanan. Misalnya, dalam sistem e-niaga, satu pesanan mungkin memerlukan pembaruan pada layanan inventaris, layanan pembayaran, dan layanan pengiriman. Jika salah satu dari layanan ini gagal, ini dapat menyebabkan ketidakkonsistenan data. Pola Saga membantu memastikan bahwa transaksi berhasil diselesaikan atau dibatalkan jika terjadi kesalahan.
Pola Saga bekerja dengan memecah satu transaksi menjadi beberapa transaksi yang lebih kecil, juga dikenal sebagai "transaksi kompensasi". Transaksi kompensasi ini dijalankan dalam urutan tertentu dan dirancang untuk membatalkan efek dari transaksi sebelumnya jika terjadi kesalahan. Urutan transaksi kompensasi sangat penting untuk memastikan bahwa sistem tetap konsisten.
Kesimpulan
Meskipun pola desain layanan mikro menawarkan banyak manfaat, mereka juga memperkenalkan kompleksitas baru, seperti orkestrasi layanan, komunikasi layanan-ke-layanan, dan manajemen sistem terdistribusi. Oleh karena itu, sangat penting untuk mempertimbangkan secara hati-hati pola desain yang sesuai untuk aplikasi tertentu, dengan mempertimbangkan persyaratan bisnis, kendala teknis, dan keahlian tim pengembangan.
Secara keseluruhan dengan pola desain layanan mikro, organisasi dapat membangun sistem perangkat lunak yang lebih fleksibel, dapat diskalakan, dan tangguh.
Rujuk tautan untuk Konsep Boot Musim Semi:
Akses berbasis peran Spring Security dengan Spring Boot
Otentikasi & Otorisasi Keamanan Musim Semi dengan JWT
Tutorial AOP musim semi