Prinsip ini dalam pilar pengoptimalan performa dari Framework Arsitektur Google Cloud 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 ditentukan dengan baik dan memiliki 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 ke komponen yang tidak terlalu menuntut.
- Menambahkan lebih banyak resource selama periode 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 mengurangi risiko.
Meskipun modularitas menawarkan keunggulan yang signifikan, Anda harus mengevaluasi potensi kompromi performa. Peningkatan komunikasi antar-modul dapat menyebabkan latensi dan overhead. Upayakan keseimbangan antara modularitas dan performa. Desain yang sangat modular mungkin tidak cocok secara universal. Jika performa sangat penting, pendekatan yang lebih terikat mungkin lebih sesuai. Desain sistem adalah proses iteratif, yang memungkinkan Anda terus meninjau dan meningkatkan kualitas desain modular.
Rekomendasi
Untuk mempromosikan desain modular, pertimbangkan rekomendasi di bagian berikut.
Mendesain untuk pengaitan longgar
Buat desain arsitektur yang dikaitkan secara longgar. Komponen independen dengan dependensi minimal dapat membantu Anda mem-build 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 lainnya, Anda dapat mendesain komponen tersebut sebagai layanan mandiri. Terapkan rencana untuk kegagalan halus bagi subproses atau layanan yang kurang penting yang tidak memengaruhi waktu respons layanan utama.
Mendesain 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. Pecahkan tugas besar menjadi bagian yang lebih kecil yang dapat diproses secara bersamaan oleh beberapa instance layanan. Serentak 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 berlebih dapat mengakibatkan biaya yang tidak perlu, sedangkan alokasi resource yang kurang dapat membahayakan performa.
Menggunakan antarmuka yang jelas
Pastikan komponen modular berkomunikasi secara efektif melalui antarmuka standar yang jelas (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 bahwa Anda dapat menangani setiap permintaan atau interaksi dengan layanan secara terpisah dari permintaan sebelumnya. Model ini memfasilitasi skalabilitas dan pemulihan, karena Anda dapat menambah, mengurangi, atau memulai ulang layanan tanpa kehilangan data yang diperlukan untuk permintaan atau proses yang sedang berlangsung.
Memilih teknologi pelengkap
Pilih teknologi yang melengkapi desain modular. Evaluasi bahasa pemrograman, framework, dan database untuk mengetahui dukungan modularitasnya.
Untuk informasi selengkapnya, lihat referensi berikut: