Arsitektur microservice saat ini cukup sudah cukup berkembang dan banyak digunakan diberbagai pengembangan aplikasi Monolithic vs Microservices. Ditambah lagi dengan kemudahan untuk mengelola microservice dengan adanya containerization menggunakan Docker dan orchestartion menggunakan Kubernetes.
Arsitektur ini dianggap memiliki banyak kelebihan dibandingkan lawannya yakni arsitektur monolitik. Tapi, memang apa sebenarnya sih microservice itu? Dan emang benar bahwa banyak keuntungannya?
Definisi Monolithic vs Microservices
Membicarakan microservice, tentunya tidak akan lengkap jika tidak membahas definisinya. disini IDniX akan menjelaskan 3 arsitektur yaitu
- Monolithic atau monolitik adalah merupakan sebuah pendekatan tradisional dalam pembangunan sebuah aplikasi. Aplikasi monolitik terbentuk sebagai satu kesatuan kode yang tidak dapat dipisahkan satu dan lainnya. Salah satu karakter sistem arsitektur monolitik adalah saat pemrogram ingin melakukan perubahan pada sistem monolitik, pemrogram harus mengubah satu kesatuan kode secara menyeluruh dan bersamaan.
- Microservices terbagi menjadi unit pecahan yang lebih kecil dan spesifik. Setiap unitnya terpisah dan memiliki sistem beserta database sendiri untuk beroperasi dan menggunakan mekanisme API untuk terhubung dengan unit lainnya.
Perbedaan Microservice dan Monolitik
Berikut merupakan beberapa perbedaan yang umum pada arsitektur microservice dan monolitik,
Komponen | Monolitik | Microservice |
---|---|---|
Cakupan | Fungsionalitas yang dibutuhkan diimplementasikan secara lengkap dan menyeluruh pada satu codebase | Satu service fokus hanya pada satu fungsi |
Jumlah | Biasanya hanya menjadi satu artifak atau binari atau service | Dibutuhkan banyak service atau aplikasi yang saling berkomunikasi |
Komunikasi antar modul | Melalui function call pada kode tanpa perlu protokol eksternal khusus | Memerlukan protokol komunikasi yang ringan agar komunikasi antar service bisa berjalan baik |
Deployment | Biasanya lebih lambat karena perlu men-deploy kode yang besar pada satu waktu dan tidak fleksibel | Lebih fleksibel dan cepat, deployment dapat dilakukan terpisah untuk masing-masing service |
Perlu diketahui bahwa perbedaan di atas adalah secara umum namun implementasinya dapat berbeda-beda sesuai dengan kebutuhan. Untuk lebih memahami perbedaan keduanya, coba simak gambar berikut ini
Kelebihan Arsitektur Monolitik
- Kemudahan dalam implementasi
- Sederhana untuk dikembangkan
- Debugging dan testing yang lebih mudah
Sistem monolitik terbilang sistem yang sederhana sehingga dalam penerapannya pun tidak perlu banyak menangani file atau direktori.
Monolitik adalah pendekatan standar dalam pembangunan sebuah aplikasi, sehingga banyak orang bisa melakukan pengembangannya.
Sistem monolitik tidak terbagi menjadi bagian-bagian kecil, sehingga lebih cepat dalam melakukan debungging dan testing.
Kekurangan Arsitektur Monolitik
- Sulit memahami kode pemrograman saat pemeliharaan.
- Sulit melakukan perubahan
- Sulit mengembangkan aplikasi.
- Sulit mengadopsi teknologi baru.
Sistem monolitik untuk pengembangan aplikasi berskala besar dan rumit akan membuat kode pemrogramannya semakin kompleks. Hal ini akan menimbulkan kesulitan pemahaman tersendiri, terlebih bagi pemrogram yang dari awal tidak ikut mengembangkan aplikasinya.
Semakin besar aplikasi yang sudah ada, semakin rumit juga perubahan yang perlu dilakukan. Hal ini tentunya akan membuat proses pekerjaan semakin lama dan berbelit-belit, karena satu perubahan akan sangat mempengaruhi keseluruhan sistem yang ada.
Dengan menggunakan sistem monolitik, pemrogram tidak bisa leluasa melakukan pengembangan program pada kemudian hari. Hal ini karena perubahan sistem harus dilakukan secara menyeluruh, tidak bisa hanya sebagian kecil.
Untuk bisa menggunakan teknologi baru, kode aplikasi dengan sistem monolitik harus ditulis ulang secara keseluruhan.
Kelebihan Microservices
- Unit yang mandiri.
- Lebih mudah dipahami.
- Mudah mengembangkan aplikasi.
- Bebas adopsi teknologi baru.
Setiap unit bisa beroperasi secara terpisah, sehingga bersifat lebih fleksibel. Saat terjadi bug, hanya unit yang terdampak yang harus diperbaiki dan tidak mempengaruhi unit yang lain.
Alur kerja microservices lebih mudah dipahami karena terpecah menjadi unit yang lebih kecil, dibanding harus mempelajari alur kerja monolitik yang harus dipahami secara keseluruhan.
Karena sifat setiap unitnya bisa beroperasi secara mandiri, microservices lebih mudah dikembangkan pada kemudian hari.
Setiap unit pada arsitektur microservices bisa lebih fleksibel dikembangkan sehingga akan lebih maksimal saat mengadopsi teknologi baru sesuai kebutuhan.
kekurangan Microservices
- Tingkat kerumitan yang berbeda.
- Testing yang rumit.
Sistem yang terpecah menjadi unit-unit kecil memerlukan sistem distribusi yang baik untuk menghubungkan antar unit dengan database.
Pengujian sistem akan menjadi lebih sulit karena banyak komponen yang harus diuji dan perlu memiliki keahlian khusus yang memadai.
Hybrid Cloud dan Multicloud
containerization atau Kontainerisasi aplikasi juga ideal bila perusahaan Anda menggunakan model Hybrid Cloud atau Multicloud. Pada Hybrid Cloud, perusahaan menggabungkan Private Cloud (komputasi awan pribadi) yang ditaruh di lingkungan sendiri (on-premise) dengan Public Cloud (layanan komputasi awan publik). Sementara itu, pada Multicloud, perusahaan menggunakan layanan Cloud lebih dari satu vendor.
Kontainer pada dasarnya portabel. Artinya, suatu kontainer dapat dipindahkan dengan mudah dari suatu lingkungan Cloud ke lingkungan lain. Misalnya, kontainer yang tadinya dijalankan di lingkungan Private untuk pengembangan aplikasi bisa dipindahkan ke Public Cloud. Kontainer juga bisa dipindahkan dari lingkungan satu vendor ke vendor lain bila diperlukan.
Organisasi yang sudah menggunakan kontainer secara intensif, tidak jarang akan perlu mengelola puluhan, bahkan ribuan kontainer. Dalam hal ini, pengelolaan tidak bisa dilakukan secara manual, namun memerlukan layanan yang disebut sebagai orkestrasi kontainer.
Kesimpulan
jadi diantara Monolithic vs Microservices mana yang lebih baik? keduanya dapat di implementasikan sesuai kebutuhan, bahkan ada yang menggunakan hybrid cloud dikarenakan standarisasi dari vendor compliance karena menyimpan data-data pribadi pelanggan contohnya. sehingga perusahaan harus mengikuti aturan yang sudah ada 🙂