Prinsip ini dalam pilar pengoptimalan performa dari Google Cloud Well-Architected Framework memberikan rekomendasi untuk membantu Anda mempromosikan desain modular. Komponen modular dan antarmuka yang jelas dapat memungkinkan penskalaan yang fleksibel, update independen, dan pemisahan komponen di masa mendatang.
Ringkasan prinsip
Pahami dependensi antara komponen aplikasi dan komponen sistem untuk mendesain sistem yang skalabel.
Desain modular memungkinkan fleksibilitas dan ketahanan, terlepas dari apakah arsitektur monolitik atau microservice awalnya di-deploy. Dengan menguraikan sistem menjadi modul independen yang jelas dan memiliki antarmuka yang jelas, Anda dapat menskalakan komponen individual untuk memenuhi permintaan tertentu.
Penskalaan yang ditargetkan dapat membantu mengoptimalkan penggunaan resource dan mengurangi biaya dengan cara berikut:
- Hanya menyediakan resource yang diperlukan untuk setiap komponen, dan mengalokasikan lebih sedikit resource ke komponen yang kurang menuntut.
- Menambahkan lebih banyak resource selama periode traffic tinggi untuk mempertahankan pengalaman pengguna.
- Menghapus resource yang kurang dimanfaatkan tanpa mengorbankan performa.
Modularitas juga meningkatkan kemampuan pemeliharaan. Unit yang lebih kecil dan mandiri lebih mudah dipahami, di-debug, dan diupdate, yang dapat mempercepat siklus pengembangan dan mengurangi risiko.
Meskipun modularitas menawarkan keuntungan yang signifikan, Anda harus mengevaluasi potensi trade-off performa. Peningkatan komunikasi antar-modul dapat menyebabkan latensi dan overhead. Berupayalah untuk menyeimbangkan modularitas dan performa. Desain yang sangat modular mungkin tidak cocok untuk semua. Jika performa sangat penting, pendekatan yang lebih terikat erat mungkin sesuai. Desain sistem adalah proses berulang, yang mana Anda terus meninjau dan menyempurnakan desain modular.
Rekomendasi
Untuk mempromosikan desain modular, pertimbangkan rekomendasi di bagian berikut.
Desain untuk keterikatan longgar
Desain arsitektur yang dikaitkan secara longgar . Komponen independen dengan dependensi minimal dapat membantu Anda membuat aplikasi yang skalabel dan tangguh. Saat merencanakan batasan untuk layanan, Anda harus mempertimbangkan persyaratan ketersediaan dan skalabilitas. Misalnya, jika satu komponen memiliki persyaratan yang berbeda dari komponen Anda yang lain, Anda dapat mendesain komponen sebagai layanan mandiri. Terapkan rencana untuk kegagalan yang lancar untuk subproses atau layanan yang kurang penting yang tidak memengaruhi waktu respons layanan utama.
Desain untuk konkurensi dan paralelisme
Desain aplikasi Anda untuk mendukung beberapa tugas secara serentak, seperti memproses beberapa permintaan pengguna atau menjalankan tugas latar belakang saat pengguna berinteraksi dengan sistem Anda. Bagi tugas besar menjadi bagian yang lebih kecil yang dapat diproses secara bersamaan oleh beberapa instance layanan. Konkurensi tugas memungkinkan Anda menggunakan fitur seperti penskalaan otomatis untuk meningkatkan alokasi resource dalam produk seperti berikut:
Seimbangkan modularitas untuk alokasi resource yang fleksibel
Jika memungkinkan, pastikan setiap komponen hanya menggunakan resource yang diperlukan (seperti memori, penyimpanan, dan daya pemrosesan) untuk operasi tertentu. Alokasi resource yang berlebihan dapat mengakibatkan biaya yang tidak perlu, sedangkan alokasi resource yang kurang dapat mengganggu performa.
Gunakan antarmuka yang jelas
Pastikan komponen modular berkomunikasi secara efektif melalui antarmuka yang jelas dan standar (seperti API dan antrean pesan) untuk mengurangi overhead dari lapisan terjemahan atau dari traffic yang tidak relevan.
Gunakan model stateless
Model stateless dapat membantu memastikan bahwa Anda dapat menangani setiap permintaan atau interaksi dengan layanan secara independen dari permintaan sebelumnya. Model ini memfasilitasi skalabilitas dan pemulihan, karena Anda dapat mengembangkan, mengurangi, atau memulai ulang layanan tanpa kehilangan data yang diperlukan untuk permintaan atau proses yang sedang berlangsung.
Pilih teknologi pelengkap
Pilih teknologi yang melengkapi desain modular. Evaluasi bahasa pemrograman, framework, dan database untuk dukungan modularitasnya.
Untuk informasi selengkapnya, lihat referensi berikut: