Pengertian Microservices

Salah satu pola arsitektur yang paling banyak didiskusikan oleh penggiat IT di Indonesia adalah Microservices. Nah, sudahkah kita tahu apa itu Microservices? Bagaimana struktur arsitekturnya? Apa keuntungan menggunakan Microservices? Yap, kali ini kita akan membahas tentang pengertian dan hal lain yang berkaitan tentang Microservices. Langsung saja baca artikel yang sudah ada di bawah, yuk!

Pengertian Microservices

Pengertian Microservices

Microservices berarti membagi aplikasi menjadi layanan yang lebih kecil dan saling terhubung tidak seperti aplikasi monolitik.

Setiap microservice merupakan aplikasi kecil yang memiliki arsitektur heksagonal sendiri yang terdiri dari logika beserta berbagai adapternya. Baca Juga: Apa itu Analisis SWOT?

Pola arsitektur Microservice secara signifikan memengaruhi hubungan antara aplikasi dan database. Di dalam microservice, masing-masing services memiliki skema database tersendiri. Selain itu, services dapat menggunakan jenis database dan bahasa pemrograman yang paling sesuai dengan kebutuhannya.

Di satu sisi, pendekatan ini bertentangan dengan gagasan model data enterprise-wide. Selain itu, sering kali menghasilkan duplikasi beberapa data. Namun, memiliki skema database per service sangat penting jika ingin mendapatkan keuntungan dari layanan microservice.

Intinya microservice adalah metode dengan membagi service ke bagian yang lebih kecil dimana service-service tersebut saling berhungan satu sama lain. Selain itu, dalam setiap services yang dibuat bisa menggunakan teknologi yang berbebeda.

Karakteristik Microservices
Aplikasi scalable, secure dan reliable
Setiap layanan memiliki infrastruktur sendiri.
Karena setiap layanan memiliki infrastruktur sendiri, bisa dengan mudah membuat aplikasi tanpa memikirkan hubungan atau ketergantungan module dengan layanan yang lain.
Ada kemungkinan komunikasi antarmodule mengalami kegagalan. Untuk itu pengguna harus selalu mempersiapkan cara handlenya.
Proses update aplikasi hanya melingkupi layanan yang terkait.
Codenya berbasis layanan.
Proses Scalingnya bisa menggunakan beberapa metode, scaling up dan scaling side.

Kelebihan Microservice

Berdasarkan pengertian tentang microservice yang sudah kita baca di atas, dapat kita simpulkan bahwa microservice memiliki kelebihan sebagai berikut:

  1. Aplikasi scalabale, secure dan reliable.
  2. Setiap service berdiri sendiri.
  3. Maintence-nya lebih mudah.
  4. Tidak ada hambatan dalam menggunakan teknologi baru.
  5. Setiap tim developer dapat mengembangkan setiap services=-nya tanpa ada mengganggu services yang lain.

Kekurangan Microservice

Selain memiliki banyak kelebihan, tentu microservice juga memiliki beberapa kekurangan, di antaranya adalah:

  1. Ketika satu entity pada database berubah maka setiap entity yang sama di setiap database service harus diubah
  2. Untuk beberapa kasus , sulit untuk menerapkan perubahan services, maka dari itu diperlukan perancangan yang matang.
  3. Deployment yang kompleks, perlu konfigurasi untuk menjalankan setiap services karena memiliki runtime yang berbeda, tidak seperti aplikasi monolitik yang memiliki sistem tinggal upload , deploy dan beres.
  4. Perlu automation yang tinggi dalam melakukan deployment.

Mengapa Microservices Penting

Yap, mungkin kita masih bingung mengapa microservice ini jadi penting. Yuk simak lagi penjelasan yang ada di bawah ini!

Pengertian Microservices

  • Tim dapat lebih responsif terhadap kebutuhan pelanggan

Perusahaan yang menggunakan arsitektur microservices dapat dengan cepat mengirimkan kapabilitas ketika pelanggan membutuhkan.

  • Ada throughput tim software yang lebih besar

Microservices dibangun di atas prinsip-prinsip Agile dan DevOps, yang membantu tim-tim software untuk berjalan secara paralel sementara iterasi secara cepat pada kemampuan diskrit.

  • Organisasi meningkatkan skalabilitas dan keandalan sistem

Arsitektur microservices yang sukses terus berjalan. Hal ini sangat bergantung pada otomatisasi yang dapat diulang, mendukung skala layanan, dan menggunakan pola yang dirancang untuk menjaga sistem tetap berjalan bahkan ketika komponen individual gagal.

Hal Penting Dalam Membangun Microservices

Berikut ini adalah beberapa hal penting yang harus kita ketahui dalam membangun microservices:

  • Mulai Dengan Monolitchic
Microservices memang akan menambah overhead dan membuat beberapa hal menjadi lebih kompleks untuk dikelola. Untuk alasan ini, akan jauh lebih murah jika proyek-proyek baru untuk menyimpan semua kode dan logika dalam “codebase” tunggal karena akan lebih mudah untuk memindahkan batas dari berbagai modul aplikasi kita.

Microservices bekerja dengan baik ketika kita memiliki pemahaman yang baik tentang peran berbagai layanan yang dibutuhkan oleh sistem yang kita miliki. Microservices akan jauh lebih sulit untuk ditangani jika persyaratan inti suatu aplikasi belum terpenuhi.

Cobalah sebisa mungkin untuk memiliki modul yang jelas sehingga kita dapat mengekstraknya nanti dari monolith. Kita juga dapat memulai dengan memisahkan logika dari UI web dan memastikan bahwa logika itu berinteraksi dengan backend melalui RESTful API via HTTP.

Hal ini akan membuat transisi ke layanan microservices lebih mudah nantinya ketika kita mulai memindahkan beberapa resources API ke layanan yang berbeda.

  • Atur Tim Dengan Tepat
Sampai sekarang sepertinya membangun microservices sebagian besar adalah urusan teknis. Kita harus memecah “codebase” dalam beberapa layanan, menerapkan pola yang tepat ketika terjadi “fail” dan recover dari masalah network, menangani masalah konsistensi data dll.

Akan ada banyak konsep baru untuk dipahami tetapi satu hal yang tidak boleh diabaikan adalah bahwa kita harus merestrukturisasi cara mengorganisasi tim.

Pengertian Microservices

Kita harus membuat tim yang lebih kecil namun memiliki semua kompetensi yang diperlukan untuk mengembangkan dan mempertahankan layanannya, contohnya dengan satu team untuk satu layanan. Dengan cara ini, ada beberapa manfaat yang bisa kita dapatkan.

Pertama-tama developer kita akan mendapatkan pemahaman yang lebih baik tentang dampak dari kode mereka dalam produksi, hal ini akan membantu memproduksi rilis yang lebih baik dan mengurangi risiko bagi pelanggan yang kita miliki.

Yang kedua, deplyoment yang kita lakukan akan menjadi kebiasaan untuk setiap tim karena mereka akan bekerja sama dalam melakukan perbaikan terhadap kode maupun dalam proses otomatisasi “deployment pipeline”. 

  • Pisahkan Monolithic Untuk Membangun Arsitektur Microservices

Ketika kita telah mengidentifikasi batas-batas layanan yang kita miliki dan ketika kita sudah tahu bagaimana kita dapat mengubah tim kita menjadi lebih vertikal dalam hal kompetensi, kita dapat mulai membagi monolithic untuk membangun microservices. Berikut beberapa poin yang bisa menjadi pertimbangan bagi kita:

1. Buat komunikasi antara layanan dengan lebih sederhana dengan menggunakan RESTful API

Jika kita sudah menggunakan RESTful API, sekarang adalah saat yang tepat untuk mengadopsinya dalam sistem. Seperti yang pernah dijelaskan oleh Martin Fowler “smart endpoint and dumb pipes” yang artinya bahwa protokol komunikasi antara layanan haruslah dibuat sesederhana mungkin, hanya bertugas mentransmisikan data tanpa mengubahnya.

2. Bagilah struktur data 

Dalam monolithic sudah lumrah dalam menggunakan single database untuk berbagai macam keperluan. Namun dengan layanan microservices,  layanan dipisahkan, sehingga sebagai contoh, “invoices” masih dapat diakses bahkan jika sistem pemesanan mengalami “down”. Ini berarti bahwa setiap layanan akhirnya memiliki datastore sendiri untuk mempertahankan data yang dibutuhkan.

3. Bangun arsitektur microservices yang siap untuk menghadapi “failure”

Arsitektur microservices memang akan membuat proses “developing & maintaining” suatu bisnis menjadi lebih mudah. Namun semuanya menjadi lebih rumit ketika kita melihat layanan secara keseluruhan dan bagaimana setiap layanan tersebut berinteraksi secara menyeluruh.

Sistem yang kita miliki sekarang didistribusikan dengan “multiple points of failure” dan kita  harus bisa memenuhi hal itu. Proses pemulihan dari “failure” juga bisa menjadi rumit karena kita perlu memastikan bahwa layanan yang telah pulih dan berjalan tidak dibanjiri oleh pesan yang terpending. Jadi pastikan bahwa desain kita dibangun untuk mengantisipasi “failure” sejak awal.

Kesimpulan

Setelah membaca artikel di atas tentu kini kita jadi sedikit lebih paham tentang apa itu microservices lengkap dengan hal lain yang berkaitan dengannya yang juga sudah dijelaskan di dalam artikel di atas. Semoga apa yang sudah kita baca bisa bermanfaat untuk menambah wawasan, ya, sobat!

Add comment