Seputar Microservice dan Container

Arsitektur Microservice

Microservice dan container tak pernah lepas dari dunia para developer, karena dengan microservice dan container mempermudah pekerjaan para developer dalam membangun sebuah aplikasi. Microservice dan container saling berhubungan, terus apa bedanya dari kedua hal tersebut?. Postingan ini maerupakan kelanjutan postingan saya yang dulu tentang Berkenalan dengan Docker dan postingan blog saya kemarin Mengenal DevOps Engineering.

Apa itu Microservice?

Microservice adalah sebuah desain arsitektural untuk membangunn sebuah aplikasi terdistribusi. Dengan microservice, aplikasi dibagi menjadi beberapa komponen, sehingga lebih independen, mempunyai ketahanan, skalabilitas, lifecycle automation dan terbagi menjadi beberapa bagian. Dengan pembagian tersebut, jika ada pembaruan salah satu komponen tidak mengganggu layanan lain yang sedang berjalan. Selain itu, dengan pembagian layanan ini kemacetan saat pengaksesan database menjadi berkurang dan kemampuan bisnis menjadi meningkat.

Contoh Microservice

Kehidupan sehari-hari kita tidak pernah lepas dari yang namanya Ojek Online (Ojol), coba lebih perhatikan aplikasi tersebut. Dalam aplikasi tersebut kalau dilihat lebih detail lagi trbagi menjadi 5 bagian, yaitu manajemen pengemudi, manajemen penumpang, manajemen perjalanan, manajemen pembayaran dan billing. Dengan begini, apabila ada error disalahsatu bagian misalnya pembayaran tidak begitu mempengaruhi bagian lain dan mempermudah developer memperbaiki bagian tersebut tanpa mengganggu bagian yang lain.

Apa itu Container?

Container adalah sebuah cara untuk berpindah antar environment dan berjalan secara independen dengan efisien, ringan dan standar aplikasi. Semua yang diperlukan untuk menjalankan aplikasi dikemas dalam kontainer: kode, runtime, system tools, libraries dan dependencies kecuali untuk sistem operasi bersama di server). Jadi, microservice itu merujuk pada sebuah arsitektur dalam pengembangan aplikasi berdasarkan fungsinya. Sedangkan container berfungsi sebagai tool atau platform untuk mendeploy, mengembangkan dan mengatur microservice. Meski microservice dapat berjalan dalam sebuah container dan container adalah cara terbaik untuk mengembangkan dan menerapkan microservice, container tidak harus digunakan untuk microservice.

Tipe Container

Container terbagi menjadi 2 tipe, yaitu:

  1. Stateless Microservice
    Tipe ini tidak menyimpan data, karena semua data yang diperlukan untuk permintaan tersebut hilang saat permintaan selesai. Stateless container memungkinkan pengguna menggunakan penyimpanan terbatas, tetapi akan hilang lagi saat container dimuat ulang.
  2. Stateful Microservce
    Stateful Microservice ini berbeda dengan Stateless Microservice, Stateful Microservice kita bisa menyimpan data dengan membaca dan menulis data ke dalam database, semua data tetap tersimpan walau container dimuat ulang. Tetapi, stateful microservice biasanya tidak berbagi layanan database dengan microservice lainnya.

Arsitektur Monolitik atau Arsitektur Microservice?

Sekarang coba kita bandingkan antara arsitektur monolitik dengan arsitektur microservice. Arsitektur monolitik memiliki siklus hidup yang panjang, jarang diperbarui dan apabila terjadi perubahan akan mempengaruhi keseluruhan aplikasi, dan hal ini masih digunakan oleh beberapa orang. Bayangkan saja, jika ada penambahan fitur kita harus mengkonfigurasi ulang semua komponen yang ada dan ditambahkan sampai dengan keamanan baru. Arsitektur ini identik dengan aplikasi tunggal yang terintegrasi, aplikasi terdapat pada satu server atau VM saja, pembaruan fitur pada aplikasi memerlukan konfigurasi ulang semua aplikasi, layanan jaringan berbasis perangkat keras dan dikonfigurasi khusus untuk server.

Sedangkan arsitektur microservice sangat berbeda, karena semua service dibuat secara individu dan dan digunakan secara terpisah. Dengan begini kita dapat melakukan penskalaan otomatis berdasarkan kebutuhan bisnis tertentu. Container dan microservice perlu penyimbangan bebean yang fleksibel dan elastis, hal ini karena sifat beban kerja kontainer yang sangat transien dan kebutuhan penskalaan yang cepat tanpa memengaruhi bagian lain dari aplikasi.

Deployment Microservice

Dalam arsitektur modern microservice, penerapan microservice berperan penting dalam keefektifan dan kehandalan infrastruktur aplikasi. Dalam penerapan microservice ada beberapa strategi yang harus dipertimbangkan, antara lain:

  1. Kemampuan untuk berputar ke atas maupun ke bawah secara independen dari layanan microservice lainnya.
  2. Skalabilitas di setiap tingkat micorservice.
  3. Kegagalan pada salah satu layanan microservice tidak mengganggu microservoce lainnya.

Dari pedoman tersebut, Docker bisa melakukan penerapan microservice dengan menggunakan langkah-langkah berikut:

  1. Mengemas microservice sebagai image container.
  2. Menerapkan semua instance service sebagai container.
  3. Scale based pada setiap perubahan jumlah instance container.

Untuk membantu memanajemen Docker dalam microservice, kita bisa menggunakan Kubernetes karena Kubernetes salah satu software untuk membangun dan menerapkan sistem terdistribusi yang andal dan terukur. Selain Kubernetes ada juga Red Hat OpenShift namun bersifat komersial.

Keamanan Microservice

Dalam sebuah aplikasi pasti diperlukan sebuah keamanan, dalam pengamanan tersebut microservice menawarkan beberapa keamanan. Seperti:

  1. Model keamanan zero trust dan enkripsi
  2. Distribusi WAF untuk keamanan aplikasi
  3. SSO untuk autentikasi dan otorisasi pada level enterprise

Observabilitas Microservice

Observabilitas dalam microservice sangat penting karena sebagian besar perusahaan mulai bertahap pindah dari arsitektur monolitik ke arsitektur microservice. Saat perpindahan inilah pasti ada beberapa aplikasi yang belum sepenuhnya bisa beralih ke microservice dan masih menggunakan monolitik. Oleh sebab itu, observabilitas microservice sebagai kunci untuk memahami arsitektur yang rumit dan akar penyebab masalah saat kegagalan terjadi. Observabilitas microservice menawarkan:

  1. Aplikasi yang realtime dan memantau kinerja container dengan tracing
  2. Analisis log koneksi dengan big data driven
  3. Berbasis machine learining dan analisis kesehatan aplikasi.

Mungkin tulisan seperti ini di Google masih banyak, tapi maksud dari menulis psotingan ini adalah untuk sebagai pencatat digital apa yang sudah saya pelajari dan berbagi apa yang sudah saya pelajari dalam bentuk tulisan. Nah, apabila ada kesalahan dalam pemahaman saya, bisa mengkoreksi dengan menulisnya di kolom komentar dan akan segera saya update tulisan agar lebih baik.

Referensi Tulisan dan Gambar:

Microservice Architecture
What are microservice and containers
Sesi Q&A Microservice
Container & Microservice

Share This Post

Leave a Comment

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