- Artikel tentang biaya dan manfaat beralih dari backend tunggal ke arsitektur microservices
- Seiring bertambahnya jumlah tim yang berkontribusi pada satu codebase, komponen menjadi semakin saling terikat, produktivitas menurun, dan kompleksitas meningkat
- Salah satu solusi untuk mengurangi masalah ini adalah memecah backend tunggal menjadi sekumpulan layanan yang dapat di-deploy secara independen dan berkomunikasi melalui API, yaitu microservices
- Istilah 'micro' menyesatkan karena layanan tidak harus 'mikro'. Istilah yang lebih tepat adalah service-oriented architecture
- Dengan memecah backend menjadi sekumpulan layanan dengan batas yang terdefinisi dengan baik, satu tim kecil sudah cukup untuk mengembangkan dan mengoperasikan tiap layanan, sehingga kecepatan pengembangan aplikasi meningkat
- Tiap microservice dapat diskalakan secara independen dan mengadopsi tech stack yang berbeda sesuai kebutuhannya sendiri, sehingga memudahkan eksperimen dan evaluasi teknologi baru
- Namun, arsitektur microservices menambah lebih banyak bagian bergerak pada keseluruhan sistem, meningkatkan kompleksitas, dan membutuhkan tingkat standarisasi tertentu
- Jika tiap microservice menggunakan bahasa, library, dan data store yang berbeda, hal itu dapat berubah menjadi kekacauan yang menyulitkan pemeliharaan aplikasi dan membuat perpindahan developer antar tim menjadi sulit
- Untuk mendukung layanan independen dalam skala besar, harus mudah untuk membuat server, data store, dan sumber daya lainnya, yang memerlukan otomatisasi yang signifikan
- Pemanggilan jarak jauh mahal dan memperkenalkan cara-cara baru sistem dapat gagal, sehingga diperlukan mekanisme pertahanan seperti timeout, retry, dan circuit breaker
- Continuous integration memastikan perubahan kode melalui proses build dan pengujian otomatis sebelum digabungkan ke branch utama
- Pengujian integrasi untuk semua microservice jauh lebih sulit dibanding pengujian monolith; saat layanan-layanan individual saling berinteraksi, perilaku yang sangat halus dan tak terduga dapat muncul
- Tim yang mengembangkan layanan biasanya juga bertanggung jawab atas panggilan untuk layanan tersebut, menimbulkan gesekan antara pekerjaan pengembangan dan biaya operasional
- Debugging kegagalan sistem menjadi lebih sulit dengan microservices; logging dan monitoring yang baik penting di semua level
- Saat aplikasi dipecah menjadi layanan-layanan terpisah, model data tidak lagi berada dalam satu data store tunggal, sehingga biasanya harus menerima eventual consistency
- Secara umum, yang terbaik adalah memulai dengan monolith dan hanya memecahnya ketika sulit menetapkan batas yang tepat antar layanan
- Memulai dengan pendekatan microservices-first sebaiknya hanya dilakukan jika sudah memiliki pengalaman dengannya dan telah membangun platform untuk itu, atau telah memperhitungkan waktu yang dibutuhkan untuk membangunnya
Belum ada komentar.