CategoriesInternetProgramming

Kapan waktu yang tepat Menggunakan Microservices?

Apa itu Microservices?

Microservices adalah arsitektur yang digunakan untuk mengembangkan system yang dibagi menjadi bagian-bagian kecil / modular dan memungkinkan teknologi yang digunakan berbeda sesuai kebutuhan dan kemudahan dalam satu system. Di dalam microservices memungkinkan setiap fitur dikembangkan dengan teknologi yang berbeda baik dari skema Database ataupun Bahasa Pemrograman. Microservices sering digunakan oleh pada system produk yang memiliki skala yang besar, kompleksitas dan  transfer rate yg sangat besar.

Diketahui aplikasi yang menggunakan Microservices Gojek, Grab, Tokopedia, Shopee, Paypal , Twitter, Netflix dan lain lain.

Figure 1. Arsitektur Microservices (microservice.io)

Pada Figure 1 menunjukan proses sederhana Microservices dimana setiap modul memiliki schema Dtabase yang berbeda dan semuanya terhubung dengan API GATEWAY, mulai dari Account Service, Inventory Service dan Shipping Service memiliki modul tersendiri sehingga setiap masing modul sangat memungkinkan memiliki Enviroment yang berbeda misalkan untuk Inventory Service dikarenakan butuh flexible dalam reporting data maka bisa menggunakan NodeJS dan Mongo DB, kemudian untuk account service karena sederhana dan tidak akan mempengaruhi flexibilitas daam reporting maka bisa menggunakan MYSQL.

 

Kemudian bagaimana apabila dari 3 modul tersebut butuh relasi misalkan Account service ke Inventory Service. Nah disini ada yg namanya API GATEWAY yang menghubungkan modul-modul tersebut sehingga teintegrasi

Cara membangun sebuah system dengan arsitektur microservices bisa dioptimalkan dengan menggunakan DevOps (Development and Operation) dan CI/CD (Continuous Integration and Continuous Delivery).

Sebenarnya ada cara sederhanadalam membangun system yang sering digunakan dalam system sekala kecil atau system yg tidak memerlukan kompleksitas yaitu arsitektur Monolithic.

Apa itu Monolithic?

Monolithic adalah arsitektur system yang di deploy dalam satu system kesatuan sebagai contoh semua services di buat dalam 1 server baik itu UI, logic dan Access layer. sehingga untuk system atau aplikasi yg sederhana atau awal pembentukan aplikasi yg belum memiliki transfer rate dan mau terdeploy dengan cepat bisa menggunakan Arsitektur Monolithic, namun pada saat ada system down maka akan terdampak secara keseluruhan, seperti contoh apabila load query MYSQL pada salah satu report berat maka akan mempengaruhi semuanya.
 

Bagaimana Implementasi Microservices?

Pertama yang harus diketahui adalah
a. Tools untuk Orchestration Microservices.

Apa itu Orchestration? Orchestration adalah adakah Tools untuk memanage Task dan Workflow suatu system seperti “clustered applications, multiple datacenters, public, private, hybrid clouds, and applications with complex dependencies”. (redhat.com). Microservices memerlukan Orchestration karena pasti akan ada multiple datacenter, server dan lain lain secara termodule. Contoh Tools Orchertration yang sering dipakai adalah:
1. Kubernetas (Youtube Tutorial)
2. Docker(Youtube Tutorial)
3. RedHat Openshift (Youtube Tutorial)

Dengan menggunakan tool tersebt kita bisa membagi Task komplek dalam service yang berbeda tanpa mempengaruhi system satu sama lain. 

Dalam satu aplikasi atau system bagaimana Microservices bisa saling tekoneksi untuk setiap service untk menadi sebuah kesatuan palikasi, jawabannya adalah dengan menggunakan API Pattern (API Gatway). 

b. API Gatewway Pattern
 
Figure 2 API Gateway (https://microservices.io/patterns/apigateway.html)

Secara singkat API Gateway adalah jembatan penghubung dari berbagai macam service dalam satu single End Point dan bisa digunakan untuk Client service. Seperti Figure 2 yang merupakan penggunaan API Gateway  dimana ada single Entry Point dimana yg merupakan API Gateway yang menghubungkan antar beberapa REST Service menjadi satu untuk di berikan ke Client dalam satu jenis Service.Untuk lebih lengkapnya bisa dipelajari di : microservices.io

Kemudian Muncul pertanyaan Lagi kan ada beberapa service dan keungkinan memiliki schema DB tersendiri data managementnya bagaiana ya misalkan antara satu service membutuh reporting dan membutuhkan service lain? Jawabannya ada dengan menggunakan salah satunya data management Database per Service Pattern.

c. Database per Services Pattern.
Database per Service adalah data management untuk  Microservices yang digunakan untuk menghubungkan berbagai service DB dengan menggunakan API Service. 
 
Figure 3 Database per Service (https://microservices.io/patterns/data/database-per-service.html)

Dalam microservices masing masing database tidak boleh terhubung secara langsung namun haru smenggunakan service API dimana Database, Schema dan Table dibuat secara private sebagai services API.

Figure  3 Database per Service dimana Order table dan Customer table berada di module service yang berbeda, dikarenakan Order table membutuh kan Customer ID sehingga harus memanggil API Customer Service untuk mendapatkan CUSTOMER_ID. 

Implementasi Data Management Microservice masih ada beberapa Patern untuk lebih komplek seperti:

  1. Saga Pattern: untuk implementasi Transaksi service
  2. API Composition dan Command Query Responsibility Segregation (CQRS) : Untuk implementasi Quary service

Kapan waktu yang tepat Menggunakan Microservices?

Dari gambaran mengenai Microservices diatas seharusnya kita bisa menyimpulkan kalau arsitektur ini cukup rumit namun memudahkan untuk aplikasi / system yang memiliki kompleksitas yang tinggi. 

Pada dasarnya Tolak ukur kapan Microservices bisa dilihat dari kebutuhan aplikasi itu sendiri apabila aplikasi tersebut memiliki kriteria sebagai berikut maka perlu Anda pertimbangkan untuk menggunakan Arsitektur Microservices:

1. Sering terjadi kendala atau permasalahan sistem dikarenakan Transfer rate yang tinggi dan menurunnya performa Server.

2. Membutuhkan pengembangan sesuai kebutuhan seperti DB, Bahasa perograman dan stack lain sesuai kebutuhan untuk setiap modul secara terpisah sehingga membutuhkan Team Dev yang banyak pula.

3. Memiliki skala bisnis yang Besar seperti E-Commerce sehingga dibutuhkan realibilitas yang tinggi dan securoty yg baik.

4. Project atau Produk memiliki nilai jangka Panjang.

 

Pada dasarnya Arsitektur suatu aplikasi digunakan sesuai kebutuhan dan bisa digunakan dengan baik pada porsinya, microservice bisa digunakan sebagaimana mestinya apabila tepat pada flow system yg tepat sebaliknya microservices juga akan mempersulit jalannya flow sistem apabila tidak disesuaikan dengan porsinya.

 

Published by Dhendik Dwi Prasetyo

Leave a Reply

Your email address will not be published. Required fields are marked *