Microservice
Microservice menjadi salah satu arsitektur yang banyak didiskusikan oleh para developer pada saat ini, Alasannya karena microservice dapat membantu developer dalam membuat aplikasi yang high performance, scalable, reliable dan secure.
Jadi apa itu Microservice ?
Microservices berarti membagi aplikasi menjadi layanan yang lebih kecil dan saling terhubung tidak seperti aplikasi monolitik. Monolitik sendiri merupakan sebuah arsitektur dimana dalam pembuatan aplikasi. semua komponen menjadi satu kesatuan, dalam hal ini satu kesatuan berarti menyatukan antara front-end dan backend dalam satu aplikasi yang sama.
Contoh penggunaan microservice ini misal dalam sebuah Aplikasi online shop yang terdiri dari beberapa fitur, ada fitur untuk menampikan produk, menambah ke keranjang, dan pembayaran. Fitur-fitur tersebut dibangun dalam service yang berbeda atau aplikasi yang berbeda dan database yang berbeda pula. Dalam penggunaannya service-service tersebut menyediakan endpoint yang akan di hit dari setiap aksi pada client-side.
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
- Aplikasi scalabale, secure dan reliable.
- Setiap service berdiri sendiri.
- Maintence-nya lebih mudah.
- Tidak ada hambatan dalam menggunakan teknologi baru.
- Setiap tim developer dapat mengembangkan setiap servicenya tanpa ada mengganggu services yang lain.
Kekurangan Microservice
- Ketika satu entity pada database berubah maka setiap entity yang sama di setiap database service harus diubah.
- Untuk beberapa kasus , sulit untuk menerapkan perubahan services, maka dari itu diperlukan perancangan yang matang.
- 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.
- Perlu automation yang tinggi dalam melakukan deployment.
Mengapa Microservice itu Penting ?
- 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
Microservice 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 microservice 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.
Membangun Microservice
- Mulailah dengan Monolithic
Microservice memang akan menambah overhead dan kompleksitas 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 Anda.
Microservice bekerja dengan baik ketika Anda memiliki pemahaman yang baik tentang peran berbagai layanan yang dibutuhkan oleh sistem Anda. Microservices akan jauh lebih sulit untuk ditangani jika persyaratan inti suatu aplikasi berlum terpenuhi.
Cobalah sebisa mungkin untuk memiliki modul yang jelas sehingga Anda dapat mengekstraknya nanti dari monolith. Anda juga dapat memulai dengan memisahkan logika dari UI web Anda dan memastikan bahwa logika itu berinteraksi dengan backend Anda melalui RESTfull API via HTTP. Ini akan membuat transisi ke layanan microservices lebih mudah nantinya ketika Anda mulai memindahkan beberapa resources API ke layanan yang berbeda.
- Atur tim Anda dengan cara yang tepat
Sampai sekarang sepertinya membangun microservices sebagian besar adalah urusan teknis. Anda 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 Anda harus merestrukturisasi cara mengorganisasi tim anda.
Anda 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 anda dapatkan. Pertama-tama developer Anda akan mendapatkan pemahaman yang lebih baik tentang dampak dari kode mereka dalam produksi – ini akan membantu memproduksi rilis yang lebih baik dan mengurangi risiko bagi pelanggan Anda. Yang kedua, deplyoment yang Anda 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 Microservice
Ketika Anda telah mengidentifikasi batas-batas layanan Anda dan ketika Anda sudah tahu bagaimana Anda dapat mengubah tim Anda menjadi lebih vertikal dalam hal kompetensi, Anda dapat mulai membagi monolithic Anda untuk membangun microservices. Berikut beberapa poin yang bisa menjadi pertimbangan Anda.
Buat komunikasi antara layanan dengan lebih sederhana dengan menggunakan RESTful API
Jika Anda sudah menggunakan RESTful API, sekarang adalah saat yang tepat untuk mengadopsinya dalam sistem.
Bagilah struktur data Anda
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.
Bangun arsitektur microservice yang siap untuk menghadapi “failure”
Dengan arsitektur microservice memang akan membuat proses “developing & maintaining” suatu bisnis menjadi lebih mudah. Namun semuanya menjadi lebih rumit ketika Anda melihat layanan secara keseluruhan dan bagaimana setiap layanan tersebut berinteraksi secara menyeluruh. Sistem Anda sekarang didistribusikan dengan “multiple points of failure” dan Anda harus bisa memenuhi hal itu. Proses pemulihan dari “failure” juga bisa menjadi rumit karena Anda perlu memastikan bahwa layanan yang telah pulih dan berjalan tidak dibanjiri oleh pesan yang terpending. Jadi pastikan bahwa desain Anda dibangun untuk mengantisipasi “failure” sejak awal.
Kesimpulannya microservice ini membagi layanan ke bagian yang lebih kecil, dimana layanan-layanan tersebut dapat terhubung satu sama lain bahkan dengan teknologi yang berbeda.
Comments
Post a Comment