Ifnu bima wrote:
> HI all,
> 
> tadi malem sambil nonton sepanyol membabat rusia 3-0 gw selingi dengan
> percakapan seru sama temen lama yang lagi implement middleware untuk
> messaging.
> 
> So far prototype aplikasi-nya sudah jalan okay dan bagus (bisa sampe
> 100 transaksi per second, dibanding implementasi delphi yang cuma
> 20tps). Ada satu titik dimana kita sama-sama blank tentang mana yang
> lebih baik.
> 
> Aplikasi ini handle banyak payment device dengan beberapa protokol
> messaging, ada yang iso8583 ada yang simple XML dll, oleh karena itu
> setiap device dibuatin handlernya, kemudian setiap handler ini akan
> mengirim message ke JMS, so far dya pake Active MQ, performa sangat
> bagus dan memuaskan, kemudian untuk consumer messagenya dya bikin pake
> aplikasi socket multithreading biasa. Sampe  sini kita berdebat seru
> dan bertanya-tanya juga nih, gimana kalau JMS servernya pake punya
> glassfish dan consumernya pake MDB, apakah lebih bagus arsitekturnya?

Arsitektur sama tapi yang akan didapat adalah kemampuan
monitoring GlassFish. Dari kemampuan monitoring ini
kita bisa tahu: apakah thread yang kita alokasi sudah cukup?
apakah memori yang kita alokasi cukup? Berapa rata-rata
waktu response listener kita? Hal ini yang akhirnya
menyebabkan saya pindah dari ActiveMQ+Tomcat ke GlassFish.

> kalau activeMQ + aplikasi console biasa  pasti berjalan di JVM yang
> berbeda sehingga memerlukan mekanisme serializable untuk mengirim
> data, apa perpindahan ke arsitektur glassfish (MDB) menghasilkan
> tuning yang signifikan?

Inter JVM dengan intra JVM jelas beda performancenya.

> sebenernya aplikasi ini bottlenecknya bukan di bagian messaging, tapi
> bagian database processingnya sih, nah so far sih mau implement JDBC
> murni dengan memanggil Storedprocedure Oracle, nah kalau koneksi ke
> databasenya ini diganti pake EJB3, apa lebih efisien?

Supaya bisa lebih efisien kuncinya adalah strategi caching
yang tepat untuk pembacaan data dan pemakaian arsitektur
async pada saat menulis ke database. Bukan isu stored procedure vs
ejb3.

> 
> adakah yang pernah manage aplikasi asychronous yang terdiri dari
> beberapa layer aplikasi jalan terpisah di beberapa JVM? kemudian kalau
> kita bandingkan dengan environtment EJB3 gimana yah? lebih gampang
> dimanagenya atau  nggaj yah?
> 

Di tahun 2006 saya membangun aplikasi enterprise berbasis
messaging. Ini dibangun dengan messaging listener yang
berkomunikasi dengan layer web. Messaging listenernya bisa
dijalankan dalam beberapa JVM dan bisa juga dalam 1 VM.
Aplikasi ini stateful penuh dan state dimanage aplikasi
karena meniru behaviour aplikasi terminal mainframe.

Di tahun 2008 saya membangun aplikasi web service yang merupakan
interface ke aplikasi mainframe Galileo GDS. Aplikasi ini
dibangun dengan fondasi EJB3 stateful session bean.
Stateful session bean karena aplikasi ini ada sedikit
kebutuhan untuk stateful juga tapi tidak banyak.

Aplikasi yang pertama lebih manageable dalam hal resource.
Kenapa? Karena jumlah listener bisa dikendalikan
secara penuh. Makin banyak transaksi yang perlu di proses
paralel maka tinggal menaikkan jumlah listener.
Akan tetapi jumlah codenya jauh lebih banyak dari aplikasi
yang kedua. Aplikasi yang kedua lebih boros dalam
hal resource tapi masalah beres begitu dikasih memori yang
berlimpah. Yah Java memang memory monster :-)

Kenapa boros? Karena resource management dihandle
container EJB3. Dan dia akan alokasi banyak instance
pada saat peak load. Baru pada saat idle instance
akan dihapus dan di GC. Masalahnya aplikasi ini
juga menjalankan banyak proses latar belakang
untuk monitoring booking queue sehinggga walaupun tidak ada
request dari luar akan tetap ada instance yang
dikeep untuk melayani proses latar belakang.

Aplikasi yang kedua tadinya jalan dalam environment yang
kekurangan memori akibatnya setiap 2-3 minggu down
tanpa log apapun. Yang jebol JVM nya. He he he.
Sekarang aplikasi yang kedua jalan dalam environment
yang berlimpah memori dan bisa jalan berbulan-bulan
tanpa restart.

Jadi kesimpulannya? Pakai messaging maka resource lebih manageable
tapi ada harga yang harus dibayar. Code jadi bengkak.
Berapa banyak jika dibandingkan aplikasi EJB3? Yah sekitar
5 kali lipat jumlah code.

Kalau ada yang berminat mengakses GDS Galileo lewat web service
untuk bisa bikin aplikasi reservasi pesawat khusus bisa lihat-lihat
WSDL nya di sini.

http://im.galileoindonesia.com:8086/giws/

Dalam waktu dekat aplikasi ini bakal selesai di integrasikan ke
sistem reservasi Navitaire Mandala. Jadi lewat 1
web service bisa booking ke Galileo GDS dan juga ke Mandala.
Di masa depan besar kemungkinan akan ada integrasi
dengan airline lokal pemakai Navitaire dan sistem reservasi lainnya.


Kirim email ke