Microservices, Konsep dan Implementasi (1)

1024 536 Dian Boyke

Akhir-akhir ini kita sering mendengar istilah Microservices di dunia teknologi. Istilah yang sedang populer ini diyakini mampu memberikan pilihan solusi dalam membangun sebuah aplikasi yang efisien pada proses dan efektif dalam pengembangan. Terlebih lagi harus mampu tetap berfungsi baik pada saat mendapatkan lonjakan pengunjung.

Sebelum kita berganti ke teknologi terbaru dan canggih, sebaiknya kita mulai dengan me-review arsitektur aplikasi yang digunakan sekarang. Terkadang permasalahan yang kompleks dapat diselesaikan dengan menggunakan desain arsitektur aplikasi yang tepat.

Monolithic

Sekian lama kita telah hidup dari desain aplikasi yang memiliki arsitektur yang terpusat dan teknologi yang seragam, atau lebih dikenal dengan istilah Monolithic application architecture. Arsitektur aplikasi monolitik ini menggunakan kode sumber dan teknologi yang serupa untuk menjalankan semua tugas-tugasnya.

Untuk memudahkan pemahaman kita ambil contoh aplikasi wordpress. 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, ad, statistik, semuanya dibangun dengan menggunakan PHP dan database MySQL, dalam kode sumber yang sama.

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.

Pada praktiknya pemisahan halaman ini dilakukan di level domain. Anggap saja kita gunakan subdomain www untuk frontend, subdomain admin untuk backend, subdomain report untuk reporting dan seterusnya. Dan masing-masing subdomain tersebut dapat dilakukan pemisahan server secara fisik. Pemisahan ini dilakukan agar proses scaling dan debuging dapat dilakukan dengan mudah.

Microservices

Secara sederhana, arsitektur aplikasi Microservice ini menggunakan desain yang memecah aplikasi berdasarkan fungsinya secara spesifik. Tidak sekedar dengan memisahkan berdasarkan user-role atau subdomain saja, tetapi aplikasi akan di breakdown lebih rinci lagi dari sisi fungsionalitasnya. Aplikasi akan dirancang agar setiap fungsi bekerja secara independent. Dan setiap fungsi dapat menggunakan teknologi stack yang sesuai dengan kebutuhan, walaupun itu artinya akan terdapat teknologi yang berbeda-beda dalam satu aplikasi besar.

Dengan pemisahan aplikasi berdasarkan fungsi-nya ini, pada akhirnya kita akan menemui keragaman teknologi dalam sebuah satu layanan digital. Misalkan dari layanan blog yang telah dicontohkan diatas, kita bisa coba pecahkan aplikasi blog tersebut menjadi fungsi konten, user management, komentar, rangking, search dan lainnya.

Pada bagian fungsi konten mungkin kita menggunakan PHP dan mysql, tetapi pada komentar kita menggunakan Python dan Mongodb, sedangkan di search menggunakan nodejs dan elasticsearch untuk penyimpanan datanya. Disini terlihat bahwa setiap fungsi / permasalahan teknis dapat diselesaikan dengan cara dan teknologi yang berbeda-beda.

Dalam konsep microservices, kita tidak hanya melalukan pemisahan di level aplikasi saja, tetapi dari sisi infrastruktur pula. Kita akan menemukan keragaman arsitektur infra, konfigurasi dan optimalisasi sistem yang berbeda, dan sering pula ditemukan jumlah dan spesifikasi server yang tidak sama antara service yang satu dengan yang lain.

Di bagian berikutnya (Bagian ke-2) saya akan coba membahasnya secara teknis, tentang persiapan dan proses implementasi microservices.

2 comments

Leave a Reply

Your email address will not be published.