Sering mendengar kata “Microservices” ?

Sistem anda berjalan di atas monolith sistem atau yang kebanyakan orang sebut sebagai cara traditional, apakah “traditional” ini buruk untuk aplikasi anda ? Apakah anda ingin mengikuti tren dan berpindah ke Microservices ?

Simak dulu penjelasannya berikut ini.

https://dev.to/alex_barashkov/microservices-vs-monolith-architecture-4l1m

Monolith Arsitektur

Monolith arsitektur biasanya terbangun dari satu unit dan saling tidak terpisahkan. Biasanya terdiri dari client-side user interface, server-side application dan database. Semuanya tergabung menjadi satu, dan semua fungsinya diatur dan disajikan dalam satu tempat. Ini menjadi monolith arsitektur memiliki satu code base yang besar dan kurang akan modularitas. Sehingga ketika anda kelak ingin melakukan perubahan atau menambah sesuatu menjadikan Monolith ini sebagai satu rintangan sendiri.

Keuntungan Monolith sendiri :
1. Lebih mudah untuk dimanage

Dalam monolith arsitektur semuanya diatur dalam satu tempat, hal ini membuat proses seperti logging, caching dan performance monitoring menjadi lebih mudah.

2. Debug dan testing yang lebih mudah

Karena monolithic app merupakan satu kesatuan yang tidak terpisah hal ini membuat proses debugging dan testing end-to-end menjadi lebih mudah dan cepat.

3. Deployment yang mudah dan ringkas

Jika monolithic menjadi pilihan, anda tidak perlu susah untuk melakukan deployment sehingga proses deployment menjadi lebih singkat dan mudah.

Kekurangan dari Monolith :

1. Susah untuk scale up

Ketika aplikasi anda sudah tumbuh menjadi lebih besar dan code base menjadi lebih kompleks, maka monolith aplikasi menjadi lebih susah untuk dipisahkan bagian antar bagian dan pada akhirnya hal ini membuat aplikasi terlalu susah untuk dimaintain.

2. Monolith aplikasi kurang akan modularitas

Hal ini membuat anda tidak akan bisa melakukan scale-up komponen pada aplikasi monolith anda, sehingga ketika anda ingin melakukan scale-up pada monolith hal yang harus anda lakukan adalah melakukan scale-up secara keseluruhan dan bahkan mengharuskan anda untuk menulis ulang kembali seluruh aplikasi.

Microservices Arsitektur

Jika monolith merupakan satu kesatuan aplikasi yang tidak terpisahkan, maka microservices memisahkan-misahkan fitur dan fungsi pada aplikasi anda menjadi satu unit yang dapat berdiri sendiri. Unit-unit ini menjalakan setiap proses aplikasi menjadi satu service yang terpisah. Setiap service pada microservices ini dapat di-update, deploy dan scale-up secara mandiri.

Kekurangan dari microservices pun sendiri melingkupi :

1. Kompleksitas

Microservices terdiri dari banyak services yang berdiri sendiri, hal ini membuat masing-masing harus dideploy pada satu server tersendiri. Dan semakin banyak komponen microservices anda maka semakin banyak hal yang harus anda perhatikan. Logging dan monitoring dapat menjadi pekerjaan rumah tersendiri dari arsitektur ini.

2. Proses testing menjadi lebih sulit

Karena banyak komponen yang berjalan secara mandiri dan jumlah services yang biasanya banyak pada arsitektur ini. Hal ini membuat proses testing menjadi lebih sulit jika dibandingkan dengan monolith arsitektur.

Dari bahasan diatas, kita menjadi tahu bahwa masing-masing arsitektur memiliki kelebihan dan kekurangan masing-masing. Jadi dapat kita simpulkan bahwa tidak selamanya kita harus menggunakan microservices, atau tidak selamanya kita harus monolith.

Kita dapat menggunakan monolith jika :

1. Aplikasi yang dibuat sederhana

2. Aplikasi yang anda bangun pada arsitektur monolith menggunakan konsep modularity dan mudah untuk dimaintain secara monolith

3. Low lantency. Pada monolith semua disajikan dalam satu instance sehingga membuat komunikasi antar network menjadi lebih singkat.

4. Time-to-market yang singkat.

Pertimbangkan untuk menggunakan microservices jika :

1. Aplikasi yang akan anda bangun kompleks dan scaleable.

2. Anda ingin sering melakukan update dan penambahan fitur pada aplikasi anda.

3. Fault toleransi. Pada microservices setiap modul bekerja secara mandiri dan terpisah dari satu dengan yang lainnya. Sehingga jika satu komponen tidak bekerja dengan baik, aplikasi anda secar keseluruhan akan tetap berjalan.

4. Agnostic. Sekali lagi, pada microservices, setiap modul terpisah dan dapat bekerja secara mandiri. Sehingga anda dapat menggunakan teknologi yang tepat untuk masing-masing modul.

 

Monolith dan Microservices memiliki kekurangan dan kelebihan masing-masing, jadi tidak perlu terbawa tren arus microservices dan setiap aplikasi anda harus microservices. Pikirkan kembali kebutuhan anda sebelum memilih arsitektur yang cocok untuk project anda.