2.08.2017

Pengenalan Microservices


Pertama kali saya mendengar istilah Microservices adalah ketika berdiskusi tentang bagaimana arsitektur sistem itu seharusnya dibuat. Dan alhamdulillah, beberapa hari dari diskusi itu, muncul kebutuhan diperusahaan tempat saya bekerja untuk mencoba membuat sistem dengan konsep Microservices, dan saya pun diberi kesempatan untuk eksplorasi lebih jauh tentang itu.

Setelah sekian lama tidak menulis diblog, saya pikir ini topik yang bagus untuk ditulis. Karena dengan menulis, apa yang kita pelajari akan lebih mudah diingat.

Baca juga Seberapa Kecil Microservices yang Harus Dibuat?

Microservices


Microservices adalah sebuah service dimana service tersebut difokuskan untuk fungsi tertentu. Kumpulan service-service ini bila saling berkomunikasi dapat menjadi sebuah sistem yang besar.

Dalam implementasinya, secara sederhana kita harus memecah aplikasi yang ingin kita buat secara spesifik/rinci dari sisi fungsionalitasnya. Setiap fungsi harus mampu bekerja secara independent, dan fungsi-fungsi tersebut dapat dibangun menggunakan teknologi yang berbeda-beda sesuai dengan kebutuhan. Sehingga sangat memungkinkan akan terdapat banyak teknologi dalam satu aplikasi besar.

Sebagai contoh, saya akan coba mengambil diagram yang saya dapatkan di situs nginx.com.

Diagram Contoh Aplikasi Taxi Online
Pada diagram tersebut, terlihat jelas bahwa setiap fungsi yang ada pada aplikasi ini dilakukan oleh microservices-nya sendiri. Selain itu, aplikasi Web dapat dibagi menjadi satu set aplikasi web yang sederhana, yaitu aplikasi web untuk Passenger/Penumpang dan Driver/Pengemudi. Hal ini dapat memudahkan dalam mengembangkan 'user experience' aplikasi yang berbeda untuk penumpang dan pengemudi.

Setiap backend difasilitasi oleh REST API dan setiap service dapat saling berkomunikasi melalui REST API-nya masing-masing. Sebagai contoh, misalnya Driver Management menggunakan REST-API-nya Notification untuk mengirimkan daftar pengemudi yang available untuk sebuah perjalanan.


Manfaat Microservices


Arsitektur Microservices memiliki beberapa manfaat, yang pertama adalah Arsitektur Microservices dapat menurunkan tingkat kompleksitas suatu sistem. Dengan membagi-bagi setiap fungsi secara spesifik, kita sebagai pengembang dapat fokus kepada fungsi-fungsi spesifik tersebut, atau dengan kata lain, kita dapat memperkecil scope yang kita kerjakan.

Kedua, developer akan lebih fleksibel dalam menentukan tools yang lebih tepat untuk digunakan oleh suatu microservice.

Ketiga, pembagian tim atau team splitting akan lebih mudah. Satu tim akan fokus terhadap satu microservice, setiap tim tidak berbagi source code dengan tim lain, dan hanya terikat oleh interface yang didefinisikan di dalam service-service tersebut.

Keempat, microservices memungkinkan pembedaan profil satu service dengan service lainnya, terutama yang berhubungan dengan scaling up.

Masih banyak manfaat-manfaat lain yang tidak disebutkan, tetapi kurang lebih itu manfaat utama dari Arsitektur Microservices. Semoga bermanfaat.

Baca juga Seberapa Kecil Microservices yang Harus Dibuat?

Sumber bacaan:
- https://www.nginx.com/blog/introduction-to-microservices/
- https://indosystem.com/blog/microservices-konsep-dan-implementasi/
- http://www.geekyblogger.com/2014/07/tentang-microservices.html

3 comments:

  1. Kalau security enaknya dibuat microservices juga atau satu instance tunggal yg mencakup semua microservices yah?

    ReplyDelete
    Replies
    1. Menurut saya sih, security itu salah satu fungsionalitas yang spesifik, jadi kayaknya dibuat satu microservice lagi khusus untuk menangani security/keamanan..

      CMIIW

      Delete
    2. *Fungsionalitas = Fungsi, sorry typo :D

      Delete