Microservices Architecture
the more complex way to develop app

Hello!

Dalam post kali ini, kita akan membahas mengenai Microservices sebagai lanjutan dari post sebelumnya. Sama halnya dengan Monolithic, Microservices adalah sebuah arsitektur perangkat lunak. Dalam pendekatan Microservices, aplikasi dibangun dari beberapa modul-modul microservices yang terpisah (loosely-coupled) dan independen.

Ide utamanya adalah dimana setiap modul memiliki batasan-batasan bisnis tertentu yang dapat dikembangkan secara independen. Karena dapat dikembangkan secara independen, setiap modul pun juga dapat menentukan technology stack nya sendiri. Hal tersebut tentu akan menjadi keuntungan tersendiri karena teknologi yang digunakan dapat lebih disesuaikan dengan proses bisnis terkait.


[klik pada gambar untuk memperbesar]

Kita ambil contoh dari post sebelumnya, dalam Monolithic kita gunakan beberapa modul

  • Account -> pendaftaran pengguna, informasi pengguna, dsb
  • Product -> pencarian produk, etalase produk, dsb
  • Promotions -> penawaran produk, promosi, dsb
  • Orders -> pemesanan produk, dsb
  • Payment -> pembayaran, invoice, dsb

Berikut kurang lebih adalah ilustrasi dari implementasi aplikasi tersebut dengan Monolithic.


[klik pada gambar untuk memperbesar]

Dengan menggunakan Microservices.


[klik pada gambar untuk memperbesar]

Jika diperhatikan dalam Monolithic, jika pengembangannya menggunakan technology stack LAMP, setiap modul nantinya juga harus dikembangkan dengan technology stack tersebut. Berbeda dalam Microservices dimana setiap modul tersebut dikembangkan secara independen. Alhasil modul-modul tersebut pun dapat dikembangan dengan technology stack yang berbeda-beda sesuai kebutuhan masing-masing modul. Fleksibilitas semacam ini adalah salah satu keuntungan lain dari Microservices.

But once again, remember

theritalic texte's no silver bullet!

the Advantages:

  • Microservices enable continous delivery and deployment of large, complex applications/, indeed//, karena setiap modul dapat dikembangkan secara benar-benar terpisah dan independen
  • It enables you to organize the development effort around multiple teams dapat mencapai single point of responsibility dimana setiap tim akan bertanggungjawab pada modul tertentu
  • Comfortable for a developer to understand, setiap modul memiliki cakupan yang spesifik sehingga dapat lebih mudah untuk dipahami
  • Improved fault isolation bug yang terjadi di suatu modul tidak akan berdampak ke modul yang lain
  • Microservices Eliminates any long-term commitment to a technology stack, modul baru yang akan dibuat tidak terikat dengan technology stack dari modul yang lain

the Concerns and Drawbacks:

  • Complexity, complexity, complexity, skema sistem yang terdistribusi menambah kompleksitas baru dalam penanganan sistem secara keseluruhan
  • Additional manpower cost, dibutuhkan keterampilan dan tim tambahan untuk memastikan sistem dapat berjalan sebagai mana mestinya
  • Additional services cost, berbeda halnya dalam Monolithic dimana setiap request dari pengguna akan langsung diproses oleh aplikasi yang bersangkutan, dalam Microservices, terdapat satu layer tambahan, yaitu Gateway yang menjadi portal awal sebelum request diteruskan ke modul terkait.

When to use Microservices?

Kita telah berdiskusi mengenai Monolithic dan Microservices. Kita juga telah mengetahui beberapa poin permasalahan yang muncul dalam Monolithic dan bagaimana Microservices mengatasi hal tersebut. Dilansir dari Dzone, In a nutshell, gunakan Microservices ketika dibutuhkan:

  • Independently develop and deploy services
  • Speed and agility
  • Better code quality
  • Code created/organized around business functionality
  • Increased productivity
  • Easier to scale
  • Freedom (in a way) to choose the implementation technology/language

Jadi sekian diskusi kita kali ini, comments are welcome, let's discuss more!
Thanks for reading, sampai jumpa di post berikutnya!

Referensi
https://medium.com/koderlabs/introduction-to-monolithic-architecture-and-microservices-architecture-b211a5955c63
https://dzone.com/articles/why-microservices

Image sources:
https://cdn-images-1.medium.com/max/1200/1*-4JDjKBimQK6mnn4ney_QQ.png
http://www.elblender.com/wordpress/wp-content/uploads/2017/01/Brownfield-migration-done.png
https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTjaq_H6b7MGKsB5WlC0iBcW3JcLO00UcRGr-kpdoCxIvrTIA89

Written by gpamungkas on May 17 2019, 4:03 PM.
User
Projects
None
Subscribers
None