Microservice Architecture Pattern

Ariadi Ahmad
4 min readJan 21, 2022

--

Halo Semua Kali Ini saya akan ngeshare tentang microservice pattern dan mungkin kalian butuh juga. kenapa saya menulis ini karena ini bagian dari kantor yaitu spike. jadi saya di suruh spike architecture microservice.makanya daripada jadi catatan buat saya saja, lebih baik saya bagiin aja.

Banyak hal di bawah yang akan saya jelaskan belum pernah saya coba juga. tapi akan sangat berguna apabila kita tau teorinya. jadi jika menghadapi suatu permasalahan minimal kita sudah tau key yang akan kita gunakan untuk mencari solusinya.

Microservice Pattern adalah sebuah mekanisme atau pola dalam menjalankan atau membangun sebuah microservice.

Decomposition Pattern

  1. Decomposition By Buisnees Capability yaitu suatu mekanisme menentukan service berdasarkan capability bisnis. jadi setiap service hanya bertanggung jawab dengan capability bisnisnya sendiri.

Referensi : https://microservices.io/patterns/decomposition/decompose-by-business-capability.html

  1. Decompose By Subdomain Menentukan service atau layanan berdasarkan sub domain. atau mengacu pada ruang aplikasi bisnis. contoh kita ingin membangun toko online. maka sub domainya, order, katalog atau sejenisnya.

Referensi : https://microservices.io/patterns/decomposition/decompose-by-subdomain.html

Clasifikasi Subdomain

  • Inti — pembeda utama untuk bisnis dan bagian paling berharga dari aplikasi
  • Pendukung — terkait dengan apa yang dilakukan bisnis tetapi bukan pembeda. Ini dapat dilaksanakan di rumah atau outsourcing.
  • Generik — tidak spesifik untuk bisnis dan idealnya diimplementasikan menggunakan perangkat lunak siap pakai

Database Service Pattern : yaitu sebuah mekanisme yang membuat sebuah service memiliki database tersendiri sesuai dengan kebutuhan.

Referensi : https://microservices.io/patterns/data/database-per-service.html

Kelebihan

  • Lousely Coupled. Jika terjadi perubahan struktur data di table tidak akan mempengaruhi service lain
  • Setiap service bisa memilih jenis database yang di butuhkan.

Problem

  • Menerapkan transaksi bisnis yang mencakup banyak layanan tidaklah mudah. Transaksi terdistribusi sebaiknya dihindari karena teorema CAP. Selain itu, banyak database modern (NoSQL) tidak mendukungnya.
  • Menerapkan kueri yang menggabungkan data yang sekarang ada di banyak basis data merupakan tantangan.
  • Kompleksitas mengelola beberapa database SQL dan NoSQL

Solution

  • Menggunakan SAGA Pattern
  • Api Gateway
  • CQRS

Api Gateway Pattern: Suatu Mekanisme untuk mengatasi bagaimana microservice saling terintegrasi satu sama lain.

Single Entry Point

Backend For Frontend

Benefit

  • Mengisolasi klient bagaimana aplikasi di partisi di sebuah microservice
  • Menyediakan API yang optimal untuk setiap klien
  • Mengurangi jumlah permintaan/pulang pergi. Misalnya, gateway API memungkinkan klien untuk mengambil data dari beberapa layanan dengan sekali perjalanan pulang pergi. Lebih sedikit permintaan juga berarti lebih sedikit overhead dan meningkatkan pengalaman pengguna. Gateway API sangat penting untuk aplikasi seluler.
  • Menyederhanakan klien dengan memindahkan logika untuk memanggil beberapa layanan dari klien ke gateway API
  • Menerjemahkan dari protokol API ramah-web publik “standar” ke protokol apa pun yang digunakan secara internal

Problem

  • Peningkatan kompleksitas — gateway API adalah bagian lain yang bergerak yang harus dikembangkan, disebarkan, dan dikelola
  • Peningkatan waktu respons karena lompatan jaringan tambahan melalui gateway API — namun, untuk sebagian besar aplikasi, biaya perjalanan pulang pergi ekstra tidak signifikan.

Client Side Discovery Yaitu suatu mekanisme client berkomunikasi dimana setiap service saling berhubungan dengan service yang lainya.

Service Side Discovery : Yaitu sebuah mekanisme untuk berkomunikasi dengan menggunakan perantara seperti load balancing untuk menghandle service. ketika membuat service yang baru dibuat hanya perlu mendaftarkanya di load balancing.

RPI Dan Messaging : Sebuah Protokol Komunikasi Dalam Microservice. Baik Itu berupa RPI dan Messages. Perbedaan paling mencolok dari RPI dan Messages adalah RPI bersifat syncronus dan Messages Bersifat Asyncronus. RPI juga bersifat request response.

Microservice chassis : Sebuah metode atau landasan di mana sebuah architecture mempunyai kerangka kerja tersendiri untuk mengefisiensikan waktu pengerjaan. seperti Gokit,Spring Boot Java, dan lain sebagainya.

Externalized Configuration : Suatu mekanisme dalam microservice di mana ketika kita membangun sebuah aplikasi kita bisa membangunya di berbagai envirotment tanpa harus merubah aplikasinya.

Service Test Component : Suatu mekanisme dimana setiap service harus mempunyai pengujian di servicenya dan dilakukan secara otomatis.

Benefit

  • Menguji layanan secara terpisah lebih mudah, lebih cepat, lebih andal, dan murah

Problem

  • Tes mungkin lulus tetapi aplikasi mungkin akan gagal dalam production

Service Integration Contract Test : Suatu mekanisme menguji automatis service yang saling terigtegrasi berperilaku sesuai degan ketentuan yang di inginkan.

Circuit Bracket : Suatu Mekanisme di mana apabila terjadi komunikasi antar service yang gagal dan telah memenuhi ambang batas kegagalan itu tidak mempengaruhi kinerja service yang lain. maka dari itu harus ada suatu mekanisme untuk menangani hal tersebut dianamakan circuit bracket.

Access Token : Suatu mekanisme dimana ketika ingin mengakses sebuah service perlu sebuah sistem pengamanan berupa authorization dan autentication.

Observability patterns :

  • Log Agregation : yaitu suatu mekanisme untuk melakukan pencatatan aktivitas dalam sebuah service berupa, error,warning, information and debug messages.
  • Aplication Metric : Yaitu suatu mekanisme untuk menghitung kinerja sebuah aplication

--

--