Senin, 05 Juli 2010

Service Contracts

Pada tulisan Analogi SOA sedikit disinggung mengenai service contracts. Tulisan ini mencoba membahasnya lebih lanjut. Interaksi paling dasar dalam SOA adalah interaksi antara penyedia service dan konsumen. Tiap interaksi antara dua pihal tersebut, satu pihak menyediakan kombinasi data dan fungsionalitas dan pihak lain mengkonsumsinya. Sebelum penyedia memberikan apapun layanan yang ditawarkan, kedua belah pihak harus sudah mencapai kesespakatan, atau kontrak. Dan sebagaimana dalam kontrak legal yang baik, masing-masing pihak tidak akan saling mencampuri urusan masing-masing, artinya ada independensi meskipun terikat kontrak.
Karena konsumen bisa banyak variasinya, bisa diterapkan berbagai jenis kontrak untuk sebuah service. Suatu service yang secara fungsional menyediakan layanan yang sama untuk semua konsumen, bisa diterapkan kontrak yang berbeda terhadap kelompok konsumen yang berbeda.

Untuk memudahkan penggambaran, kita ambil contoh layanan pengiriman surat PT Pos Indonesia. Meskipun secara fungsi memberikan layanan yang sama yaitu mengantar surat dari satu tempat ke tempat lain dengan alamat tertentu, pengiriman surat bisa dibagi ke dalam beberapa jenis, misalnya pos biasa, pos kilat, dan pos kilat khusus. Perbedaan antara ketiga jenis pengiriman surat itu terutama adalah dalam hal cepat-lambatnya waktu penyampaian. Pos kilat lebih cepat dari pos biasa, dan pos kilat khusus lebih cepat dari pos kilat khusus. Bisa saja ada tambahan jaminan yang lain, misalnya pos kilat khusus dijamin sampai alamat dalam satu hari, dan jika lebih dari itu biaya pengiriman akan dikembalikan (refund). Ini gambaran dari satu service dengan beberapa jenis kontrak.

Dalam dunia TI berbasis SOA, salah satu contohnya adalah service yang memberikan informasi data pelanggan. Misalnya, konsumen berupa aplikasi Call Center akan mengakses service pelanggan tersebut sebanyak 100.000 kali sehari dan pada jam sibuk antara jam 08.00 pagi sampai jam 18.00 petang. Sementara konsumen berupa aplikasi Business Intelligence untuk pembuatan laporan analitik akan melakukan proses batch melakukan pemanggilan service data pelanggan tadi sebanyak 50.000 kali dan dilakukan mulai tengah malam hingga jam 02.00 dinihari. Maka untuk kedua jenis konsumen tadi akan dikenakan service contracts yang berbeda.

Adalah tugas penyedia service untuk menyediakan sumberdaya yang cukup untuk bisa memenuhi semua jenis SLA (Service Level Agreement). Infrastruktur service juga harus memiliki kemampuan untuk memberikan prioritas yang berbeda-beda sehingga beberapa konsumen mendapatkan response times yang lebih baik dibanding konsumen lain. Dalam kasus ini, perbedaan response times bisa dimasukkan sebagai bagian dalam tiap kontrak.

Dalam kontrak seringkali kita temui apa yang disebut dengan terms and conditions. Ada serangkaian tanggungjawab yang harus dilakukan oleh masing-masing pihak, penyedia dan konsumen. Misalnya, konsumen disyaratkan untuk mencantumkan beberapa elemen wajib dalam pesan permintaan (request message) dan mungkin juga beberapa elemen opsional. Demikian juga misalnya suatu service setelah melakukan suatu operasi diharuskan memberikan pesan jawaban (reply message) berupa data hasil operasi (return data). Dan jika service itu gagal memberikan return data, ia harus menyampaikan pesan kegagalan (fault message). Pesan kegagalan itu harus disampaikan apapun penyebabnya, baik data dimaksud tidak ada maupun karena kegagalan infrastruktur seperti database server sedang down.

Tentu saja kita masih bisa memasukkan kebijakan atau policy ke dalam kontrak misalnya komunikasi harus diamankan dengan menggunakan SSL (Secure Socket Layer). Namun yang perlu diingat adalah bahwa contracts dan policy adalah dua hal yang berbeda. Dalam SOA ada topik yang dinamakan service policy. Karena implementasi service yang paling popular adalah yang dalam bentuk Web Service, maka Web Service Policy juga menjadi topik yang banyak dibahas.

Pembahasan mengenai service contracts saya akhiri dulu sampai di sini. Mudah-mudahan bisa menambah pengetahuan serta bermanfaat bagi mereka yang ingin mempelajari SOA. Terima kasih.

Jakarta, awal Juli 2010
Samsurizal R.

5 komentar:

  1. WSDL adalah yang berperan dalam service contact ini (dalam implemntasi web service tentunya)..

    Cuma itu pak yang saya tahu, kapan pak tulisan nya langsung "tembak" ke implementasi???

    Nice posting Pak.

    BalasHapus
  2. Tepat, WSDL kita gunakan jika service yg kita bangun menggunakan teknologi Web Service.

    Untuk langsung "tembak" ke implementasi, sebetulnya saya sudah menyiapkan beberapa sample composite application sederhana. Berhubung masih menumpuknya pekerjaan yang harus diseliver, posting jenis itu saya tunda dulu. Posting seperti itu lumayan "time consuming" untuk menyiapkannya, harus bikin tabel2 database, bikin screen capture pada tiap langkah, semacam step by step tutorial.

    Mudah-mudahan dalam waktu dekat ini tersedia waktu yang cukup sehingga posting "langsung tembak" itu bisa segera tersedia.

    BalasHapus
  3. Iya Sir, untuk buat tutorial mengenai implementasi mang makan effort lebih. Saya mewakili orang awam lain'y memang jika belajar kurang "ngerti" jika ga diimplementasikan langsung. Kita cerita2 yg indah tentang SOA dan elemen2nya tp awak belom pernah buat tuh WS ato ngeliat WSDL dll. Itu Sir saya dapat dulu waktu kuliah, si dosen malah bilang "search sana di internet udah bertebaran source code".. hehe :0

    BalasHapus
  4. Tulisan dan analogi yang sangat bagus.
    Salam kenal juga, kebetulan sekarang saya juga sedang ber-"SOA-SOA" bergembira nih, karena topik thesis saya tentang SOA governance. Semoga kedepannya kita bisa sharing knowledge tentang SOA :D

    BalasHapus
  5. Pak .. Kenapa blog nya berhentii..
    Padahal bagus lhoo...

    Lanjutkan menulisnya tetnang perkembangan SOA skarang ...

    BalasHapus