Messaging and Event Driven Architecture Example


Berdasarkan postingan sebelumnya mengenai Messaging and Event Driven Architecture. Sekarang saat nya aku membahas bagaimana cara mengimplementasikanya. Contoh aplikasi kali ini aku ambil dari ChatDownloader Aplication yang aku post sebelum nya. Namun sebelum masuk membendah contoh aplikasi tersebut ada hal-hal yang perlu aku jelaskan.

Service Oriented Architecture

Kebanyakan orang mengalihkan bahwa SOA itu berhubungan dengan Application Integration, Platform Independent, ada component software yang bisa diakses ecara remote either itu Webservice, REST, atau dalam Bentuk BPEL. Namun fokus SOA sebenarnya bukan di sisi itu.

SOA itu merupakan architectural concept dalam software development dimana software tersebut di bangun berdasarkan service service yang saling berkolaborasi untuk melakukan specific business capability.

Layaknya Object Oriented Programming yang merupkakan konsep pengembangan software dimana software tersebut dibangun berdasarkan object object yang saling berkolaborasi.

Apakah service itu ? Berdasarkan tulisan Udidahan:

A service is the technical authority for a specific business capability.

Any piece of data or rule must be owned by only one service.

Continue reading

Chat Downloader Application


ChatDwonloader merupakan OpenSource Java Application yang memungkinkan download file melalui chatting Google Talk. Ide awalnya adalah aku sebagai Software Developer yang hampir setiap hari menghabiskan waktu untuk bekerja di client. Namun kadang kala aku membutuhkan software mislakan update atau patch Websphere Application Server yang ukuranya hampir 1GB. Kalau di download dari internet client satu hari juga ga bakal kelar. Tapi kalo di download dari kantor kencang. Akhirnya dengan cara manual aku search software yang perlu di download saat jam kerja di client. Besok paginya aku datang ke kantor untuk mendownload file yang sudah aku persiapkan satu hari sebelumnya.

Terus terang cara manual diatas sangat tidak efektif, aku harus cari file nya, besoknya aku download dari kantor, besoknya aku datang lagi ke kantor untuk ambil file tersebut. Gimana jika disaat aku dapatkan url file download filenya, aku kirim sesuatu ke kantor lalu file tersebut di download automatis. Besoknya dengan santai aku datang ke kantor untuk ambil file hasil downloadtan.

Akhirnya setelah bertapa selama satu hari dan diberi wangsit oleh Ki Joko Bodo dan Hokage IV aku mendapat ide untuk download file melalui chat. Aku buatin program yang jalan di background, kerjaanya dengarin chat message download dari GTalk, ketika ada chat message download yang masuk program tersebut akan download-tin filenya, notify pengirim ketika file tersebut sudah selesai di download dari chat message juga.

Continue reading

Messaging and Event Driven Architecture


Overview

Messaging adalah salah satu metode komunikasi antara software komponen atau aplikasi. Messaging client dapat mengirimkan dan menerima pesan dari messaging client yang lain. Dengan messaging komunikasi terdistribusi dapat di lakukan. Message receiver tidak harus available saat message sender mengirimkan pesan. Message Sender mengirimkan pesan ke destination (lokasi dimana message tersebut dikirimkan) yang terdapat di messaging agent, saat receiver available messaging agent mengirimkan pesan tersebut ke receiver.

Messaging ini benar benar loosely coupled, sender tidak berinteraksi langsung dengan receiver, sender tidak perlu tahu menahu tentang receiver ataupun sebaliknya. Yang menjadi kontrak/yang harus diketahui oleh sender dan receiver adalah message format dan destination.

messaging itu asynchronous (fire and forget) , sender hanya mengirimkan message ke destination. sender tidak harus harus menunggu message tersebut selesai proses oleh receiver, dan receiver tidak harus available saat pesan tersebut di kirim. Misalkan aplikasi receiver down, receiver akan tetap mendapat message setelah aplikasi receiver available.

Terdapat dua messaging pattern:

  1. Point to Point: Sender hanya mengirimkan message ke satu receiver
  2. Publish and Subscribe: publisher/sender mempublish message ke banyak subscriber/receiver. Jika ada subscriber yang baru masuk, subscriber cukup mensubscribe destination, tidak ada perubahan terhadap publisher. Saat publisher mengirimkan message lagi maka subscriber yang baru secara automatis akan mendapatkan message tersebut. Continue reading