Senin, 22 November 2021

Microservice vs. Monolitik, Siapa yang Menang?

Arsitektur microservice saat ini cukup banyak digunakan diberbagai pengembangan aplikasi. Ditambah lagi dengan kemudahan untuk mengelola microservice dengan adanya containerization menggunakan Docker dan orchestartion menggunakan Kubernetes.

Arsitektur ini digadang-gandang memiliki banyak kelebihan dibandingkan lawannya yakni arsitektur monolitik. Tapi, memang apa sebenarnya sih microservice itu? Dan emang benar bahwa banyak keuntungannya?

Microservice

 

Definisi Arsitektur Monolitik dan Microservice

Membicarakan microservice, tentunya tidak akan lengkap jika tidak membawa lawan utamanya yakni arsitektur monolitik. Keduanya tentu memiliki definisi yang berbeda.

Microservice adalah arsitektur yang menekankan kepada banyak service atau aplikasi yang tidak terikat erat satu dengan lainnya (loosely coupled). Service ini memiliki tujuan yang sangat terfokus dan memiliki metode komunikasi antar service yang tidak berat.

Microservice

Monolith adalah arsitektur dimana keseluruhan kode akan dikompilasi menjadi satu aplikasi (biasanya menjadi satu binary atau artifact) dimana aplikasi tersebut menjalankan seluruh proses yang dibutuhkan. Kebutuhan akan komunikasi kepada aplikasi atau service lain bisa jadi tidak ada, karena aplikasi ini telah mencakup seluruh kode yang dibutuhkan.

Monolith

 

Perbedaan Microservice dan Monolitik

Berikut merupakan beberapa perbedaan yang umum pada arsitektur microservice dan monolitik,

KomponenMonolitikMicroservice
CakupanFungsionalitas yang dibutuhkan diimplementasikan secara lengkap dan menyeluruh pada satu codebaseSatu service fokus hanya pada satu fungsi
JumlahBiasanya hanya menjadi satu artifak atau binari atau serviceDibutuhkan banyak service atau aplikasi yang saling berkomunikasi
Komunikasi antar modulMelalui function call pada kode tanpa perlu protokol eksternal khususMemerlukan protokol komunikasi yang ringan agar komunikasi antar service bisa berjalan baik
DeploymentBiasanya lebih lambat karena perlu men-deploy kode yang besar pada satu waktu dan tidak fleksibelLebih fleksibel dan cepat, deployment dapat dilakukan terpisah untuk masing-masing service

Perlu dicatat bahwa perbedaan di atas adalah secara umum. Implementasinya dapat berbeda-beda sesuai dengan kebutuhan.

Untuk lebih memahami perbedaan keduanya, coba simak gambar diagram berikut ini.

Microservice vs. Monolith

Perlu diperhatikan bahwa, baik microservice maupun monolitik dapat diimplementasi dengan modul atau package. Keduanya bisa sama-sama modular.

 

Tujuan Umum Penggunaan Microservice

Suatu aplikasi menggunakan arsitektur microservice biasanya karena tim tersebut ingin dapat membagi-bagi tanggung jawab kepada tim-tim kecil yang ada dengan lebih jelas.

Dengan menggunakan microservice, masing-masing tim dapat diberikan tanggung jawab untuk mengelola satu atau dua microservice yang memiliki fungsionalitas yang terfokus. Contohnya, tim payment hanya mengelola suatu microservice pembayaran yang fungsinya untuk mengintegrasikan berbagai jenis pembayaran dari pihak ketiga.


Tim ini biasanya sejumlah orang yang dibutuhkan untuk menghabiskan 2 loyang pizza. Di populerkan oleh Amazon, two-pizza teams ini menjadi salah satu pedoman (tak wajib) yang berkaitan erat dengan microservice.

Dengan menggunakan microservice ini, diharapkan tim-tim kecil tersebut menjadi lebih mandiri dan fokus dalam mengelola aplikasi yang dibuatnya.

 

Keuntungan dan Kerugian Penggunaan Microservice

Tentunya penggunaan microservice tidak akan menyelesaikan semua masalah yang ada di dunia ini. Pindah ke microservice bukan berarti aplikasi yang kamu buat menjadi tidak bermasalah sama sekali. Yuk, simak satu-satu kerugian dan keuntungan penggunaan arsitektur microservice ini.

 

Keuntungan

  • Mudah untuk mengerti kode suatu service. Karena suatu service hanya terfokus pada satu fungsi, kode yang dihasilkan juga seharusnya lebih mudah dimengerti.

  • Deployment lebih cepat dan ringan. Berbeda dengan monolitik yang perlu mengkompilasi keseluruhan kode untuk dapat melakukan deployment, microservice hanya tergantung pada satu service. Kamu bisa melakukan deployment hanya pada satu service tertentu tanpa terikat atau menunggu service yang lain.

  • Kesalahan bisa diisolasi. Ketika satu service bermasalah, service lain bisa tidak terganggu.

  • Tidak terikat pada satu teknologi. Masing-masing service bisa menggunakan teknologi yang berbeda-beda mulai dari bahasa, hingga hardware dan database yang digunakan.

 

Kerugian

  • Komunikasi antar service menjadi masalah kompleks. Beberapa masalah yang muncul mengenai komunikasi adalah: protokol komunikasi yang digunakan antar aplikasi, bagaimana satu service bisa tau letak service lainnya (service discovery), dan masalah yang terjadi jika terdapat perubahan API yang tidak kompatibel dengan versi sebelumnya.

  • Bisa jadi lebih mahal. Masing-masing service memiliki hardware dan databasenya sendiri dapat membuat ongkos untuk membuat service menjadi lebih mahal dibanding membuat modul baru pada arsitektur monolith.

  • Testing menjadi lebih sulit. Diperlukan integration testing dan end-to-end testing yang dapat memastikan bahwa setiap service dapat berkomunikasi dengan baik dan menghasilkan output yang diinginkan.

  • Debugging juga menjadi sulit. Bug bisa berada di salah satu service tetapi error terjadi di service yang lain. Bayangkan jika kamu memiliki banyak service, akan sangat sulit mengetahui dimana letak bugnya. Tracing menjadi salah satu solusi untuk hal ini.

 

Kapan Microservice dan Monolitik Digunakan

Keduanya sama-sama dibutuhkan dalam membuat suatu aplikasi atau software. Tidak ada yang benar-benar buruk maupun benar-benar baik. Semuanya tergantung dari kebutuhan dan konteks aplikasi yang dibuat.

Jika kamu baru akan membuat proyek, atau sedang membuat proyek yang memiliki cakupan fungsi yang kecil, gunakanlah monolitik. Cakupan yang kecil biasanya adalah aplikasi yang memiliki fungsionalitas yang sedikit.

Jika aplikasi yang kamu buat sudah semakin besar, dan kamu sudah membutuhkan tim kecil baru untuk mengelola aplikasimu, ada baiknya jika memulai menggunakan arsitektur microservice.

Selain itu, monolitik dan microservice juga dapat digabungkan jika memang dibutuhkan. Bisa saja kamu memiliki satu aplikasi utama yang masih monolitik, dan aplikasi-aplikasi pendukung yang menggunakan microservice.

 

Rangkuman

Jadi, tidak ada yang menang atau kalah diantara microservice dan monolitik! Keduanya digunakan pada kebutuhan yang berbeda.

Microservice adalah suatu arsitektur dimana terdapat banyak service yang saling berkomunikasi satu sama lain, dimana masing-masing service memiliki masing-masing fungsi yang terfokus.

Monolitik bukan berarti tidak modular, ya! Kamu bisa saja memiliki kode modular namun monolitik, karena kodemu berada di suatu codebase dan harus di-compile menjadi satu aplikasi utuh.

Ingat! Karena microservice lagi nge-tren bukan berati kamu harus menggunakannya. Pastikan kebutuhanmu, jika memang aplikasi yang kamu buat kecil, gunakanlah monolitik.

sumber https://kutu.dev/artikel/microservice

Kamis, 21 Mei 2020

Big Data

Gambar 1 Karakteristik Big Data

Jumlah data yang dibuat dari tahun ke tahun mengalami pertumbuhan eksponensial, di mana pada tahun 2020 diprediksi jumlah data akan bertumbuh sebesar 50x dari jumlah data pada tahun 2010 (10 tahun!). Melihat pertumbuhan data yang sangat cepat ini, maka muncullah istilah Big Data. Big data merupakan sebuah kumpulan data yang sangat besar dan kompleks di mana sebuah DBMS (Database Management System) tradisional tidak dapat menangani.

Sabtu, 31 Agustus 2019

Perpres 16 Tahun 2018 tentang Pengadaan Barang/Jasa Pemerintah

Peraturan Presiden Nomor 16 Tahun 2018 Tentang Pengadaan Barang/Jasa Pemerintah ditetapkan Presiden Joko Widodo pada tanggal 16 Maret 2018. Perpres 16 Tahun 2018 Tentang Pengadaan Barang/Jasa Pemerintah diundangkan Menkumham Yasonna H. Laoly dalam Lembaran Negara Republik Indonesia Tahun 2018 Nomor 33, dan mulai berlaku pada tanggal 22 Maret 2018.

Kamis, 27 September 2018

KEKUATAN VISI


oleh : JEMY V. CONFIDO
“Vision without work is a day dream. Work without vision is a nightmare.” Japanese Proverb
Seorang mandor sedang memeriksa tiga orang tukang bangunan yang sedang bekerja. Tukang yang pertama ditanya oleh sang mandor. “Pak, apa yang sedang Bapak kerjakan?”
Tukang tersebut pun menjawab singkat, “Saya sedang menyusun batu bata Den.” Demikian penjelasan tukang yang pertama, persis seperti apa yang memang sedang ia kerjakan yaitu menyusun batu bata.
Sang mandor kemudian beralih ke tukang yang kedua dan ia pun mengajukan pertanyaan yang sama, “Pak, apa yang sedang Bapak kerjakan?”

Selasa, 09 Agustus 2011

10 Legenda Hidung Paling Terkenal di Dunia .

Ternyata sepanjang sejarah manusia, ada beberapa hidung yang menjadi pusat perhatian lebih. Dibawah ini adalah 10 orang terkenal yang memiliki hidung yang unik dan mendapat perhatian lebih:

1. Rudolf I Of Hasburg (Raja Jerman dan Kaisar Roma, 1218-1291)




Menurut salah satu ahli anatomi sejarah, Rudolf I memiliki “hidung yang sedemikian besarnya, sehingga tidak ada artis yang bisa menggambarkannya dengan ukuran yang pas dan sebenarnya” Oleh karena itu fotonya kita dapat dari patungnya…