Adakah yang bisa menjelaskan dalam bahasa Inggris yang sederhana tentang SOA ? Saya mendengar SOA di sini, SOA di sana, tetapi saya tidak dapat memahami secara pasti apa itu SOA dan untuk apa digunakan. Apakah itu suatu konsep sederhana dan kemudian berkembang menjadi sesuatu yang besar atau apa?
Semua dokumen, termasuk wiki agak abstrak atau mungkin saya idiot dan tidak mengerti. Apakah ada panduan idiot tentang ini?
Apa sebenarnya yang ada di balik ketiga huruf ini?
Jawaban:
Anda mungkin menemukan artikel ini (Apa itu SOA? - Penjelasan SOA dan Web Services) berguna.
Penggoda kecil:
SOA adalah gaya aplikasi arsitektur sedemikian rupa sehingga mereka terdiri dari agen perangkat lunak diskrit yang memiliki antarmuka yang sederhana dan terdefinisi dengan baik dan diatur melalui kopling longgar untuk melakukan fungsi yang diperlukan.
Ada 2 peran dalam SOA - penyedia layanan dan konsumen layanan. Agen perangkat lunak dapat memainkan kedua peran tersebut. SOA bukanlah konsep yang sepenuhnya baru - namun, artikel ini terutama berfokus pada SOA seperti yang diterapkan dengan layanan web.
sumber
SOA adalah lencana baru untuk beberapa ide yang sangat lama:
Bagilah kode Anda menjadi modul yang dapat digunakan kembali.
Rangkum dalam modul keputusan desain apa pun yang mungkin berubah.
Rancang modul Anda sedemikian rupa sehingga dapat digabungkan dengan berbagai cara yang berguna (terkadang disebut "keluarga" atau "lini produk").
Ini semua adalah prinsip pengembangan perangkat lunak dasar, banyak di antaranya pertama kali diartikulasikan oleh David Parnas.
Apa yang baru di SOA adalah
Anda melakukannya di jaringan.
Modul berkomunikasi dengan mengirimkan pesan satu sama lain melalui jaringan, bukan dengan mekanisme bahasa pemrograman yang lebih tradisional seperti panggilan prosedur. Secara khusus, dalam arsitektur berorientasi layanan, bagian-bagian tersebut umumnya tidak memiliki status yang dapat berubah (variabel global dalam program tradisional). Atau jika mereka berbagi status, status tersebut dikunci dengan hati-hati dalam database yang merupakan agen dan dapat dengan mudah mengelola beberapa klien bersamaan.
sumber
Saya melihat banyak jawaban yang menjelaskan Arsitektur Berorientasi Layanan (SOA) menggunakan kata-kata dan istilah teknis yang lebih canggih. Saya ingin mencoba menjelaskannya untuk orang awam, menggunakan analogi dalam bahasa Inggris yang sederhana.
Tetapi pertama-tama deskripsi SOA
SOA dapat dijelaskan dalam tiga lapisan seperti yang terlihat pada gambar di bawah ini. Di satu sisi kami memiliki Penyedia dan di sisi lain kami memiliki Konsumen , dipisahkan oleh Jembatan tempat kedua belah pihak berkomunikasi.
Konsumen menggunakan sejumlah Aplikasi yang diperlukan untuk bisnisnya dan penyedia menggunakan Komponen yang menyediakan informasi untuk aplikasi ini. Mereka berkomunikasi melalui sekumpulan Layanan menggunakan arsitektur umum.
Analogi
Bayangkan sebuah rumah di pedesaan, yang dalam banyak hal merupakan bagian dari komunitas yang lebih besar, seperti kota atau kota. Kota ini memiliki sistem yang kompleks untuk menyediakan air dan listrik, menangani sanitasi, menyediakan transportasi, dan utilitas lainnya. The Rumah adalah konsumen dalam model ini, Kota (atau masyarakat) adalah penyedia dan pipa, selokan, kabel listrik, serat optik dll adalah Infrastruktur di mana mereka berkomunikasi.
Model ini secara longgar dapat dibandingkan dengan SOA. Orang-orang di dalam rumah menggunakan sejumlah "aplikasi" yang berbeda seperti radiator, komputer, toilet, lampu, pemanas di bawah lantai, bak mandi, dll. Aplikasi ini tidak peduli bagaimana kota menghasilkan air, menghasilkan listrik, atau menangani limbah selama saat bekerja. Komponen kota adalah genset, pompa air dan area sanitasi. Ini menyediakan rumah dengan semua kebutuhan ini tetapi terserah rumah untuk menggunakannya dengan cara apa pun yang dianggapnya cocok.
Saya harap ini memberi setidaknya seseorang gambaran yang lebih baik tentang SOA.
sumber
Anggaplah Anda memiliki empat juru masak. Dalam SOA, Anda menganggap mereka saling membenci, jadi Anda berusaha untuk membiarkan mereka sesedikit mungkin berbicara satu sama lain.
Bagaimana kamu melakukannya? Nah, pertama-tama Anda akan menentukan peran dan antarmuka - juru masak 1 akan membuat salad, juru masak 2 akan membuat sup, juru masak 3 akan membuat steak, dll. Kemudian Anda akan menempatkan hidangan dengan rapi di atas meja (jadi ini adalah antarmuka) dan berkata, "Semua orang tolong tempatkan kreasi Anda ke piring yang Anda tentukan. Jangan pedulikan orang lain.".
Dengan cara ini, keempat juru masak harus sesedikit mungkin berbicara satu sama lain, yang sangat bagus dalam pengembangan perangkat lunak - tidak harus karena mereka saling membenci, tetapi karena alasan lain seperti lokasi fisik, efisiensi dalam membuat keputusan, dll.
Ini juga berarti Anda dapat menggabungkan kembali hidangan (layanan) sesuka Anda. Misalnya, Anda mungkin hanya menggunakan makanan penutup untuk melayani kafe, atau hanya mengambil sup dan menggabungkannya dengan roti yang Anda beli dari perusahaan lain untuk menyediakan menu yang lebih murah, atau membiarkan restoran lain menggunakan salad Anda untuk digabungkan dengan hidangan mereka, dll. .
Salah satu implementasi SOA yang paling sukses ada di Amazon. Karena desainnya, mereka dapat mengemas ulang seluruh infrastruktur dan menjualnya sebagai Amazon Web Service.
* Ini hanya satu aspek SOA.
sumber
SOA adalah gaya arsitektur tetapi juga visi tentang bagaimana aplikasi heterogen harus dikembangkan dan diintegrasikan. Tujuan utama SOA adalah untuk beralih dari aplikasi monolitik dan memiliki sekumpulan layanan yang dapat digunakan kembali yang dapat yang dapat disusun untuk membangun aplikasi.
IMHO, SOA hanya masuk akal di tingkat perusahaan, dan tidak berarti apa-apa untuk satu aplikasi.
Di banyak perusahaan, setiap departemen memiliki perangkat aplikasi perusahaannya sendiri yang tersirat
Fitur serupa diimplementasikan beberapa kali
Data (misalnya data pelanggan atau karyawan) perlu dibagi di antara beberapa aplikasi
Penerapannya berpusat pada departemen.
Dengan SOA, idenya adalah membuat layanan yang dapat digunakan kembali tersedia di seluruh perusahaan, sehingga aplikasi dapat dibangun dan disusun darinya. Janji SOA adalah
Tidak perlu mengimplementasikan kembali fitur serupa berulang kali (mis. Menyediakan layanan pelanggan atau karyawan)
Memfasilitasi integrasi aplikasi bersama dan akses ke data atau fitur umum
Visi SOA membutuhkan pergeseran teknologi serta pergeseran organisasi . Sementara itu memecahkan beberapa masalah, itu juga memperkenalkan yang lain, misalnya keamanan jauh lebih sulit dengan SOA daripada dengan aplikasi monolitik. Oleh karena itu SOA tunduk pada diskusi tentang apakah itu berfungsi atau tidak.
Ini adalah tampilan SOA 1000 kaki. Namun tidak berhenti sampai di sini. Ada konsep lain yang melengkapi SOA seperti orkestrasi proses bisnis (BPM), bus layanan perusahaan (ESB), pemrosesan acara kompleks (CEP), dll. Semuanya menangani masalah penyelarasan TI / bisnis , yaitu bagaimana memiliki TI. dapat mendukung bisnis secara efektif.
sumber
SOA adalah singkatan dari Service Oriented Architecture.
Anda dapat memikirkan untuk menulis modul akses database yang sangat independen sehingga dapat bekerja sendiri tanpa ketergantungan apa pun. Modul ini dapat mengekspos kelas yang dapat digunakan oleh perangkat lunak host mana pun yang membutuhkan akses database. Tidak ada konfigurasi start-up dalam aplikasi host. Apa pun yang dibutuhkan atau diperlukan dikomunikasikan melalui kelas yang diekspos oleh modul akses database. Kita dapat memanggil kelas-kelas ini sebagai layanan dan menganggap modul sebagai layanan yang diaktifkan.
sumber
Sejauh yang saya pahami, konsep dasarnya adalah Anda membuat "layanan" kecil yang menyediakan sesuatu yang berguna untuk sistem lain dan menghindari membangun sistem besar yang cenderung melakukan segala sesuatu di dalam sistem.
Jadi Anda menentukan protokol yang akan Anda gunakan untuk interaksi (katakanlah, itu mungkin layanan web SOAP) dan biarkan "sistem-yang-melakukan-bisnis-kerja" Anda untuk berinteraksi dengan layanan kecil untuk mencapai "tujuan besar" Anda .
sumber
Saya sarankan Anda membaca artikel oleh Thomas Erl dan Roger Sessions, ini akan memberi Anda pemahaman yang kuat tentang apa itu SOA. Ini juga merupakan sumber daya yang baik, lihat SOA yang dijelaskan untuk bos Anda untuk penjelasan awam
Membangun SOA
Pola Desain SOA
Mencapai integritas dalam SOA
Mengapa SOA Anda harus seperti VW Beetle
SOA menjelaskan untuk atasan Anda
Kinerja Layanan WCF
sumber
apa yang cenderung terjadi dalam organisasi besar adalah bahwa dari waktu ke waktu semuanya menjadi sistem monolitik atau berbeda di mana-mana atau sedikit dari keduanya. Seseorang akhirnya masuk dan berkata kita sedang kacau. Sekarang, Anda ingin mendesain ulang (uang kepada seseorang) semuanya untuk diorientasikan dalam semacam monotlitik tergantung pada siapa Anda membayar paradigma tetapi pada saat yang sama dapat menambahkan potongan dan bagian secara independen dari master / monolit.
Jadi Anda membeli SOA Oracle dan Oracle menjadi bos dari semua bagian Anda. Semua pemain lain yang datang harus bekerja dengan SOA melalui layanan (layanan web atau apa pun yang dimilikinya.) Monolit Oracle menangani semuanya (monolit tidak berarti menghina). Oh ya, Anda mendapatkan ASP.NET MVC di bagian depan atau yang lainnya.
Hal utama adalah memindahkan hal-hal masuk dan keluar dari sistem mereka tanpa berdampak dan menjaga vendor Oracle SOA, Microsoft WCF, sebagai otak dari semuanya. semuanya seperti oop / ood, lancar, hal-hal yang bergerak masuk dan keluar dengan sedikit atau tanpa dampak, bahkan layanan manusia, bukan hanya komputer.
Bagi saya itu hanya berarti sekumpulan layanan web (atau apa pun yang kita sebut mereka di masa depan) dengan tampilan depan yang bagus. Dan jika Anda memiliki database, tekan saja database dan berhenti mengkhawatirkan kata kunci. tidak masalah.
sumber
Hanya satu saran: -
Baca Konsep, Teknologi, dan Desain SOA oleh Thomas Erl.
Ini dengan sangat indah memberikan rincian tentang SOA dalam bahasa Inggris sederhana dan dengan studi kasus.
sumber
Nah Anda lihat .. SOA adalah singkatan dari Service Oriented Architecture .... Dengan kata yang paling sederhana, Anda menulis sebuah kode yang sangat umum yaitu melakukan sesuatu yang dapat digunakan di banyak aplikasi ... mungkin seperti buku alamat atau mungkin kalkulator. dan Anda meluncurkan kode ini di IIS. Jadi, Anda memberikan layanan melalui kode Anda. Jadi Anda adalah penyedia layanan. Sekarang seseorang ingin menggunakan kode yang serupa maka dia tidak perlu menulis kode itu lagi. Dia hanya menggunakan kode Anda mungkin melalui layanan web. Karenanya ia menjadi konsumen jasa. Oleh karena itu pembuatan program menggunakan layanan tersebut disebut SOA. Dan kopling longgar ada karena penyedia layanan dan konsumen dapat berinteraksi bahkan jika mereka menggunakan bahasa pemrograman yang berbeda. Semoga kamu mengerti.
sumber
dari blog ittoolbox.
Berikut ini garis besar persamaan dan perbedaan teknik desain masa lalu:
• SOA versus Pemrograman Terstruktur o Kemiripan: Paling mirip dengan panggilan subrutin di mana parameter diteruskan dan pengoperasian fungsi diambil dari pemanggil - misalnya tautan CICS dan eksekusi dan kata cadangan COBOL CALL. Copybooks digunakan untuk menentukan struktur data yang biasanya didefinisikan sebagai skema XML untuk layanan. o Perbedaan: SOA digabungkan secara longgar yang menyiratkan bahwa perubahan pada layanan memiliki dampak yang lebih kecil bagi konsumen (program "panggilan") dan layanan dapat dioperasikan antarbahasa dan platform.
• SOA versus OOA / OOD o Kesamaan: Enkapsulasi, Abstraksi dan Antarmuka yang Ditentukan o Perbedaan: SOA digabungkan secara longgar tanpa hierarki kelas atau warisan, Abstraksi tingkat rendah - tingkat kelas versus layanan bisnis
• SOA versus Pengembangan Berbasis Komponen (CBD) lama - misalnya CORBA, DCOM, EJB o Kesamaan: Digunakan kembali melalui komponen perakitan, Antarmuka, Panggilan jarak jauh o Perbedaan: Adopsi standar yang luas, Skema XML vs. Objek Marshaled, Orkestrasi Layanan, Desain untuk digunakan kembali lebih mudah, layanan berfokus pada bisnis vs. fokus pada TI, layanan bisnis tentu saja berbutir (cakupan luas)
• SOA (untuk integrasi) versus Enterprise Application Integration (EAI) o Kesamaan: Praktik terbaik (antarmuka yang terdefinisi dengan baik, skema standar, arsitektur yang digerakkan oleh peristiwa), antarmuka yang dapat digunakan kembali, skema umum o Perbedaan: Standar, adopsi, dan alat yang ditingkatkan
sumber
Membaca tanggapan di atas, menurut saya SOA adalah apa yang telah dilakukan oleh pengembang (setidaknya yang baik) sejak hari pertama.
sumber
Ini juga bisa berarti "Struktur Array" (sebagai lawan dari "Array of Structs") yang merupakan topik umum dalam pemrograman paralel (terutama SIMD), tapi saya rasa bukan itu yang Anda maksud di sini!
sumber
SOA adalah kata kunci yang diciptakan oleh vendor teknologi untuk membantu menjual teknologi terkait Enterprise Service Bus mereka. Idenya adalah Anda membuat aplikasi pulau kecil Anda dalam perusahaan (misalnya: sistem akuntansi, sistem kontrol stok, dll) semua layanan eksposur, sehingga mereka dapat diatur secara fleksibel ke dalam 'aplikasi', atau lebih tepatnya menjadi bagian dari bisnis lingkup perusahaan agregat logika.
Pada dasarnya beban omong kosong lama yang hampir tidak pernah berhasil, karena meleset dari poin bahwa alasan mengapa teknologi seperti itu dalam sebuah organisasi adalah karena budaya, evolusi, sejarah perusahaan, dan penguncian yang begitu tinggi sehingga setiap upaya untuk merestrukturisasi teknologi pasti akan gagal.
sumber
Dengarkan edisi minggu ini dari podcast Floss Weekly , yang mencakup SOA. Penjelasannya cukup tinggi dan tidak menyelidiki terlalu banyak detail teknis (meskipun contoh proyek SOA yang lebih konkret dan dapat dikenali akan sangat membantu.
sumber
Arsitektur aplikasi tradisional adalah:
Jika Anda ingin mengakses data secara terprogram, Anda mungkin perlu melakukan pengikisan layar.
SOA menurut saya adalah arsitektur yang berfokus pada pemaparan data yang dapat dibaca mesin dan / atau API, bukan pada pemaparan UI.
sumber
SOA atau Service-Oriented Architecture adalah pola arsitektur perangkat lunak di mana aplikasi atau sistem dibangun dari layanan perangkat lunak yang mendasari (dan biasanya didistribusikan) yang sesuai dengan sekumpulan karakteristik tertentu, yaitu:
Tujuan utama SOA adalah ketangkasan pengembangan perangkat lunak, yaitu kemampuan untuk merespon perubahan dengan mudah, dan murah, sehingga memungkinkan bisnis untuk merespon dengan cepat pada pasar yang berubah.
Layanan biasanya (tetapi tidak secara eksklusif) diimplementasikan sebagai layanan web, yaitu mereka beroperasi melalui protokol HTTP web di mana-mana, dan diimplementasikan baik menggunakan SOAP berbasis XML atau paradigma REST yang ringan (dan lebih populer).
sumber
Tergantung siapa Anda!
Jika Anda seorang pemilik bisnis, SOA adalah solusi untuk meningkatkan pendapatan dan kelincahan bisnis Anda. Jika Anda seorang arsitek perusahaan, SOA adalah cara untuk menggambar perangkat lunak yang bagus dan bersih di atas kanvas kosong. Jika Anda seorang arsitek, SOA adalah solusi untuk merancang layanan yang digabungkan secara longgar melalui platform integrasi, hanya dengan menyambungkan layanan ke outlet. Jika Anda seorang pengembang SOA adalah paradigma pemrograman di mana layanan berada di pusat desain dan kode.
Anda harus membaca 100-SOA-Questions [pdf]
Bersulang
sumber
Service Oriented Architecture (SOA) adalah gaya arsitektur perangkat lunak yang membangun aplikasi sebagai kumpulan bagian yang dapat dicolokkan, yang masing-masing dapat digunakan kembali oleh aplikasi lain.
sumber