Home > SOA > SOA dan EDA

SOA dan EDA

SOA : Service Oriented Architecture
EDA : Event Driven Architecture

Pilihan design yg terdapat di SOA bisa banyak. Bahkan ketika kita sudah selesai mendefinisikan service. Contohnya pada kasus order to cash process. Proses2nya adalah register an order. Nah order memiliki hubungan dengan stock. Plihan design yg mungkin adalah

1. Aplikasi mengirimkan pesan ke registerOrder pada Order service
2. Aplikasi mengirimkan pesan yg lain ke reserveStock ke Inventory Service.

1. Aplikasi mengirimkan pesan ke registerOrder pada Order service
2. Order service mengirimkan pesan ke reserveStock pada Inventory Service

1. Aplikasi mengirimkan pesan ke registerOder pada Order Service
2. Order Service mempublish orderReceived event
3. Inventory Service subscribe ke orderReceived event

Service menggambarkan alokasi responsibility.
Pada contoh diatas kita akan dapat membaginya menjadi beberapa bisnis service
1. Sales
2. Inventory
3. Shipping

Sales ini merupakan aplikasi dimana user beroperasi. Aplikasi ini berkomunikasi dengan Aplikasi UI dimana user memasukkan order. Ketika order disubmit dan sudah divalidasi maka Sales akan publish OrderTentativelyAccepted event.

Inventory dan Order

Inventory yg subscribe terhadap event ini akan melakukan pengecekan terhadap order tersebut apakah stoknya cukup. Nah jika semuanya mencukupi maka dilakukan alokasi untuk order tersebut. Inventory akan mempublish InventoryAllocatedToOrder event. Untuk item yg ga cukup stoknya akan dijalankan long running proses untuk mengamati perubahan inventory (InventoryChanged event)

Ketika InventoryChanged event muncul maka dilakukan pengecekan terhadap order yg membutuhkan alokasi. Nah jika terdapat order tersebut maka akan dipublish InventoryAllocatedToOrder event.
Sales (subscriber dari InventoryAllocatedToOrder event) akan menerima semua event yg berkaitan dengan OrderTentativelyAccepted yg dipublishnya tadi. Dan setelah semua lengkap maka sales akan mempublish OrderAccepted event.

Order dan Shipping

Inventory akan menerima OrderAccepted event dan akan mengenerate pick list yg akan mengandung stock dari warehouse untuk diload dan tujuan pengiriman. Dan PickListGenerated event akan dipublish.
Shipping akan menerima PickLIstGenerated event, dan akan memulai pengangkutan. Dst

Apa lagi kemungkinan2 yg lain dari scenario diatas. Bisa banyak scenario. Tergantung dengan domainnya. Contohnya maximum barang yg diload ke truck. Atau bisa aja ada lagi service Customer Care jadi ntar customer akan dinotifikasi apa yg terjadi dengan ordernya. Bisa juga ada Billing service menyangkut billing procedures dan metode pembayaran yg dilakukan customer. Credit, pembayaran setelah pengiriman dll.
Kombinasi SOA dan EDA tersebut dapat mengatasi banyak bisnis domain. Dan tentu saja dapat dikembangkan sesuai dengan kebutuhan.

Nah di sini peranan ESB apa ? Ya hanya untuk subscribe dan publish event aja kan ? Hanya untuk menghubungkan apa yg subscribe ke mana. Itu saja. Jadi peranannya bisa dibuat jadi lebih simple.

Kita dapat mendefinisikan responsibility service dengan melihat event2 yg dihasilkannya dan kepada event apa service tersebut subscribe. SOA tanpa EDA tidak akan banyak manfaatnya. Dengan SOA kita dapat mendefinisikan boundary atau batasan2 suatu service. Dengan EDA kita dapat mengkolaborasikan service2 tersebut.

Categories: SOA Tags: , , ,
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: