Jumat, 08 Agustus 2014

Service Oriented Architecture

Apakah itu Service Oriented Architecture (SOA)?
Pengertian Service secara bahasa adalah layanan. Tetapi pada penerapan TI di Indonesia juga digunakan istilah servis atau service. Untuk selanjutnya dalam tulisan ini akan digunakan istilah service.
Oriented dalam bahasa Indonesia dapat diartikan sebagai arah.
Sedangkan Architecture dalam bahasa Indonesia dapat diartikan sebagai rancangan.
Jadi pengertian Service Oriented Architecture menurut bahasa adalah arah perancangan/perencanaan dari sebuah layanan/service.
Sedangkan menurut OASIS[1], SOA adalah sebuah cara untuk mengatur, memanfaatkan dan mendistribusikan informasi/service dibawah domain/platform yang berbeda. Memberikan sebuah sarana standar untuk ditawarkan, ditemukan dan memberikan interaksi dengan service lain sehingga memberikan hasil baru sesuai dengan apa yang diharapkan.
unsur SOA oleh Krafzig Dirk, Karl Banke, dan Dirk Slamapng.png
Gambar 1. Unsur SOA oleh Krafzig Dirk, Karl Banke, dan Dirk Slama
Dengan kata lain SOA atau Service Oriented Arcitecture adalah sebuah teknik perancangan aplikasi dengan menggunakan kembali komponen-komponen (service) yang sudah ada sebelumnya untuk memberikan hasil baru sesuai dengan tujuannya seperti terlihat pada gambar 1diatas yang digambarkan oleh Krafzig Dirk, Karl Banke, dan Dirk Slama.
Dalam perancangan aplikasi, menggunakan SOA, aplikasi akan memanggil modul-modul yang sudah dibangun sebelumnya. Pendekatan modular ini bukanlah suatu hal baru. Teknik-teknik pemrograman terkini telah mengedepankan pendekatan modular dalam membangun aplikasi. Akan tetapi SOA berbeda dengan modular pembangunan aplikasi tersebut karena komponen (service) pada SOA dibangun dan berinteraksi dengan service lain secara bebas dan lepas (loose coupled).
Dengan bersifat loose coupled, sebuah service dapat di-panggil oleh program/service lainnya tanpa program pemanggil tersebut perlu memperhatikan di mana lokasi service yang dipanggil berada dan platform/teknologi apa yang digunakan oleh service tersebut. Loose coupling sangat penting bagi SOA karena dengan demikian pemanggilan sebuah service oleh service lainnya dapat dilakukan pada saat run-time seperti contoh penerapan SOA pada sebuah Bank.
http://3.bp.blogspot.com/_XCIBKNhFB9M/R9BJ8trKafI/AAAAAAAAApo/29CkGK9QxPE/s400/SOA-04.gif
Gambar 2. Implementasi SOA pada sebuah Bank


Pada SOA, service terbagi atas beberapa layer seperti terlihat pada gambar 3, yaitu;
1.    Enterprice Service Layer,
2.    Domain Service Layer,
3.    Aplication Service Layer.
Setiap service dalam satu layer akan saling ber-interaksi dan setiap layer saling ber-interaksi dengan layer yang lainnya dan layer-layer ini dapat digabungkan kembali menjadi satu service baru.
soa-service.png
Gambar 3. Interaksi Antar Layer dalam Service Oriented Architecture[2]

Syarat dalam Penerapan SOA
Untuk memudahkan penerapan SOA, sistem yang dibutuhkan adalah;
§  Interoperabilitas, yaitu di antara sistem yang berbeda dan bahasa pemrograman yang menyediakan dasar untuk integrasi antara aplikasi pada platform yang berbeda melalui sebuah protocol komunikasi. Salah satu contoh komunikasi tersebut tergantung pada konsep yang diterapkan. Menggunakan sebuah konsep untuk menurunkan kompleknya sebuah aplikasi, sehingga memungkinkan pengembang aplikasi untuk fokus pada fungsionalitas aplikasi, dan tidak terfokus pada rumitnya requirement dari sebuah protokol komunikasi.
§  Membuat sebuah gabungan resource. Membangun dan mempertahankan aliran data ke system database gabungan. Hal ini memungkinkan fungsi baru dikembangkan sebagai referensi format bisnis untuk setiap elemen data.

Prinsip SOA
Berikut prinsip-prinsip dalam menetapkan aturan dasar bagi pengembangan, pemeliharaan, dan penggunaan SOA:
§  Penggunaan kembali (re-use), granularity, modularity, composability, komponenisasi dan interoperability.
§  Standar aturan secara umum dan standar aturan kebutuhan spesifik.
§  Identifikasi dan kategorisasi, pengadaan dan pengiriman, serta pemantauan dan pelacakan.
Berikut prinsip-prinsip arsitektur spesifik untuk desain dan service definisi fokus pada tema tertentu yang mempengaruhi perilaku intrinsik sistem dan gaya desain SOA:
§  Service enkapsulasi - jasa konsolidasi untuk penggunaan SOA. Seringkali service tersebut tidak direncanakan berada di bawah SOA.
§  Service loose coupling - Service menjaga hubungan yang meminimalkan keterkaitan antar resource dan berdiri sendiri untuk bisa dimanfaatkan oleh service lain.
§  Service rule – Aturan service yang harus dipatuhi berupa perjanjian/kontrak antara service, seperti yang didefinisikan bersama oleh  service-service dan dipadukan akan digabungkan kesalam satu dokumen kontrak/aturan service.
§  Service abstrak – Diluar aturan service, service menyembunyikan logika pemrogramannya dari dunia luar.
§  Service usability - Logika dibagi menjadi service-service dengan tujuan dapat digunakan kembali oleh service yang lain.
§  Service composability - Koleksi service dapat dikoordinasikan dan dirakit untuk membentuk service komposit (service gabungan).
§  Service autonomy - Service memiliki kendali atas proses didalam service tersebut (encapsulate).
§  Service optimation - Semua service berada pada posisi yang sama dengan service lain tetapi pemilihan service berkualitas tinggi lebih diutamakan oleh serive lain.
§  Service discoverability - Service harus dirancang agar mencirikan service itu sendiri sehingga dapat ditemukan oleh service lain yang membutuhkan service tersebut melalui aturan-aturan service yang telah ditetapkan.
§  Service relevansi - Fungsi service yang dihadirkan dapat dikenali oleh service lain sehingga dapat dipakai kemali.

Selain itu, ada faktor yang mempengaruhi user ketika menimplementasikan  SOA:
§  Efisiensi dalam penggunaan system resource.
§  Service mature atau service yang telah teruji dan kecepatan kinerja service.
§  EAI (Enterprise Application Integration)

Karakteristik Service dalam SOA
Pada SOA ada 2 karakteristik service seperti terlihat pada gambar 4.
http://3.bp.blogspot.com/_XCIBKNhFB9M/R9BQwtrKajI/AAAAAAAAAqI/2987jorH4gc/s400/SOA-08.gif
Gambar 4. Karakteristik dalam SOA
1.    Service Interface.
http://1.bp.blogspot.com/_XCIBKNhFB9M/R9BLUNrKagI/AAAAAAAAApw/v1JUiy-4U34/s400/SOA-05.gif
Gambar 5. Service Interface
Service interface menyatakan bagaimana service tersebut dapat dipanggil seperti parameter input/output (I/O) dan dimana lokasi parameter itu berada.
Misalkan, service interface untuk Customer Lookup menyatakan berbagai cara untuk mendapatkan informasi tentang seorang customer (dari id customer atau nama dan sebagainya) dan struktur data customer yang didapatkan seperti pada gambar 5. Service Implementation adalah bagaimana logic dari service customer lookup tersebut dijalankan.
2.    Service implementation.
Service Implementation  sangat terkait dengan teknologi pemrograman yang digunakan.
SOA tidak memperdulikan bagaimana sebuah service diimplementasikan.
Entah ditulis dengan bahasa PHP atau Java, yang penting adalah bagaimana service tersebut dapat dipanggil dan memberikan informasi sesuai dengan Service Interface-nya. Karakteristik SOA yang tercakup dalamservice implementation adalah service tersebut harus business oriented. Dalam arti, setiap service yang di inisiasikan harus melakukan suatu aktivitas bisnis tertentu, misalkan Customer Lookup, Fund Transfer, Check Inventory, dan sebagainya. Tidak dapat dipungkiri pula bahwa keberhasilan SOA belakangan ini ikut dimotori oleh tingginya penerimaan teknologi web services di kalangan pengembang aplikasi. Walaupun ide tentang SOA telah ada sebelum web services dilahirkan, web services dan SOA saat ini telah menjadi suatu sinergi dan bahkan beberapa kalangan menganggap dengan menggunakan web services maka ia telah menerapkan SOA. Tetapi ini adalah sebuah hal yang berbeda.


Penerapan Web Service dalam SOA
Web service merupakan salah satu penerapan SOA. Web service membangunan-blok fungsional yang dapat diakses melalui Internet Protokol standar independen dari platform dan bahasa pemrograman yang berbeda. Service ini dapat dinamakan sebuah aplikasi baru atau hanya mengemas sistem lama yang telah ada agar menjadi network-enable.
Setiap bagian SOA bisa menjalankan salah satu peran atau kedua peran dibawah:
1.   Service Provider - Operator selular menciptakan web service interface dan akses informasi ke registri web service tersebut. Setiap penyedia service yang harus memutuskan untuk mempublish informasi, bagaimana membuat trade-off antara keamanan dan kemudahan service, bagaimana harga service, atau (tidak dikenakan biaya) bagaimana / apakah untuk mengeksploitasi service untuk memberikan nilai informasi pada service lain. Penyedia juga harus memutuskan apa kategori service harus terdaftar dalam service yang diberikan penghubung dan perjanjian apa yang diperlukan untuk menggunakan service ini. Register service apa saja yang tersedia di dalamnya, dan daftar semua penerima potensial dari service. Penghubung (operator/link/communicator/broker) kemudian memutuskan lingkup hubungan. Penghubung publik tersedia melalui Internet, sementara private broker hanya dapat diakses oleh tingkatan tertentu, misalnya, pengguna intranet perusahaan. Selain itu, harus diputuskan jumlah informasi yang akan diberikan. Beberapa broker mengkhususkan diri pada banyak listing. Lainnya menawarkan informasi yang banyak pada service terdaftar dalam service tersebut. Beberapa lanskap yang luas mencakup jasa dan lain-lain fokus dalam industri. Beberapa broker katalog broker lain. Tergantung pada model bisnis, broker dapat mencoba untuk memaksimalkan melihat, permintaan, jumlah listing atau keakuratan dari daftar. The Universal Deskripsi Discovery dan Integrasi (UDDI) mendefinisikan spesifikasi cara untuk mempublikasikan dan menemukan informasi tentang Web Service. Broker service teknologi lainnya (misalnya) ebXML(Elektronik Bisnis menggunakan Extensible Markup Language) dan mereka berdasarkan ISO / IEC 11179 Metadata Registry (MDR) standar.
2.   Service konsumen - konsumen service atau web service klien menempatkan entri dalam registri menggunakan berbagai broker menemukan operasi dan kemudian mengikat ke penyedia service untuk meminta salah satu web service. Apapun service-service konsumen perlu, mereka harus bawa ke broker, lalu mengikatnya dengan service masing-masing dan kemudian menggunakannya. Mereka dapat mengakses beberapa service jika service ini menyediakan berbagai service.
Penerapan SOA melalui web service seperti pada gambar 6.
SOA.gif
Gambar 6. Penerapan SOA melaui Web Service sebagai sentralisasi service[3]


Manfaat Penerapan SOA
Beberapa arsitek perancang IT perusahaan percaya bahwa SOA dapat membantu perusahaan merespon lebih cepat dan biaya-efektif terhadap perubahan kondisi pasar. Ini gaya arsitektur mempromosikan penggunaan kembali di makro (layanan) daripada tingkat mikro (kelas) tingkat. Hal ini juga dapat mempermudah interkoneksi - dan penggunaan - TI yang ada.
Dalam beberapa hal, seseorang bisa menganggap SOA sebagai evolusi arsitektur daripada sebagai revolusi. Ia menangkap banyak praktik terbaik dari arsitektur perangkat lunak sebelumnya. Dalam sistem komunikasi, misalnya, pembangunan sedikit telah terjadi solusi yang menggunakan binding statis benar-benar bicara dengan peralatan lainnya dalam jaringan. Dengan resmi merangkul pendekatan SOA, sistem seperti ini dapat memposisikan diri untuk menekankan pentingnya yang terdefinisi dengan baik, antar-beroperasi antarmuka yang sangat.
Banyak orang mempertanyakan apakah SOA hanya menghidupkan konsep seperti pemrograman modular (1970), desain berorientasi event (1980) atau antarmuka / desain berbasis komponen (1990)? SOA mempromosikan tujuan memisahkan pengguna (konsumen) dari implementasi layanan. Layanan sehingga dapat berjalan pada berbagai platform didistribusikan dan diakses melalui jaringan. Ini juga bisa memaksimalkan penggunaan kembali layanan.
SOA adalah sebuah disiplin dan desain arsitektur disusun untuk mencapai tujuan interoperabilitas meningkat (pertukaran informasi, usabilitas, dan composability), meningkat federasi (sumber daya pemersatu dan aplikasi sambil mempertahankan otonomi masing-masing dan self-governance), dan meningkatkan bisnis dan domain penyelarasan teknologi.
Service-Oriented Architecture (SOA) merupakan suatu pendekatan arsitektur (atau gaya) untuk membangun sistem perangkat lunak-intensif kompleks dari seperangkat universal yang saling berhubungan dan saling tergantung pada setiap blok.
SOA menyadari bisnis dan TI manfaat melalui memanfaatkan metodologi analisis dan desain pada saat jasa membuat. metodologi ini memastikan bahwa layanan tetap konsisten dengan visi dan roadmap arsitektur, dan bahwa mereka mematuhi prinsip-prinsip pelayanan-orientasi. Argumen yang mendukung aspek bisnis dan manajemen dari SOA diuraikan dalam berbagai publikasi.
Sebuah layanan terdiri dari unit yang berdiri sendiri dari fungsi yang tersedia hanya melalui antarmuka yang ditetapkan secara formal. Layanan dapat menjadi semacam "perusahaan-nano" yang mudah untuk memproduksi dan memperbaiki. Juga layanan dapat "mega-korporasi" dibangun sebagai karya terkoordinasi layanan sub-ordinat.
Sebuah peluncuran matang SOA efektif mendefinisikan API sebuah organisasi.
Alasan untuk memperbaiki pelaksanaan service sebagai proyek terpisah dari proyek yang lebih besar meliputi:
1.   Pemisahan mempromosikan konsep ke layanan bisnis yang dapat disampaikan dengan cepat dan bergerak secara independen dari proyek-proyek yang lebih besar dan lebih lambat-umum dalam organisasi. bisnis mulai memahami sistem dan user interface yang disederhanakan meminta layanan. Ini memberikan peningkatan perfomance. Artinya, itu mendorong inovasi bisnis dan mempercepat waktu ke pasar.
2.   Pemisahan mempromosikan decoupling layanan dari proyek. Hal ini mendorong desain yang baik sepanjang layanan dirancang tanpa mengetahui siapa konsumen perusahaan.
3.   Dokumentasi dan artefak uji layanan tidak tertanam dalam detail dari proyek yang lebih besar. Hal ini penting pada saat jasa harus digunakan kembali nanti.

  


Referensi
1.    Barry & Associates, Inc., Januari 2010, http://www.service-architecture.com/
3.    OASIS Organization on Wikipedia, Juli 2010, http://en.wikipedia.org/wiki/OASIS_(organization).


[1] Sebuah Organisasi Ahli untuk Standar Struktur Information atau Organization for the Advancement of Structured Information Standards (OASIS)