Saya ditanya hari ini apakah saya punya pengalaman dengan "Arsitektur Berorientasi Layanan" dan meskipun saya pikir saya punya. Konsepnya, bagi saya, tampak sangat kacau sehingga saya tidak tahu bagaimana Anda bisa dengan jujur menjawab pertanyaan itu lagi.
Saya menggunakan istilah Googling sebagai upaya untuk mendapatkan definisi konsep yang ringkas dan perbedaannya dengan arsitektur lainnya. Setelah membaca sejumlah artikel di atasnya, satu-satunya utas yang sepertinya bisa saya temukan adalah sistem dengan banyak komponen yang saling berbicara melalui beberapa jenis antarmuka, dengan mungkin sedikit preferensi untuk XML / SOAP.
Sepertinya hampir semua aplikasi dapat didefinisikan sebagai SOA, terutama aplikasi web. Apakah istilah ini jatuh ke dalam perangkap "Web 2.0" dan menjadi istilah yang berarti apa pun yang Anda inginkan?
Apakah saya jauh dari markas di sini? Ketika kalian mendengar istilah itu, apakah itu berarti sesuatu yang khusus untuk Anda? Jika demikian, saya akan menyukai definisi ringkas yang dengan jelas menunjukkan apa itu dan apa yang spesifik BUKAN SOA.
sumber
Jawaban:
Saya percaya arti asli SOA didasarkan pada layanan dengan antarmuka yang terdefinisi dengan baik yang dapat dikonsumsi secara pemrograman . Fokusnya adalah pada antarmuka layanan daripada terminal UI, komunikasi, atau database. Bagian kuncinya adalah layanan yang mengonsumsi layanan lain. Layanan A dapat memanggil Layanan B, mendapatkan hasilnya dan memanggil Layanan C atau D. Anda dapat memiliki satu set layanan khusus dan merancang solusi dengan menggabungkannya dengan cara yang memecahkan masalah pelanggan.
SOA sering bingung dengan SaaS (perangkat lunak sebagai layanan), yang mengacu pada model penetapan harga di mana pengguna membayar untuk penggunaan layanan yang mereka berlangganan, daripada membeli lisensi untuk salinan produk perangkat lunak. Untuk menjawab paragraf ketiga dalam pertanyaan Anda, aplikasi Web mungkin bukan SOA, tetapi bisa berupa SaaS.
Istilah ini pasti telah kehilangan beberapa maknanya. Dalam organisasi tempat saya bekerja, istilah SOA sering digunakan secara bergantian dengan SaaS dan merujuk pada tim profesional TI ( teknologi informasi yang bertentangan dengan pengembangan produk perangkat lunak ) yang mengkonfigurasi server dan router dan menginstal produk perangkat lunak untuk menjalankannya. Beberapa dari mereka memiliki judul seperti "Arsitek SOA", tetapi tidak satu pun dari mereka yang ada hubungannya dengan merancang, merancang, mengimplementasikan, atau menguji perangkat lunak.
sumber
Saya telah melakukan hal yang sama SOA googling untuk melihat apa itu sebenarnya, dan ya itu disalahgunakan sedikit. Ketika saya memikirkan SOA saya memikirkan hal berikut:
SOA dapat dikontraskan dengan arsitektur Client-Server (arsitektur layanan stateful) dan perpustakaan, yang merupakan modul yang terhubung ke program melalui linker.
Jadi ketika orang membicarakannya, saya biasanya mengambilnya dengan sebutir garam. Saya juga cenderung menyebutnya "layanan web". Dengan layanan web, arsitektur tersirat.
sumber
Definisi ketat SOA jauh melampaui garis biaya / manfaat untuk menjadi teoritis dalam banyak kasus.
Kecuali jika produk Anda adalah layanan itu sendiri, Anda sering membutuhkan sudut pandang yang berbeda.
Definisi SOA yang dapat digunakan berarti bahwa keseluruhan arsitektur Anda ramah layanan. Suatu sistem yang dibangun sepenuhnya dari layanan atom biasanya bukan rencana yang tepat, dan beberapa layanan akan diatur secara fungsional sementara yang lain akan menjadi tanggung jawab tunggal. Saya mungkin memiliki kotak hitam, saya mungkin memiliki proses offline, tetapi jika ada koleksi layanan yang dapat ditemukan di mana saya bisa mendapatkan sejumlah pekerjaan yang berarti yang merupakan definisi minimum saya.
Selain dari perdebatan tentang apa sebenarnya artinya, konsep (apa pun artinya) telah menderita di banyak kalangan dengan diterapkan ke tempat-tempat itu tidak cocok.
Sebagai contoh, Jika saya membangun sesuatu yang dimaksudkan untuk menjadi proses kotak hitam dan skala melalui paralelisme bukan segmentasi dan distribusi saya mungkin memiliki layanan untuk mengekspos / berbicara dengan kotak hitam, tetapi beberapa orang terus berusaha untuk menempatkan layanan di dalam kotak.
Sebagai definisi teknis yang ketat itu selalu tidak terdefinisi, tetapi idenya bukan tanpa prestasi di mana ia cocok.
sumber
Saya memiliki nasib buruk untuk bekerja pada beberapa sistem perusahaan di mana manajemen telah dijual di SOA. Sebagai pengembang saya melihat sistem dan saya melihat banyak perangkat lunak di belakang layanan web yang melakukan hal-hal. Itu bisa saja ditulis dalam berbagai bahasa dan arsitektur, yang tidak penting atau relevan dengan klien yang memanggil layanan dan non yang sebenarnya memiliki akronim "SOA" di mana saja dalam dokumentasi mereka.
Tetapi manajemen menginginkan "SOA" !!! Jadi mereka telah membeli server yang sangat mahal dari perusahaan besar tertentu yang memiliki stiker "SOA" yang diterapkan di atas stiker "Layanan Web" sebelumnya yang telah diterapkan di atas stiker "JEE" sebelumnya yang telah diterapkan di atas .... Anda mendapatkan idenya. Dan sebagai hasilnya, kita sebagai pengembang duduk sambil menyeret dan menjatuhkan ikon bty-itty di sekitar layar untuk membuat "SOA" "COMPONENTS" yang berfungsi setengah dan juga jika kita telah melakukannya dengan sesuatu yang sederhana seperti kacang EBJ3, komponen pegas dll. .
Jadi saran saya adalah jika Anda ditanya tentang SOA, katakan "Ya saya sudah melakukan SOA, saya telah menulis banyak sistem yang menggunakan Arsitektur Berorientasi Layanan untuk melakukan hal-hal. Teknologi SOA mana yang Anda tanyakan?". Dan jika mereka mulai berbicara dengan mata bersinar dan pandangan sedih tentang SOA COMPONENTS, DRAG AND DROP, dan bagaimana hal itu membuat pengembangan menjadi lebih mudah. Mundur perlahan dan hindari kontak mata!
sumber
Saya pikir itu mungkin masuk akal sedikit: satu hal adalah ketika Anda memiliki "budak" modul dipanggil saat diperlukan, dan satu hal lagi adalah ketika Anda memiliki proses layanan / daemon berjalan secara independen dan menanggapi permintaan Anda, mungkin berbicara satu sama lain, menjalani hidup mereka hidup sendiri dengan kata lain. Dengan pendekatan ini Anda dapat memiliki sistem yang besar, terukur, dan terdistribusi secara fisik. Saya telah melihat beberapa di bidang telepon seluler, misalnya. Tapi ini hanya dugaan saja.
(Sekarang mari kita lihat apa yang dikatakan Wikipedia tentang SOA ... Whoa.)
sumber