WordPress merupakan contoh paling mudah untuk menggambarkan arsitektur aplikasi yang bersifat monolitik, dimana dalam satu aplikasi kita dapat memiliki frontend sekaligus backend. Semua fitur security, performance, manajemen konten, statistik semuanya dibangun dengan menggunakan PHP dan database MySQL, dalam kode sumber yang sama.
Perkembangan Aplikasi
- Perkembangan berikutnya adalah dengan memisahkan aplikasi berdasarkan user role-nya.
- Ada frontend yaitu aplikasi yang akan diakses oleh pengakses blog (user) dan Backend yang digunakan oleh kontributor konten dan admin blog.
- Bisa juga memisahkan halaman reporting, member dan lainnya, dengan tujuan agar satu fungsi tidak akan mengganggu fungsi yang lainnya.
Arsitektur Monolitik
Kekurangan Aplikasi Monolitik
- Sebagai contoh yaitu aplikasi enterprise
- Aplikasi Enterprise dibangun dalam tiga bagian: database, client- side, dan server-side.
- Dimana Server-side akan menangani request HTTP kemudian menjalankan beberapa logika sesuai dengan domain, kemudian mengambil dan memperbarui data dari database, dan mengurim data tersebut ke sisi client-side.
Kekurangan Aplikasi Monolitik
- Ketika aplikasi menjadi besar (banyak yang akses) peforma akan menurun (kecuali punya banyak uang buat bayar server yang lebih bagus)
- Ketika akan merubah teknologi pada aplikasi maka akan merubah secara keseluruhan aplikasi.
- Jika terjadi error pada salah satu fungsi maka akan mempengaruhi keseluruhan aplikasi.
Kelebihan Aplikasi Monolitik
- Mudah dibangun
- Mudah di uji
- Mudah di deploy ke server atau cloud
Apa itu Microservice?
- Microservices berarti membagi aplikasi menjadi layanan yang lebih kecil dan saling terhubung tidak seperti aplikasi monolitik.
- Setiap microservice merupakan aplikasi kecil yang memiliki arsitektur heksagonal sendiri yang terdiri dari logika beserta berbagai adapternya (bahasa pemrograman, dan lain-lain).
- Pola arsitektur Microservice secara signifikan mempengaruhi hubungan antara aplikasi dan database.
- Di satu sisi, pendekatan ini bertentangan dengan gagasan model data enterprise-wide.
- Namun, memiliki skema database per service sangat penting jika ingin mendapatkan keuntungan dari layanan microservice.
- Jadi intinya microservice yaitu membagi service ke bagian yang lebih kecil dimana service-service tersebut saling berhungan satu sama lain.
- Selain itu, dalam setiap services yang dibuat bisa menggunakan teknologi yang berbebeda
- Contoh Arsitektur Microservices
- Sedangkan untuk implementasi ke web, android, iOS dan lain-lain tidak bisa secara langsung.
- Dimana kita harus membuat terlebih dahulu yang Namanya API Gateway.
- API Gateway memiliki tugas seperti load balancing, caching, access controll, API metering, dan monitoring.
Kelebihan Microservice
- Aplikasi scalabale, secure dan reliable
- Setiap service berdiri sendiri
- Maintence-nya lebih mudah
- Tidak ada hambatan dalam menggunakan teknologi baru
- Setiap tim developer dapat mengembangkan setiap services-nya tanpa ada mengganngu services yang lain
Kekurangan Microservice
Contoh Monolitik
- Ketika satu entity pada database berubah maka setiap entity yang sama di setiap database service harus diubah
- Untuk beberapa kasus, sulit untuk menerapkan perubahan services jadi perlu perancangan yang matang.
- Deployment yang kompleks, perlu konfigurasi untuk menjalankan setiap services karena memiliki runtime yang berbebda, tidak seperti aplikasi monolitik tinggal upload, deploy dan beres.
- Perlu automation yang tinggi dalam melakukan deployment.
Contoh Monolitik
Contoh Microservice
Peran Microservice
Faktor-faktor kelebihan microservice adalah fokus kepada tugas- tugas kecil, terpisah dan sangat independen, layaknya blok-blok kecil.
Faktor-faktor kelebihan microservice adalah fokus kepada tugas- tugas kecil, terpisah dan sangat independen, layaknya blok-blok kecil.
Menggunakan Microservice
Menggunakan Microservice
- Untuk implementasi microservices yang baik paling tidak kita harus menggunakan dua layer dari load balancer.
- Yang pertama berfungsi membagi traffic berdasarkan URL, dan yang kedua berguna untuk membagi traffic berdasarkan load server.
- Apabila digambarkan maka implementasi microservices akan memiliki desain infrastrukturnya akan seperti gambar selanjutnya.