Skip to content

Microservices

Asisten Dosen

Kamu adalah seorang mahasiswa di universitas ternama di Indonesia. Disana kamu bukanlah mahasiswa biasa, tetapi mahasiswa yang aktif mengikuti kegiatan di kampus, salah satunya adalah menjadi asisten dosen.

Menjadi asisten dosen di mata kuliah ini sering kali diadakan demo terhadap mahasiswanya karena tiap minggunya selalu diadakan pengambilan nilai tutorial. Karena tiap tahunnya mahasiswa fakultas kamu terus bertambah, berimbas pada semakin banyaknya mahasiswa yang harus melakukan demo setiap minggunya. Hal tersebut membuat para asisten dosen mulai kewalahan untuk mengatur waktu demo dengan mahasiswa.

Beberapa waktu yang lalu, ketika kamu sedang melepas penat di perpustakaan fakultas, salah satu dosen pengajar yaitu Pak Vincent tiba-tiba mendatangi kamu. Ketika itu Pak Vincent menyampaikan persoalan yang dihadapi tersebut ke kamu. Beliau juga menyampaikan ide membuat suatu sistem informasi untuk membantu mengatur jadwal kegiatan demo yang dilakukan asisten dosen dengan mahasiswanya. Kemudian untuk membantunya merealisasikan idenya tersebut, Pak Vincent mengajak kamu menjadi salah satu software engineer yang turut ikut serta mengembangkan aplikasi sistem informasi tersebut, dengan harapan para asisten dosen menjadi terbantu dalam menjadwalkan demo dengan mahasiswanya.

Karena tawaran tersebut cukup menarik dan menjanjikan, kamu pun tertarik untuk menerimanya. Untuk mengetahui informasi lebih detailnya kamu menyampaikan beberapa pertanyaan seputar aplikasi tersebut.

“Pada dasarnya aplikasi ini membantu pihak mahasiswa dan asisten dosen untuk menentukan jadwal demo yang sesuai”

“Jadi nantinya mahasiswa dapat booking jadwal ya Pak? ”

“Yup, nantinya mahasiswa dapat memilih jadwal yang diinginkan yang sesuai dengan waktu available nya asdos bersangkutan”

“Oh baik Pak, berarti ini sistemnya nanti mahasiswa sebagai user dapat menentukan jadwal demo pada waktu yang tersedia, sepertinya cukup mudah untuk diimplementasikan hehehe”

“Eits tunggu dulu, ada yang istimewa dengan aplikasi ini, Disini kita tidak hanya menggunakan satu aplikasi, melainkan menggunakan beberapa aplikasi yang lebih kecil yang saling berkomunikasi satu sama lain."

“Wah, kalau boleh tahu kenapa dibuat seperti itu ya Pak? Bukankah lebih mudah jika kita membuat aplikasi besar menjadi satu kesatuan secara langsung”

“Oh belum tentu. Untuk case seperti aplikasi yang kita buat ini, mengingat banyaknya mahasiswa yang akan menggunakannya, dan juga ada kemungkinan untuk dikembangkan di masa yang akan datang, lebih baik kita membagi aplikasi tersebut menjadi beberapa microservice sehingga antar software menjadi lebih low coupling”

“Ohh seperti itu ya, wah saya jadi nambah ilmu baru nih hehehe, Oh iya Pak, by the way nanti microservicenya ada apa saja ya pak?”

“Disini kita menggunakan 2 service terpisah, yaitu asdos-service sebagai produser yang memberikan data semua asisten dosen beserta jadwal ketersediaannya dan booking-service sebagai tempat kita menyimpan data booking yang dibuat oleh mahasiswa. Nantinya sebelum booking-service membuat booking jadwal, kita harus melakukan validasi terlebih dahulu apakah jadwal yang diminta dapat diterima oleh asisten dosen yang bersangkutan”

“Wah keren banget, btw gimana caranya tuh beberapa aplikasi bisa saling berkomunikasi?”

“Aplikasi ini berhubungan satu sama lain menggunakan protokol HTTP REST, dan juga beberapa package yang sudah disediakan oleh bahasa pemrograman tersebut agar aplikasi yang berbeda bisa saling bertukar data dengan baik”

“Oke baik pak saya sudah cukup terbayang bagaimana aplikasi ini nantinya. Mungkin akan saya coba implementasikan terlebih dahulu ya pak.”

“Kamu nanti tidak usah mengerjakan yang bagian asdos ya, kebetulan untuk asdos-service sudah dikerjakan oleh tim saya, kamu bisa fokus mengerjakan yang booking-service saja”

“Baik pak, nanti bagian apa saja ya yang harus saya kerjakan pak?” “Saya ingin nantinya mahasiswa dapat melihat semua asdos yang tersedia sehingga mereka bisa lihat asdos ini available untuk booking kapan”

“Oke pak, berarti untuk yang ini nanti saya harus memanggil asdos-service yang akan mengembalikan list asdos ya pak?” “Yak, betul sekali. Oh iya jangan lupa nanti mahasiswa bisa melakukan booking melalui aplikasi yang dibuat ya, itu fitur utamanya hehe”

“Kalau tidak salah setelah saya cek tadi pak sudah ada api yang menghandle bagian ini ya pak di asdos-service?”

“Betul, jadi kamu cukup memanggil apinya saja sesuai dengan spesifikasi apinya, dan jangan lupa untuk menyimpan hasil booking di database booking-service yaa”

“Baik pak, saya sudah cukup paham apa saja yang harus saya lakukan”

*Pak vincent yeeted from conversation

Task List

  • Membuat booking baru melalui booking-service
  • Menampilkan seluruh asdos yang tersedia
  • Validasi booking yang dilakukan melalui asdos-service
  • Implementasi Eureka Service Discovery (Bonus)

Technical Context

  • DO NOT Touch asdos-service
  • Pengerjaan dilakukan hanya pada service booking-service dan service-registry

Hint

Rest Template

Untuk berkomunikasi antar service kalian dapat memanfaatkan penggunaan Rest Template. Pertama-tama kalian dapat mendeclare sebuah bean rest template pada root application.

rest-template1.png

Kemudian pada bagian service kalian instantiate object rest template.

rest-template2.png

Dari sini kalian dapat melakukan pemanggilan http method melalui object restTemplate

rest-template3.png

Eureka Service Discovery

Eureka service discovery bertujuan untuk mendaftarkan seluruh service kalian, sehingga setiap service dapat berkomunikasi langsung dengan service lainnya tanpa harus mengetahui lokasi dari service tersebut (port dan domain). Setiap service yang terdaftar di eureka server dapat kalian lihat namanya di list eureka.

Pada tutorial ini sudah disediakan module eureka server, setiap service tinggal dihubungkan saja dengan eureka server. Kalian dapat mengakses dashboard eureka setelah menjalankan servicenya di http://localhost:8761

eureka1.png

Dari dashboard kalian dapat melihat instance mana saja yang sudah terhubung ke eureka server, untuk menyambungkan service kalian perlu menginisiasi root application kalian untuk mengizinkan service discovery

eureka2.png

Kemudian kalian harus menambahkan config pada application.properties tiap tiap servicenya

eureka3.png

  • spring.application.name merupakan nama aplikasi yang akan kalian register di eureka
  • eureka.instance.hostname adalah host dimana eureka di serve
  • eureka.client.service-url.defaultZone merupakan endpoint eureka yang menerima koneksi dari service lain

Last update: 2022-05-11 00:55:06
Created: 2022-05-11 00:55:06
Back to top