Q n A Vascomm Webinar : Mengenal Arsitektur Microservices

25 Nov 2020 5 Minutes reading
Diantara beragam pola dan gaya arsitektur perangkat lunak (software architecture), microservice termasuk dalam kategori pola yang paling banyak dipakai oleh software developer. Microservice banyak diaplikasikan pada organisasi dan bisnis yang perlu kelincahan serta skalabilitas lebih besar. Di microservice, setiap fitur dibangun terpisah dan independen dari fitur lainnya. Fitur yang terpisah memungkinkan untuk dikembangkan secara individu tanpa berkaitan dengan seluruh codebase. Komunikasi antar service menggunakan HTTP rest atau message bus. Pola microservice sekilas terlihat lebih kompleks. Selain itu, developer juga perlu mengeluarkan usaha lebih besar untuk pengembangan software. Berbeda dengan monolith yang tiap fiturnya berkaitan erat dan saling mempengaruhi. Sehingga itu membuatnya lebih beresiko, proses update lebih rumit, integrasi lebih susah, dan peluang munculnya bugs lebih banyak. Mengenai mengapa dan bagaimana implementasi microservice untuk kebutuhan bisnis, semua disampaikan pada sesi Vascomm Webinar akhir bulan lalu, dengan tema ‘Tren IT di dunia kerja’. Di akhir sesi webinar, ada beberapa pertanyaan yang diajukan oleh peserta, seperti terangkum di bawah ini: Q1 : Untuk service yang menggunakan lumen, mana yang performanya lebih powerfull antara laravel dengan nodejs? Karena laravel/lumen dibangun menggunakan PHP yang mana merupakan synchronous language, maka NodeJS lebih diunggulkan. Alasannya karena NodeJS berbasis Javascript dengan konsep asynchronous, sehingga membuat performa eksekusi code jadi lebih cepat. Selain itu, NodeJS juga memiliki fokus yang bisa menghandle multithreading dan parallel request. Q2 : Mending menerapkan microservice di awal pengembangan, atau tunggu sampai users sudah banyak? Tergantung dari tujuan pengembangan dan kebutuhan aplikasi. Jika memang ada niat menerapkan microservice, akan lebih baik kalau dilakukan di awal. Alasannya karena menghapus kebutuhan modularisasi / refactor di kemudian hari. Nah, apa itu refactoring ? Menurut Martin Fowler, dia adalah proses mengganti software system tanpa mengubah tingkah laku atau behaviour dari code tersebut, akan tetapi membuat struktur di dalamnya jadi lebih baik. Q3 : Sampai berapa batasan microservice agar web kita berjalan dengan optimal? Misal kita pecah jadi 100, apakah masih worth it? Apa ada alternatif lain jika overload? Jawabnya relatif, bergantung dengan resource dan kemampuan dari server. Semua disesuaikan kebutuhan saja. Jika terjadi overload, ya nambah resource boss hehe Kedua, depend on traffic. Jika dirasa modul kita mengalami penurunan performa karena disebabkan traffic yang sangat tinggi , maka kita harus segera melakukan scale up sekali lagi. Tidak bagus juga kalau kita langsung memberikan resource yang sangat besar akan tetapi trafficnya kecil. Jadinya tidak efektif. Optimalnya bukan tergantung dari banyaknya microservice, melainkan dari jumlah aktifitas atau lalu lintas request responnya, serta cara kita menghandle massive request itu bersamaan. Bila overload, Kita bisa enhance di dalam code dengan melakukan optimasi task seperti multithread, chunking proses, dan sebagainya. Selain itu, enhance juga perlu dilakukan dari sisi infrastruktur, caranya dengan menambah jumlah resource untuk memaksimalkan kinerja proses. Q4 : Saran untuk memprioritaskan kebutuhan infrastruktur atau kebutuhan bisnis? Keduanya sama-sama penting. Poin utamanya itu yang penting bisnis jalan dan infrastruktur bisa support berlangsungnya bisnis Q5 : Microservices memungkinkan berbagai macam database pada service berbeda. Bagaimana jika dalam pembuatan service butuh data dari service lain? Bagaimana cara mengambilnya? Lewat API, komunikasi antar services Q6 : Apakah kemacetan jaringan berpengaruh pada arsitektur sistem layanan microservice? Bagaimana menghindarinya? Jelas sih. Solusinya simple, bila arsitektur jaringan diatur dengan baik dan gak terjadi bottleneck, maka layanan aman dari gangguan. Apa itu bottleneck? Dia adalah macetnya proses aliran atau transmisi data sebab alasan tertentu. Biasanya karena perbedaan antara kecepatan kerja suatu komponen dengan kecepatan bus-nya. Untuk mengatasinya kita bisa pakai load balancing. Yaitu teknik mendistribusikan beban trafik pada dua atau lebih jalur koneksi secara seimbang. Gunanya agar trafik berjalan optimal, memaksimalkan throughput, memperkecil waktu tanggap dan menghindari overload pada salah satu jalur koneksi.

Some CTA to lead

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

#Vascomm Webinar,Desain Microservices,Frontend developer