Prinsip yang ada dalam pilar pengoptimalan performa di Google Cloud Framework Baik-Architected memberikan rekomendasi untuk membantu Anda mempromosikan desain modular. Komponen modular dan antarmuka yang jelas dapat memungkinkan penskalaan 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 pada awalnya di-deploy. Dengan menguraikan sistem menjadi modul independen yang terdefinisi dengan baik dengan antarmuka yang jelas, Anda dapat menskalakan setiap komponen 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 untuk komponen yang tidak terlalu menuntut.
- Menambahkan lebih banyak resource selama periode dengan traffic tinggi untuk mempertahankan pengalaman pengguna.
- Menghapus resource yang kurang dimanfaatkan tanpa mengorbankan performa.
Modularitas juga meningkatkan kemudahan pemeliharaan. Unit mandiri yang lebih kecil lebih mudah dipahami, di-debug, dan diupdate, yang dapat menghasilkan siklus pengembangan yang lebih cepat dan pengurangan risiko.
Meskipun modularitas menawarkan keuntungan yang signifikan, Anda harus mengevaluasi potensi kompromi performa. Peningkatan komunikasi antar-modul dapat menghasilkan latensi dan overhead. Upayakan keseimbangan antara modularitas dan performa. Desain yang sangat modular mungkin tidak cocok secara universal. Jika performa dianggap penting, pendekatan yang terkait lebih erat mungkin sesuai. Desain sistem adalah proses berulang, di mana Anda terus meninjau dan meningkatkan kualitas desain modular Anda.
Rekomendasi
Untuk mempromosikan desain modular, pertimbangkan rekomendasi di bagian berikut.
Desain untuk sambungan longgar
Desain arsitektur yang dikaitkan secara longgar. Komponen independen dengan dependensi minimal dapat membantu Anda mem-build aplikasi yang skalabel dan tangguh. Saat merencanakan batas untuk layanan, Anda harus mempertimbangkan persyaratan ketersediaan dan skalabilitas. Misalnya, jika satu komponen memiliki persyaratan yang berbeda dengan komponen lainnya, Anda dapat mendesain komponen tersebut sebagai layanan mandiri. Terapkan rencana untuk kegagalan halus untuk subproses atau layanan yang kurang penting yang tidak memengaruhi waktu respons layanan utama.
Desain untuk konkurensi dan paralelisme
Rancang aplikasi Anda untuk mendukung beberapa tugas secara serentak, seperti memproses beberapa permintaan pengguna atau menjalankan tugas latar belakang saat pengguna berinteraksi dengan sistem Anda. Pecah tugas besar menjadi potongan-potongan 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:
Menyeimbangkan 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 terstandardisasi (seperti API dan antrean pesan) untuk mengurangi overhead dari lapisan terjemahan atau dari traffic yang tidak relevan.
Menggunakan model stateless
Model stateless dapat membantu memastikan Anda dapat menangani setiap permintaan atau interaksi dengan layanan secara terpisah dari permintaan sebelumnya. Model ini memfasilitasi skalabilitas dan kemudahan pemulihan karena Anda dapat menambah, 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 mendapatkan dukungan modularitasnya.
Untuk informasi selengkapnya, lihat referensi berikut: