Pengenalan SOA-Apa sih SOA itu?

September 5, 2010

SOA, Service Oriented Architecture.  Suatu buzzword baru yang sedang naik daun.

Apa sih SOA itu? Kalau anda membuka wikipedia atau google, anda akan mendapatkan sejuta definisi SOA yang mengatakan SOA itu blablabla. Anda membuka referensi lain, anda juga akan mendapatkan SOA itu bliblibli, blublublu, dst. Problem dengan definisi macam itu, walaupun kelihatan jelas bagi pembaca yang sudah memahami apa itu SOA, akan membingungkan bagi orang yang sama sekali masih baru dengan SOA. So, saya akan mencoba memberikan contoh penggunaan SOA dalam kehidupan sehari2.

Imagine sebuah bank. Sebuah bank biasanya mempunyai banyak sekali aplikasi dengan platform yang berbeda2 dengan database yang berbeda2 pula. Ada aplikasi Core Banking yang umumnya menggunakan mainframe. Ada aplikasi kredit yang menggunakan MySQL, ada aplikasi treasury, Customer relationship management, dll. Seringkali terjadi suatu data tersebar di banyak aplikasi pula. Misalnya data master nasabah ada core banking, kredit, CRM, dll.

Bayangkan jika anda ingin membuka account di sebuah bank. Anda pergi ke bank, mengambil nomer antrian, bicara dengan petugas customer service yang (biasanya) cakep. Petugas CS yang cakep itu membuka suatu aplikasi front office, dan memasukkan data2 anda dan kemudian resmilah anda menjadi nasabah bank itu. Apa yang sebenarnya terjadi di dalam aplikasi itu? Aplikasi itu harus meng-insert data2 anda ke berbagai aplikasi yang membutuhkan data nasabah, masing2 aplikasi dengan database yang berbeda, entah itu Core Banking yang menggunakan mainframe, atau CRM yang menggunakan oracle, dsb. Siapapun developer aplikasi itu harus memastikan data2 anda sudah terproses dengan benar ke berbagai database. Ok, kalau sementara penambahan nasabah baru hanya bisa dilakukan oleh satu aplikasi front office saja masih tidak menjadi masalah.

Tapi kemudian timbul requirement baru : karena sekarang lagi jamannya web banking, maka seseorang bisa membuat account baru melalui web (internet).  Developer web application itu juga harus melakukan hal yang sama, insert data nasabah juga harus mengupdate berbagai aplikasi dan database yang berbeda. Trus, mobile banking juga ingin bisa membuat account baru secara mobile. Trus… dan trus….

Kebayang kan pusingnya? Setiap kali timbul bisnis requirement baru, proses yang pada dasarnya sama harus dilakukan lagi terus-menerus. Nah, sekarang bagaimana jika keseluruhan proses create account dijadikan service? Aplikasi front office kemudian tinggal memanggil service itu. Demikian juga dengan aplikasi web dan mobile banking, untuk meng-create account baru cukup dengan memanggil sebuah service. Internal service itu yang kemudian bekerja untuk memastikan data2 nasabah sudah terproses dengan benar di berbagai sistem dan database.

Bukankah itu membuat hidup menjadi jauh lebih menyenangkan? Penambahan business process baru tidak lagi menjadi masalah karena cukup memanggil service. Demikian juga jika nantinya ada sistem baru yang membutuhkan data nasabah (misalnya daftar hitam nasional), cukup di-update service-nya saja tanpa perlu merombak aplikasi front office, web dan mobile banking.

Well, itu sih garis besar pemakaian SOA dalam kehidupan sehari2. Dalam prakteknya suatu business process bisa jadi akan memanggil lebih dari satu service. Misalnya proses order akan memanggil service lookupCustomer, service createOrder, service shipping, dan service penagihan. Kemudian aplikasi CRM (misal jika customer ingin mengecek apakah barang yangdipesan sudah dikirim) juga membutuhkan service lookupCustomer. Aspek reusabilitynya jelas, suatu service lookupCustomer bisa dipakai oleh berbagai proses bisnis. Suatu proses bisnis bisa mengkombinasikan banyak service sekaligus.

Definisi SOA sendiri tentu jauh lebih mendalam, melainkan meliputi bagaimana me-manage service itu sendiri, bagaimana me-manage bussiness process, dll yang detailnya akan saya kupas kapan2 kalau sedang tidak malas nge-blog :D:D

Advertisements