What is SOA?
adalah sebuah arsitektur yang menghubungkan berbagai service (pada prinsipnya aplikasi-aplikasi dan data) sesuai dengan kebutuhan dan membentuk sebuah struktur aplikasi besar sebagai koleksi ad hoc dari service-service tersebut, untuk mencapai hasil yang diinginkan oleh service consumer (baik end user atau service lain).
OASIS (Organization for the Advancement of Structure Information Standard) mendefinisikan SOA sebagai sebuah paradigma untuk mengorganisasikan dan menggunakan kemampuan-kemampuan yang tersebar, yang mungkin berada di bawah kontrol domain yang berbeda. SOA menyediakan keseragaman dalam artian untuk menawarkan, menemukan, berinteraksi dengan, dan menggunakan kemampuan-kemampuan tersebut untuk menciptakan efek-efek yang diinginkan dengan prekondisi dan ekspektasi yang bisa diukur
Komponen Penting dalam SOA
Service adalah sebuah stand-alone unit dalam sebuah functionality. Service bisa menjadi “nano-enterprises” sebagai satuan yang mudah dibentuk dan dikembangkan, atau menjadi “mega-corporations” yang dibangun sebagai gabungan dari beberapa sub-ordinate service.
10 prinsip arsitektural dalam merancang dan mendefinisikan service, antara lain:
- Service encapsulation
- Service loose coupling
- Service contract
- Service abstraction
- Service reusability
- Service composability
- Service autonomy
- Service optimization
- Service discoverability
- Service relevance
Sebagian besar service (web service) dikonsolidasikan untuk digunakan dengan berdasar pada SOA.
Service-service memelihara sebuah hubungan yang meminimalisasikan ketergantungan antar service
Service terpaku pada sebuah communication agreement, yang didefinisikan secara umum pada satu atau lebih service description documents
Di luar apa yang dideskripsikan dalam service contract, setiap service menyembunyikan logikanya dari dunia luar
Logika dibagi ke dalam service-service yang berorientasi pada prinsip reusability (penggunaan kembali)
Kumpulan service dapat dikoordinasi dan dibentuk menjadi sebuah service gabungan
Service memegang control terhadap logika yang dia gunakan sendiri
High-quality service lebih diutamakan dibanding dengan low-quality service
Service dirancang sedemikian rupa sehingga service tersebut dapat ditemukan dan dinilai dengan mekanisme yang sudah ada
Service dibuat sesuai dengan kebutuhan sehingga dikenali sebagai service yang memiliki nilai (meaningful service)
SOA merupakan sebuah kelompok service, di mana setiap service dapat berkomunikasi satu sama lain. Dua atau lebih service berperan untuk mengkoordinasikan sebuah activity. Dikarenakan perannya ini dalam SOA dikenal istilah interoperable services.
Interoperable services adalah sebuah sistem yang menunjuk pada berbagai kemampuan service yang berbeda dan mengorganisasikannya sehingga dapat bekerja bersama (inter-operate).
Goal dari SOA
Secara umum, goal dari SOA adalah membuat user memiliki sebuah tempat penyimpanan functionality yang sangat besar untuk membentuk aplikasi ad hoc yang berasal dari service-service software yang ada di dalamnya.
Secara khusus, SOA bertujuan meningkatkan interoperability sistem (termasuk penukaran informasi, reusability, dan composability), meningkatkan federation (penyatuan resources dan aplikasi dengan tetap memelihara autonomi setiap individu resources), dan meningkatkan domain alignment antara bisnis dan teknologi.
Sedangakan tujuan penggunaan SOA dalam kaitannya dengan arsitektur bisnis (sebagai business mapping tools) adalah untuk memastikan bahwa service-service dibuat dengan benar dan dapat merepresentasikan pandangan bisnis yang diinginkan, bukan tentang apa yang teknologi pikirkan mengenai bagaimana bisnis service harus seperti apa.