
Microservices adalah praktik software engineering yang populer dan modern. Prinsip microservices adalah membangun aplikasi dengan memisahkan komponen bisnis menjadi layanan kecil yang dapat digunakan dan dioperasikan secara independen satu sama lain. Pemisahan antara layanan bisa didefinisikan sebagai “service boundaries”.
“Service Boundaries” terkait erat dengan tuntutan bisnis dan batas hierarki suatu organisasi. Layanan tersebut dapat dikaitkan dengan pemisahan tim, budget, dan roadmap. Beberapa contoh “service boundaries” mungkin seperti proses pembayaran dan otentikasi pengguna. Microservices berbeda dari praktik pengembangan software lama di mana semua komponen digabungkan menjadi satu.
Ketahui lebih dalam lagi untuk keunggulan-keunggulan dari Microservices informasinya sekarang!![]()
3 HAL PENTING DALAM MEMBANGUN MICROSERVICES
Mulailah dengan Monolithic
Microservices 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.
Microservices 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 RESTful 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”. Martin Fowler bahkan pernah mengatakan “Any fool can write code that a computer can understand. Good programmers write code that humans can understand”
Pisahkan monolithic untuk membangun arsitektur Microservices
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. Seperti yang pernah dijelaskan oleh Martin Fowler “smart endpoint and dumb pipes” yang artinya bahwa protokol komunikasi antara layanan Anda haruslah dibuat sesederhana mungkin, hanya bertugas mentransmisikan data tanpa mengubahnya.
- 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 microservices yang siap untuk menghadapi “failure”
Dengan arsitektur microservices 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.
Microservices menjadi sangat popular dengan cepat dan secara luas diadopsi oleh banyak industri. Untuk project yang rumit, microservices menawarkan fleksibilitas bagi Anda dalam membangun dan mendeploy software. Microservices juga sangat membantu dalam mengindetifikasi dan memformulakan komponen bisnis dalam sistem Anda. Meskipun microservices masih terbilang baru, namun sangat menjanjikan dalam pengembangan aplikasi.
Untuk kebutuhan Container as a Service yang terpercaya, Anda bisa menggunakan layanan IaaS dari Datacomm Cloud Business dengan support dan lokasi Datacenter lokal, 24×7 NOC dan SOC monitoring.
Sumber referensi : Atlassian.com