lifelong learner — urip iku urup, currently working on accenture.

Apa itu Microservices dan Kapan Harus Menggunakannya ?

0
Degananda.com -

microservices_thumb

Jenis Arsitektur sistem pada dunia software engineering berevolusi dari awalnya hanya menggunakan konsep monolithic hingga kini memiliki variasi berupa micoservices. Desain microservices ini lahir dari berbagai konsep-konsep baru dalam software engineering seperti :

  1. test / domain driven design
  2. CI/CD (Continous integration & continous delivery)
  3. Process (platform / infastructure) automation / devops
  4. Scalable system
  5. polyglot programming (prinsip untuk menggunakan berbagai bahasa pemrograman yang sesuai dengan kebutuhan teknis dan bisnis). karena setiap bahasa pemrograman meiliki keunggulan dan limitasi – masing-masing

kelima konsep tersebutlah yang membuat microservices lahir. Microservices hadir untuk menjawab setiap masalah atas masing-masing item diatas.

secara umum, microservices dapat meningkatkan frekuensi delivery (CI/CD) karena mengurangi ketergantungan dengan services lain.

Apa itu Microservices dan Kapan Harus Menggunakannya ?

Mengenal apakah itu arsitektur monolithic

monolithic_architecture.JPG
konsep arsitektur monolithics, menempatkan seluruh komponen dalam satu server besar.

sebelum arsitektur microservices populer dan banyak diadopsi oleh indistri software engineering, konsep arsitektur monolithic mendominasi di industri. Arsitektur monoloithic menempatkan seluruh komponen dalam sistem disatu server dengan kekuatan yang sangat besar (single tier).

pada gambar diatas, seluruh komponen frontend, backend hingga database diletakan dalam satu server dengan kapasitas yang besar. Problem utama dari arsitektur ini adalah apabila salah satu komponen / modul dalam backend/front memerlukan update, maka seluruh server akan terdampak. karena seluruh komponen berada di server yang sama.

Mengenal apakah itu arsitektur microservices

microservices_architecture.JPG
setiap services akan dideploy pada server tersendiri dan akan memiliki database tersendiri.

Microservices adalah arsitektur sistem dengan konsep SRP (single reponsible principle) yang mana sistem tersebut akan menangani dan mendeteksi setiap proses yang memiliki karakteristik sama. Sehingga, untuk proses yang memiliki karakteristik berbeda akan ditangi oleh sistem lain.

setiap services akan memiliki database sendiri dan akan memiliki dataset tersendiri. Sehingga perubahan ditiap services tidak akan mempengaruhi kode / data di services lainnya.

Arsitektur microservices yang menganut SRP akan membuat setiap services dapat secara individual di lakukan development, deployment, testing dan maintenance. Pembagian services ini tentunnya sangat bergantung pada karakteristik sistem. Contohnya pada sistem fleet management, services dibagi berdasarkan entitas bisnis seperti order, vehicle, fleet dan lain sebagaiinya.

Setiap services pada microservices akan bertanggung jawab atas tugas yang berbeda-beda antar satu dan lainnya. Namun, setiap (micro)services dapat berkomunikasi dengan services lainnya untuk menyelesaikan kebutuhana bisnis tertentu.

Umumnya, setiap microservices akan saling berkomunikasi dengan menggunakan API melalui protokol HTTP (secara umum), tetapi tidak menutup kemungkinan bahwa microservices berkomunikasi dengan microservices lainnya dengan prokotol lain.

Keuntungan menggunakan arsitektur microservices

Keuntungan Microservices 1 – Independent antar komponen dalam sisi development dan CICD (devops)

independent_cicd_devops_final.JPG
arsitektur microservices tidak begantung pada microservices lain saat berada dalam proses devops. khususnya ci/cd.

 

Dalam membangun project, tentunnya sistem akan dibagi menjadi beberapa modul sesuai dengan kebutuhan bisnis yang sudah ada. Dengan menggunakan arsitektur microservices, pembagian modul dapat dibagi secara mudah dan proses developmentnya dapat dijalankan secara individu tanpa harus bergantung pada service lainnya.

independensi tim akan mengurangi depedensi dengan tim lain sehingga akan mempercepat proses development dan delivery secara keseluruhan. Scrum master will love this <3

Selain independen dalam sisi development (coding) setiap microservices juga dapat dideploy secara individual. Ini memungkinkan proses CI/CD atau devops pada umumnya dapat berjalan secara efisien. Satu microservices tidak perlu menunggu microservices lainnya untuk dapat dideploy. Sehingga tim developer tidak perlu bergantung pada tim lain yang membangun service lainnya.

Keuntungan Microservices 2 – Memudahkan error isolation

error_isolation_microservices_2.JPG
setiap microservices memiliki error logger dan handling tersendiri. Namun terdapat log analytics services yang bertugas mencari insight error.

Konsep SRP yang di implementasikan memastikan bahwa setiap microservices menjalankan tugas yang berbeda dan spesifik ke entitas bisnis tertentu. Apabila terjadi error, maka akan sangat mudah untuk melakukan isolasi terhadap problem tersebut karena setiap services terpisah antar satu dengan lainnya.

membuat RCA (root cause analysis) menjadi sangat mudah dengan menggunakan konsep microservices. Error akan menjadi mudah untuk ditrace lokasinnya (berada di microservice mana)

Keuntungan Microservices 3 – Demokirasi dalam memilih stack

microservices_polyglot.JPG
setiap microservices bebas menggunakan stack yang sesuai dengan requirement bisnis dan teknis.

Salah satu konsep yang melahirkan microservices architecture adalah polyglot programming. Yakni konsep untuk menggunakan lebih dari satu bahasa pemrograman dalam membangun suatu sistem sesuai dengan keunggulan dan limitas bahasa pemrograman tersebut.

Pada arsitektur microservices, hal ini sangat relevan dan fiable untuk di implementasikan. Sebagai contoh microservices frontend akan menggunakan stack Nginx , Nodejs dan framework angular. Sementara pada sisi backend menggunakan stack Java EE & cosmosdb. hal ini memungkinkan karena setiap services memiliki server yang berbeda, secara otomatis setiap server dapat di install dengan stack tools/software yang berbeda-beda.

Kapan harus menggunakan arsitektur microservices?

berdasarkan beberapa ulasan diatas berikut ini adalah saat harus menggunakan arsitektur microservices.

  1. Apabila membutuhkan kemampuan untuk melakukan development, deployment, error isolation secara individual. Ini akan dibutuhkan apabila scope project sangat besar. Umumnya diskala enterprise
  2. Memiliki budget yang cukup besar. Microservices membutuhkan satu server dan satu database untuk setiap servicesnya. Tentunnya ini akan relatif lebih mahal jika dibandingkan dengan arsitektur monolithic yang menggunakan shared database.
  3. Membutuhkan polyglot programming. Jika project sangat complex yang harus melibatkan berbagai macam stack programming, maka microservices merupakan keharusan.

Kapan harus menggunakan arsitektur monolithic?

berkebalikan dari alasan terkait penggunaan microservices, maka berikut ini adalah alasan kapan harus menggunakan arsitektur monolithic

  1. scope project kecil dan tidak banyak developer yang terlibat
  2. Budget yang terbatas, dengan konsep monolithic cost dapat ditekan karena hanya menggunakan satu server dan satu database yang digunakan bersama-sama
  3. kebutuhan monolingual. Apabila project hanya menggunakan satu stack teknologi, maka tidak perlu untuk menggunakan arsitektur monolithic.

Kesimpulan

Monolithic dan microservices memiliki keunggulan masing-masing. Namun dalam dunia enterprise, tentunnya microservices telah menjadi standar arsitektur karena scope project yang begitu besar serta kebutuhan penggunaan berbagai macam stack teknologi yang harus digunakan.

~~~~Happy architecting !!!

 

 

 

(Visited 12 times, 1 visits today)
Please follow and like us:

Leave a Reply