Showing posts with label Java. Show all posts
Showing posts with label Java. Show all posts

Tuesday, 17 November 2020

Aplikasi Berbasis Microservices dalam dunia Komputasi Cloud

Kita tentu pernah menggunakan aplikasi atau software untuk keperluan bisnis atau menjalankan sebuah aktifitas yang memertlukan alat bantu aplikasi berbasis komputer. Aplikasi ini sebenarnya berjalan dalam sebuah infratruktur yang kemungkinan rumit untuk dapat selalu dikembangkan atau dikelola secara baik dan cepat.

Kini muncul sebuah konsep pengembangan atau membangun aplikasi berbasis Microservices yang mampu mengubah cara kita mengelola aplikasi yang rumit dan selalu berkembang karena perubahan kebutuhan yang cepat.

Monolitik (Monolithic) vs Microservices

Cara yang paling gampang, untuk menggambarkan apa itu Microservice adalah dengan membandingkannya dengan cara lama yang kini kita kenal sebagai Monolitik.


Sebuah aplikasi besar akan memiliki banyak service (layanan, fungsi atau tugas) yang saling terkait satu sama lain untuk menghasilkan sebuah hasil kerja yang diharapkan.

Dalam aplikasi berbasis Monolitik, semua service, fungsi atau tugas itu sudah saling diikat atau dibungkus dalam satu kemasan yang tidak dapat dipisahkan kembali. Mereka sudah terikat dalam satu ikatan sebagai sebuah produk.

Aplikasi berbasis Microservices tidak membungkus service yang ada dalam satu kemasan, melainkan masing-masing berdiri sendiri sebagai sebuah microservices. Kita bisa merangkai masing-masing fungsi itu sesuai dengan kebutuhan yang kita inginkan dan juga kita bisa menentukan berapa banyak service yang dibutuhkan untuk memaksimalkan peran aplikasi secara keseluruhan.

Apa Keuntungan dari Aplikasi Berbasis MicroServices

Pada aplikasi berbasis MicroServices, jika service atau fungsi atau tugas nomor 2 ditemukan bug atau masalah yang harus diperbaiki, maka kita hanya perlu fokus memperbaiki potongan program yang terdapat pada service nomor 2 tanpa mengubah atau menyentuh potongan program yang terdapat pada service yang lain serta mengaktifkannya kembali setelah perbaikan. Mari kita bandingkan dengan aplikasi berbasis Monolitik, kita harus membuka ikatan-ikatan itu dan menjaga ikatan tersebut agar bisa digabungkan kembali pada saat kita selesai memberbaiki. Sehingga perbaikan di dalam aplikasi berbasis MicroServices bisa berjalan lebih cepat dan dengan resiko yang kecil.

Aplikasi berbasis Microservices akan berjalan dalam sebuah environment atau infrastruktur tertentu, yang memudahkan kita untuk bertindak lebih cepat jika dibutuhkan. Mari kita ilustrasikan, service 1 adalah potongan program yang berfungsi untuk menginput data yang dilakukan oleh pengguna aplikasi. Ternyata, setelah jumlah pengguna bertambah menjadi 2 kali lipat sehingga proses input menjadi lambat karena melayani banyak input data. Sedangkan service 2 adalah proses untuk melakukan update ke database tetap berjalan sangat cepat.

Dengan aplikasi berbasis Microservices, dengan mudah, kita bisa menambah jumlah service 1 berjalan lebih banyak di environment tanpa perlu melakukan perubahan di dalam program. Dengan penambahan ini, pengguna yang banyak akan dilayani oleh beberapa proses yang berjalan paralel sedangkan service 2 ternyata masih cukup cepat untuk bekerja dengan 1 proses saja.  


Microservices dan Container

Container adalah sebuah konsep dimana program-program microservices bisa berjalan secara independent dan tidak tergantung oleh bahasa pemprograman apapun. Kita bisa saja membuat potongan program microservices menggunakan bahasa Java, Python, PERL atau bahasa lainnya. Potongan program ini, kemudian akan dibuild atau dibentuk sebagai sebuah Image. Pada saat sebuah potongan program sudah berubah menjadi image, dia bisa berjalan di Container Engine sebagai sebuah microservices yang berjalan secara independent. Image akan terbentuk dengan menggabungkan potongan program yang kita buat termasuk semua objek yang diperlukan sehingga begitu menjadi Image, dia siap untuk berjalan sebagai proses yang berdiri sendiri.

Apa yang perlu kita lakukan untuk mengimplementasikan semua ini? Kita cukup melakukan instalasi software yang berfungsi sebagai Container Engine (misal , softwareyang populer saaat ini adalah Docker). Pada saat Docket terinstall di komputer kita, kita dengan mudah dapat memasukkan semua image yang kita inginkan (atau potongan program yang sudah di-build untuk berjalan di Container, apapun bahasa pemprogrammannya).  



Java Spring Boot

Bagi programmer yang terbiasa menggunakan Java, kini terdapat sebuah framework yang namanya Java Spring Boot. Dengan menggunakan framework ini, kita bisa membuat potongan program dengan Java, kemudian kita bisa membuat paket yang berisi semua object yang dibutuhkan agar potongan program java kita bisa berjalan independent.

Mari kita lihat, jika saat ini kita memiliki website yang dibangun dengan Java. Kita perlu menginstall Tomcat sebagai application server, kita perlu mengatur konfigurasi tomcat dan kita perlu mengatur semua library yang dibutuhkan. Artinya potongan program Java kita tidak dapat berjalan sendirian, saya perlu menjalankan tomcat terlebih dahulu, kemudian tomcat akan memanggil program website saya.

Bandingkan jika kita menggunakan framework Java Spring Boot, potongan program website yang kita buat akan dibentuk menjadi sebuah paket (misal menghasilkan satu file program_saya.jar) yang sudah menggabungkan semua kebutuhan library dan konfigurasi untuk berjalan secara independent. Saya hanya butuh memanggil program_saya.jar, tanpa perlu tambahan apapun.

Itu sebabnya, framework Java Spring Boot cukup populer dalam pengembangan aplikasi berbasis microservices, jika anda adalah programmer yang terbiasa menggunakan Java.

Bagi anda yang tidak terbiasa menggunakan Java, jangan kuatir karena anda bisa menggunakan bahasa yang anda kuasai untuk membangun Image yang juga siap berjalan di Container.


--------
Link:
Topik tentang mengenai kehidupan di Singapura: Kehidupan di Singapura 
Topik tentang mengenali teknologi informasi: Mengenali Teknologi Informasi

Catatan Pendidikan Menengah (SMP) atau Secondary School di Singapura

Perjalanan pendidikan atau education journey yang akan dilalui oleh lulusan SD atau Primary School akan berlanjut ke jenjang berikutnya yang...