Apa itu Microservice
Keuntungan menggunakan microservice
Kerugian menggunakan microservice
Fitur menggunakan microservices
Microservice atau dikenal juga sebagai (microservice architecture) adalah architectural style yang menyusun aplikasi sebagai kumpulan dari beberapa service.
Microservice architecture memungkinkan untuk men-deliver aplikasi yang besar dan komplek dengan lebih cepat, lebih sering dan lebih stabil.
Dilihat dari viewpoint teknologi, setiap service memiliki beberapa karakteristik, diantaranya:
- Dipisahkan berdasarkan business capabillities
- Di-develop secara independent
- Di-deploy secara independent
- Setiap service berkomunikasi menggunakan network, misalkan (HTTP) melalui API (sync) atau melalui message queues (async)
Pemodelan microservices didasarkan pada business domain, setiap service bersifat mandiri dan mengimplementasikan single business capability (Sahiti, 2019).
Sebagai contoh mari kita lihat aplikasi e-commerce. Secara umum aplikasi e-commerce mempunyai fitur seperti dibawah ini:
- Account management
- Product catalog
- Charting
- Chat
- Payment
- Product Review
Pada konvensional arsitektur (atau lebih dikenal dengan nama monolithic architecture), semua fitur di atas akan digabungkan dalam satu codebase yang sama
Dalam microservices architecture, setiap fitur tersebut akan dipisahkan dan menjadi satu service yang mengimplementasikan single business capability
Keuntungan menggunakan microservice
- Independent Development, setiap service dapat dengan mudah untuk didevelop berdasarkan pada fungsionalitas dari business domain yang akan di handle nya
- Independent Deployment, setiap service dapat di deploy dengan mudah dan independent, berdasarkan pada business domainnya
- Fault Isolation, Jika pada suatu saat terjadi kesalahan (error) pada satu service, maka service lainnya tidak akan ikut error
- Mixed Technology Stack, setiap service dapat di-develop dan di-deploy dengan menggunakan bahasa pemrograman dan technology stack yang berbeda, sesuai dengan kebutuhannya
- Granular Scalling, setiap service dapat di scale sesuai kebutuhannya, misalkan pada masa akhir - akhir Ramadhan biasanya terjadi lonjakan user yang belanja, maka service-service yang perlu di-scale adalah Product Catalog, Charting, dan Payment
- Simplicity, setiap service hanya menangani satu kebutuhan business saja, sehingga code yang ditulis menjadi lebih sedikit, dependency code menjadi lebih sedikit dan probability of bugs menjadi lebih rendah
- More freedom and fewer dependency, tim yang men-develop service dapat fokus dan bebas untuk melakukan penambahan fitur atau enchance fungsionalitas tanpa harus khawatir akan membuat service lain menjadi error, selama mengikuti kesepakatan interface yang sudah disepakati
- Data serregation dan decentralization, setiap service memiliki data tersendiri dan tidak melakukan share data secara langsung dengan service lainnya
Kerugian menggunakan microservice
- Troubleshooting complexity, microservice menyediakan semua kapabilitas dan fungsionalitas melalui komunikasi inter-microservice, yang meningkatkan potensi points of failure
- Increase latency, intraprocess communication antara microservice menjadi lebih lambat ketika dibandingkan dengan intraprocess yang terjadi pada monolithic application
- Operasional complexity, dengan puluhan, ratusan atau mungkin sampai ribuan mircoservice dalam real-world application, operation tim harus menghadapi complex infrastructure, deployment, monitoring, avaibility, backup dan management system
- Version control, karena microservices-based application ada kemungkinan untuk memiliki ribuan microservices, versioning dan management menjadi sedikit lebih komplek
Fitur menggunakan microservices
- Decoupling, setiap service diantara keseluruhan application memiliki sofat yang terpisah satu sama lain, sehingga keseluruhan aplikasi dapat dengan mudah di-develop, diubah dan di-scale
- Componentization, setiap service didesain sebagai komponen independen sehingga dapat dengan mudah diganti dan ditingkatkan
- Business Capabilities, microservices lebih simple dan dapat single business capability
- Autonomy, setiap developer dan tim microservices dapat bekerja secara independen, sehingga bisa meningkatkan kecepatan penge,bangan aplikasi secara keseluruhan
- Continous Delivery, memungkinkan lebih sering untuk merelease fitur baru atau meningkatkan fungsionalitas
- Responsibility, microservices tidak fokus pada aplikasi sebagai projek, tapi melihat aplikasi sebagai produk yang menjadi tanggung jawabnya
- Decentralized Governance, microservice fokus pada penggunaan right tool for right job. Setiap developer dan tim memiliki kebebasan untuk memilih best useful tools untuk menyelesaikan masalah yang mereka hadapi
- Agility, microservice mendukung agile development. Setiap fitur baru dapat dengan mudah dan cepat di develop, deploy dan deliver