Pemodelan Service dengan SOA


Service oriented: mengacu pada penyelesaian masalah yang besar/kompleks yang didekati dengan cara decomposed atau pemecahan masalah besar menjadi beberapa porsi masalah yang lebih kecil. Setiap bagian masalah yang dipecah-pecah itu berfokus pada sebuah problem tertentu. Analogi: perusahaan kredit, melayani beberapa jenis layanan, misal pengambilan uang bisa dari ATM, Teller, Website, disitu terdapat beberapa service yaitu withdrawal, deposit, balance check, loan payment, rate calculation.

Service oriented architecture: berhubungan dengan aspek teknis karena ada kata arsitektur, SOA secara terminologi yaitu merepresentasikan model yang mendukung proses otomasi logic dengan cara men-decomposed menjadi unit logic yang lebih kecil dan dapat dibedakan. Unit logic tersebut secara kolektif dapat mendukung proses otomasi bisnis yang lebih besar dan kompleks. Unit logic tersebut dapat didistribusikan, dapat diproses secara paralel dan dapat diproses di tempat yang berbeda.

Setiap service dapat encapsulate:

- Satu task yang dijalankan hanya dalam 1 step

- Sub-process yang terdiri dari sekumpulan step (misal proses konversi mata uang asing)

- Sebuah servis juga dapat meng-enkapsulasi keseluruhan bisnis logic (misal transfer uang yang 

terdiri dari penyimpanan, cek saldo, dll)

Kalau monolitik keseluruhan proses menjadi aplikasi yang tidak terpecah-pecah.

Bagaimana service berhubungan: 

- Setiap service harus saling aware/mengerti dengan mengandalkan service description yang mengandung; (1) nama dari service (2) data expected (perlu dimasukkan) dan data returned by the service (yang akan dikembalikan).

- Dengan menggunakan service description maka hubungan service dapat diklasifikasikan sebagai Loosely coupled, ketika terjadi perubahan di satu service/modul maka tidak ada perubahan yang terjadi pada service yang lain. Karena service hanya membutuhkan data expected dan return by the service, proses logicnya dienkapsulasi/dibungkus, sehingga apapun yang terjadi hanya transparan untuk service dia sendiri saja. Komunikasi yang terjadi di antara hubungan loosely coupled ini disebut messaging.

Bagaimana service berkomunikasi:

Setelah service mengirim pesan maka service pengirim tidak lagi mengetahui proses apa yang terjadi pada service penerima, ini yang disebut independent units of communication.

Tiga komponen utama:

1. Services

2. Descriptions

3. Messages

Architectural component design:

- How should service be designed?

- How should service descriptions be designed?

- How should messages be designed?

- How should the relationship between services be defined?

Bagaimana merancang service: (key aspects)

- Loose coupling: services maintain a relationship that and only requires that they retain an awareness of each other.

- Service contract: services adhere(melekat) to a communications agreement.

- Autonomy: services have control over the logic they encapsulate.

- Abstraction: services hide logic from the outside world.

- Reusability: logic is divided into services with the intention of promoting reuse.

- Composability: collections of services can be coordinated and assembled(disusun) to form composite services.

- Discoverability: services are designed to be outwardly descriptive (mendeskripsikan dirinya sendiri) so that can be found and assessed via available discovery mechanisms. Setiap service seyogyanya merupakan sebuah logic yang paling basic/sederhana sehingga dapat digunakan kembali, dapat disusun menjadi service yang lebih kompleks sehingga lebih efisien.

SOA ada sebelum web service.

Web Service: teknologi yang mengimplementasikan SOA yang paling populer. Web service merupakan sekumpulan standar yang mendukung interoperabilitas (berbeda platform), standar tersebut mendefinisikan protokol yang digunakan untuk mengkomunikasikan dengan service-service yang lain. SOA dapat dibangun dengan web service. Tanpa adanya protokol yang mendukung maka tidak ada komunikasi antar service. Web service dianggap ‘lem’ yang menggabungkan service-service tersebut.

Ada 5 standar fundamental web service:

- XML, general format untuk mendeskripsikan tipe-tipe data.

- HTTP (termasuk HTTPS), low-level protocol used by the internet.

- WSDL (web service definition language), yang mendefinisikan service interfaces.

- SOAP (simple object access protocol), mendefinisikan web service protokol itu sendiri. Standar untuk pertukaran data menggunakan http.

- UDDI (Universal Description, Discovery and Integration) (identified), untuk melakukan registrasi dan finding services.

Primitive SOA: Secara default SOA ada tiga protokol yang spesifik; (1) UDDI (registry), (2) WSDL (provider), (3) SOAP (pertukaran data antara service provider dengan service requester). Service requester mencari service description yang disupport oleh service registry, setelah mendapatkan service yang sesuai kemudian melakukan kontak dan komunikasi menggunakan SOAP.

Karakteristik dari SOA:

1. SOA increases quality of service (lebih secure dan terproteksi, bisa mendeteksi kegagalan, overheadnya terpisah antara bisnis logic yang ada di service dengan overhead komunikasi). 

2. SOA is based on open standards (standard open technologies are used within and outside of solution boundaries).

3. SOA supports vendor diversity (mendukung interoperabilitas, misal ada service yang dibangun dengan .NET bisa berkomunikasi dengan service yang dibangun dengan J2EE).

4. SOA promotes discovery (pointers to service descriptions).

5. SOA promotes federation (legacy system).

6. SOA promotes architectural composability (selama ada extension yang didukung, maka solusi dapat diberikan dengan meng-compose beberapa service yang ada).

7. SOA encourages intrinsic reusability (service yang sama dapat digunakan oleh solution yang berbeda/reuse).

8. SOA emphasize extensibility (the same service performing additional tasks, tanpa mengganggu serviceservice yang ada di modul tersebut sehingga bisa menambah fungsionalitas).

9. SOA supports a service-oriented business modeling paradigm (business logic tertentu dapat dienkapsulasi pada service tertentu).

10. SOA implements layers of abstraction (service encapsulating and abstracting application logic and technology resources, misal application logic untuk sign in atau sign up, bisa dibuatkan service tersendiri yang menangani proses autentifikasi).

11. SOA promotes loose coupling throughout the enterprise (service layer bisa menjadi penjembatan antara app logic dengan bisnis logic, dan antar service loose coupling).

12. SOA promotes organizational agility (perubahan pada bisnis logic atau app logic dapat mudah dilakukan).

She's Coded

Posting Komentar

Feel free to leave comments below

Lebih baru Lebih lama