Dari Sistem Non-Networked ke SOA
Evolusi arsitektur integrasi sistem:
- The old days (non-networked systems): satu-satunya koneksi antar sistem dalam organisasi yang sama adalah lewat “sneaker-net” (bawa disket manual) atau batch feeds; koneksi antar organisasi lewat telepon/surat.
- The new days (distributed networked systems): sistem internal terhubung lewat jaringan; aplikasi bisa berinteraksi dengan sistem berbeda via jaringan/internet, tapi belum standar.
- The newer days (SOA-based systems): ada SOA Infrastructure di tengah yang menyediakan service dengan interface standar, sehingga aplikasi baru mudah dibuat dari fungsionalitas yang ada, dan organisasi eksternal bisa mengakses fungsionalitas internal lewat interface standar.
Tiga Operasi Dasar Service (SOA)
| Operasi | Deskripsi | Tantangan utama |
|---|---|---|
| Service Discovery | Service repository di-query untuk service dengan karakteristik yang diinginkan | Deskripsi service & pemeliharaan repository |
| Service Composition | Service diintegrasikan ke dalam aplikasi | Konversi I/O & manajemen transaksi |
| Service Invocation | Service dipanggil dan kodenya dieksekusi | Ketersediaan (availability) service |
Static vs Dynamic
- Static (teknologi saat ini): discovery & composition dilakukan saat design time — developer mencari service, mendapatkan alamatnya, lalu menulis kode untuk memanggilnya.
- Dynamic (riset lanjut): dilakukan saat runtime — aplikasi sendiri yang menemukan service, mendapat alamat, dan “tahu” informasi apa yang perlu diberikan.
- Ada juga pendekatan “in-between”: aplikasi menemukan service tapi tetap butuh intervensi user untuk memilih & memberi informasi (misal lewat portlets yang berkorespondensi dengan service).
Service Registry
Registry berisi informasi tentang service yang tersedia: deskripsi, spesifikasi (kontrak), klasifikasi, riwayat penggunaan, hasil test, metrik performa, dokumentasi. Registry juga bisa melacak service consumer — memahami service level yang dibutuhkan, memfasilitasi analisis dampak perubahan, dan notifikasi perubahan service.
Service Invocation — 3 Cara
- Direct invocation: aplikasi langsung mengirim service request ke service dan menerima service response.
- Via discovery: aplikasi melakukan service query ke Discovery untuk mendapat service location, baru melakukan request/response ke service.
- Via broker: aplikasi bertanya ke Service Broker, broker yang melakukan service query ke (mungkin banyak) Discovery, mendapat lokasi, baru melakukan request/response — pendekatan ini lebih fleksibel (bisa ada load balancing).
Service Implementation — Apa yang Ada di Balik Interface
Sebuah service consumer berinteraksi dengan service lewat service interface (abstraksi), sedangkan implementasi di baliknya bisa berupa:
- New Service — dibangun baru dari nol.
- Wrapped Service — membungkus aplikasi non-SOA yang sudah ada.
- Composite Service — gabungan dari beberapa service lain (baru, wrapped, atau keduanya).
Address, Binding, Contract (komponen Endpoint)
- Address — Where? (lokasi service)
- Binding — How? (protokol komunikasi)
- Contract — What? (apa yang bisa dilakukan)
Ketiganya membentuk sebuah Endpoint tempat client mengirim message.
Manfaat SOA (jika dikelola dengan baik)
- Cost-efficiency — satu service dengan fungsionalitas setara dapat dipakai berbagai aplikasi (mis. Customer Lookup Service dipakai oleh Order Processing, Invoicing, dan CRM Application sekaligus, bukan diimplementasi berulang).
- Agility — aplikasi baru dapat dengan mudah memakai service yang sudah tersedia; service baru juga bisa dipakai aplikasi lain.
- Adaptability — perubahan pada service cenderung tidak berdampak ke aplikasi yang sudah memakainya (SOA Infrastructure menyediakan mekanisme komunikasi standar).
- Leverage of legacy systems — dapat dibuat service yang bertugas meng-invoke sistem legacy, sehingga kompleksitas/keragaman platform legacy jadi transparan bagi aplikasi.
“The hard part is the ‘if managed well’” — SOA bukan jaminan otomatis sukses; governance yang baik sangat menentukan.
SOA untuk Integrasi
Masalah “Islands of Automation”
Sebelum SOA, tiap departemen (Purchasing, Sales, Financial, Manufacturing, HR) punya sistem sendiri yang terisolasi — data mengalir ke/dari user masing-masing sistem tanpa integrasi lintas sistem.
Interoperability
Interoperability = kemampuan dua atau lebih aplikasi untuk berbagi data dan layanan. Diklasifikasikan menjadi:
- Syntactic interoperability — memastikan aplikasi memakai format data/proses yang sama.
- Semantic interoperability — memastikan data dan proses benar-benar memiliki makna yang sama (lebih sulit dicapai).
Requirements untuk eBusiness
Agar demand dapat dipenuhi hampir real-time, sistem harus:
- Bisa berkomunikasi ke segala arah, dengan sistem manapun.
- Semua informasi relevan bisa diakses sistem lain yang berpartisipasi.
- Data & proses bisnis harus sharable antar aplikasi terhubung, baik dalam maupun antar perusahaan → menjamin data and process integrity.
SOA dan Web Service
Web service: layanan yang diekspos dan diakses melalui teknologi web.
(W3C) “a software system designed to support interoperable machine-to-machine interaction over a network.”
- Diimplementasikan mengacu standar & protokol untuk mendefinisikan service di web (organisasi standarisasi: OASIS, W3C).
- Menghilangkan kebutuhan akan middleware khusus.
Service Models — Taksonomi Pertama
| Tipe | Konteks | Deskripsi |
|---|---|---|
| Task Service | Non-agnostic | Berkorespondensi dengan business logic single-purpose; mengenkapsulasi composition logic untuk menggabungkan service lain demi menyelesaikan tugasnya |
| Entity Service | Reusable, agnostic | Terkait satu/lebih entitas bisnis (invoice, customer, claim); contoh: Purchase Order service |
| Utility Service | Agnostic | Sengaja tidak diturunkan dari spesifikasi analisis bisnis; mengenkapsulasi fungsi teknis level-rendah (notifikasi, logging, security) |
Service Models — Taksonomi Kedua
| Level | Karakteristik |
|---|---|
| Business | High-level abstract, terkait bisnis. Uji litmus: “Are we in the business of…?” (mis. Creating Orders) |
| Enterprise | 1:N terhadap Business Service; granularitas tidak ditentukan, sering coarse-grained, bisa berbasis produk |
| Application | Fine-grained, terikat ke aplikasi spesifik |
| Infrastructure | Auditing, Logging, Security |
Alurnya: business services ↔ message bus (berisi process choreographer & service orchestrator) ↔ enterprise services → application services → infrastructure services.
Shared Resource & Contract Decoupling
- SOA memungkinkan shared resource — misal beberapa divisi asuransi (auto, commercial, casualty, life, disability, travel) yang sebelumnya masing-masing punya data “customer” sendiri, disatukan lewat satu customer service bersama.
- Contract decoupling dengan ESB/Integration Hub: format data bisa diterjemahkan (mis. dari XML SKU+tanggal ke Java product-id+quantity) lewat lapisan transformation and enhancement, sehingga business service dan enterprise service tidak perlu berbagi format data mentah yang sama.
Open Standards Web Service
- XML (eXtensible Markup Language)
- SOAP (Simple Object Access Protocol)
- WSDL (Web Services Description Language)
- UDDI (Universal Description, Discovery, and Integration)
- REST (Representational State Transfer)
- Tidak langsung terkait Web Service tapi berguna untuk memodelkan proses: BPEL (Business Process Execution Language), BPMN (Business Process Model Notation)
XML
- Bahasa/vocabulary didefinisikan dalam schema: collection of trees.
- Hanya mendefinisikan sintaks, bukan semantik.
- Semantic Web / Web 2.0 memperluas dengan semantik lewat OWL dan turunannya.
SOAP (Simple Object Access Protocol)
Struktur pesan SOAP:
- Envelope — menandai awal & akhir pesan.
- Header — atribut opsional untuk memproses pesan (intermediary/endpoint).
- Body — data XML dari pesan yang dikirim.
- Attachment — dokumen tambahan (SOAP with Attachments).
- RPC interaction — cara memodelkan interaksi gaya RPC dengan SOAP.
- Encoding — cara merepresentasikan data sederhana & kompleks dalam pesan.
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<soap:Header> ... </soap:Header>
<soap:Body> ... </soap:Body>
</soap:Envelope>WSDL (Web Services Description Language) — 4 Bagian
- Types — mendefinisikan tipe data abstrak dalam XML.
- Interfaces — operasi apa saja yang bisa dilakukan, dalam urutan apa:
- One-way — endpoint menerima pesan.
- Request-response — endpoint menerima pesan lalu mengirim pesan berkorelasi.
- Solicit-response — endpoint mengirim pesan lalu menerima pesan berkorelasi.
- Notification — endpoint mengirim pesan.
- Bindings — menentukan bentuk pesan & protokol transport yang dipakai.
- Services — menggabungkan interfaces & bindings, menugaskannya ke endpoint/port.
UDDI (Universal Description, Discovery, and Integration)
Direktori web service yang meregistrasi & mempublikasikan definisi web service. Awalnya diimpikan sebagai satu registry global. Terdiri dari 3 bagian:
| Bagian | Isi |
|---|---|
| White pages | Informasi organisasi yang mempublikasikan service |
| Yellow pages | Informasi deskriptif tentang tiap service |
| Green pages | Informasi teknis untuk terhubung ke service |
Alur: Service Provider → publish → Registry ← search ← Service Requester → (1) bind, (2) invoke → Service Provider.
Policy
Model relasi antar elemen SOA: Service Consumer understands Contracts, adheres to Policy, binds to End Point, sends/receives Messages. Service implements Contracts, exposes End Point, governed by Policy, sends/receives Messages. End Point serves Contracts. Contracts describes Messages.
Service Composition: Orchestration vs Choreography
Dua pendekatan utama untuk menggabungkan/mengomposisi service:
graph LR subgraph Orchestration CS[Composite Service] -->|Invoke| A[Service A] CS -->|Invoke| B[Service B] CS -->|Invoke| C[Service C] CS -->|Invoke| D[Service D] A -->|Reply| CS end
- Orchestration: satu proses bisnis eksekutabel yang tersentralisasi (orchestrator/composite service) yang mengoordinasikan interaksi antar berbagai service; orchestrator bertanggung jawab meng-invoke dan menggabungkan hasilnya. Relasi antar service digambarkan lewat satu endpoint (composite service). Dikenal juga sebagai executable model dalam BPEL.
graph LR subgraph Choreography A2[Service A] <-->|Send/Receive| B2[Service B] B2 <-->|Send/Receive| C2[Service C] C2 <-->|Send/Receive| D2[Service D] D2 <-->|Send/Receive| A2 end
- Choreography: deskripsi global dari service yang berpartisipasi, didefinisikan oleh pertukaran pesan, aturan interaksi, dan kesepakatan antar dua/lebih endpoint. Pendekatan desentralisasi — semua service diperlakukan setara, tidak ada satu titik kontrol. Tidak mendeskripsikan aksi internal service yang tidak menghasilkan efek eksternal (mis. transformasi data internal).
Behavioural Interface
Behavioural interface (disebut abstract process dalam BPEL) menangkap dependensi perilaku antar interaksi yang diikuti sebuah service — misalnya, setiap interaksi query dari service lain harus dibalas dengan interaksi response.
Service Orchestration — Layer
Arsitektur service orchestration terdiri dari 3 layer: Orchestration/coordination layer (mengatur urutan logis), Business services layer, Infrastructure service layer — semuanya terhubung lewat service bus secara fisik.
Flashcard
flashcards Sebutkan 3 operasi dasar SOA beserta tantangan utamanya :: Service Discovery (deskripsi & pemeliharaan repository), Service Composition (konversi I/O & manajemen transaksi), Service Invocation (ketersediaan service). Apa perbedaan discovery/composition Static vs Dynamic? :: Static dilakukan saat design time oleh developer (mencari & hardcode alamat service); Dynamic dilakukan saat runtime oleh aplikasi itu sendiri. Sebutkan 3 cara Service Invocation :: Direct invocation, invocation via Discovery (query lokasi dulu), invocation via Broker (lebih fleksibel, bisa load balancing). Apa perbedaan syntactic dan semantic interoperability? :: Syntactic memastikan format data/proses sama; semantic memastikan makna data/proses benar-benar sama (lebih sulit dicapai). Sebutkan 3 taksonomi pertama Service Model beserta cirinya :: Task Service (non-agnostic, business logic khusus), Entity Service (reusable, agnostic, terkait entitas bisnis), Utility Service (agnostic, fungsi teknis level-rendah seperti logging/security). Apa isi White pages, Yellow pages, dan Green pages pada UDDI? :: White pages = info organisasi publisher; Yellow pages = deskripsi tiap service; Green pages = info teknis koneksi ke service. Jelaskan 4 bagian WSDL :: Types (tipe data abstrak XML), Interfaces (operasi & urutannya), Bindings (bentuk pesan & protokol transport), Services (gabungan interface+binding ke endpoint). Apa perbedaan utama Orchestration dan Choreography? :: Orchestration tersentralisasi (satu composite service/orchestrator mengatur & invoke semua service lain); Choreography desentralisasi (semua service setara, berinteraksi lewat pertukaran pesan & aturan bersama tanpa kontrol pusat). Apa itu Behavioural Interface? :: Elemen yang menangkap dependensi perilaku antar interaksi yang diikuti sebuah service, mis. setiap query harus dibalas response; disebut abstract process dalam BPEL. Sebutkan komponen dari sebuah Endpoint :: Address (Where), Binding (How), Contract (What).