Apa SOA "dalam bahasa Inggris sederhana"? [Tutup]

112

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?

Elena
sumber
7
Saya pikir akan lebih baik juga jika orang berhenti menjelaskan SOA secara abstrak dengan cara yang hanya orang yang sudah memahaminya yang dapat memahami dan menunjukkan contoh pengkodean "Halo, dunia". Kode demo berbicara lebih keras daripada mengoceh.
Phil
@Phil - Periksa jawaban saya. Saya sudah mencoba menggunakan analogi.
Niklas
Sebenarnya ada panduan idiot: amazon.com/Service-Oriented-Architecture-Dummies-Edition/dp/…
nullability
3
Amazon sebenarnya adalah contoh sempurna. Pada titik tertentu, Bezos bersikeras bahwa setiap bagian dari basis kode Amazon harus berupa API dan menanggapi permintaan web. Artikel di sini: apievangelist.com/2012/01/12/… . Anda dapat melihat ini saat Anda masuk - Amazon menggunakan OpenID untuk sistem masuknya sendiri! Sebagian besar situs web menggunakan sistem bawaan untuk masuk. Salah satu keuntungannya adalah saya pikir mereka dapat menggunakan login yang sama untuk semua situs dan layanan mereka.
Jordan Reiter

Jawaban:

49

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.

KB22
sumber
6
Mmmmm ... CORBA, IDL, client-server ... terdengar sangat tahun 1980-an itu menyakitkan! ;-D
CesarG
64

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.

Norman Ramsey
sumber
43

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.


masukkan deskripsi gambar di sini


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.

Niklas
sumber
27

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.

Enno Shioji
sumber
17

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

  1. Fitur serupa diimplementasikan beberapa kali

  2. Data (misalnya data pelanggan atau karyawan) perlu dibagi di antara beberapa aplikasi

  3. 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

  1. Tidak perlu mengimplementasikan kembali fitur serupa berulang kali (mis. Menyediakan layanan pelanggan atau karyawan)

  2. Memfasilitasi integrasi aplikasi bersama dan akses ke data atau fitur umum

  3. Upaya pengembangan yang berpusat pada perusahaan.

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.

ewernli
sumber
1
ya, tetapi orang lain ingin Anda membeli atau menggunakan monolit mereka untuk mengontrol semua hal seperti Oracle SOA atau menggunakan Microsoft WCF. Tidakkah akan selalu ada monolit?
johnny
WCF dan Oracle SOA adalah ketergantungan teknologi yang tidak relevan dengan solusi SOA. Konsep ini didasarkan pada layanan mandiri yang mudah dirawat, bukan teknologi tertentu.
BentOnCoding
4
1 untuk menyebutkan arti 'besar' SOA di tingkat organisasi. Banyak jawaban lain yang berfokus pada aspek komponen perangkat lunak, yang sebenarnya bukanlah gambaran keseluruhan (meskipun itu adalah makna yang sering digunakan orang).
occulus
10

SOA adalah singkatan dari Service Oriented Architecture.

SOA sedang merancang dan menulis aplikasi perangkat lunak sedemikian rupa sehingga modul perangkat lunak yang berbeda dapat diintegrasikan secara mulus dengan tingkat kegunaan ulang yang tinggi.

Sebagian besar orang membatasi SOA sebagai penulisan klien / server perangkat lunak-layanan web. Tapi konteks SOA terlalu kecil. SOA jauh lebih besar dari itu dan selama beberapa tahun terakhir layanan web telah menjadi media komunikasi utama yang mungkin merupakan alasan mengapa orang menganggap SOA sebagai layanan web pada umumnya yang membatasi batas-batas dan arti SOA.

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.

Mempraktikkan SOA memberikan tingkat kegunaan ulang yang tinggi dengan menerapkan KERING [Jangan ulangi diri Anda] yang menghasilkan perangkat lunak yang sangat mudah dirawat. Pemeliharaan adalah hal pertama yang dipikirkan arsitektur perangkat lunak - SOA memberikannya kepada Anda.

ini. __curious_geek
sumber
6

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 .

orang naif
sumber
2
Mohon jangan menebak-nebak pertanyaan arsitektur. Stackoverflow adalah tempat untuk mendapatkan jawaban Pakar, bukan tebakan acak dari artikel yang Anda lihat tahun lalu. Sangat menyedihkan bahwa jawaban ini menerima suara apa pun.
BentOnCoding
4

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.

johnny
sumber
4

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.

ivorykoder.dll
sumber
3

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.

sinar dev
sumber
3

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

Jani Syed
sumber
3

Membaca tanggapan di atas, menurut saya SOA adalah apa yang telah dilakukan oleh pengembang (setidaknya yang baik) sejak hari pertama.

ziggy
sumber
2

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!

Tom
sumber
Sedikit downvoting yang keras tanpa komentar !!
Tom
2
@Downvoters: Pertanyaan tersebut tidak benar-benar memberikan konteks yang cukup untuk membenarkan jawaban Toms yang downvoting. Hanya karena orang lain dilumpuhkan oleh istilah SOA dalam konteks arsitektur layanan tidak membuat hal ini menjadi salah.
Sebastian Mach
1
@phresnel Tag is soa dan jika Anda dapat mengarahkan kursor ke atasnya sebentar Anda akan melihat deskripsi yang jelas tentang konteks pertanyaan tersebut.
BentOnCoding
4
@Robotsushi: Dan jika Anda dapat meneliti tag dengan cepat Anda dapat melihat bahwa deskripsi telah ditambahkan lebih dari setahun setelah jawaban Toms.
Sebastian Mach
Saya rasa jika Anda tidak yakin dengan konteks pertanyaan maka Anda tidak dapat memberikan jawaban ahli. Sebuah pertanyaan sederhana dalam komentar mengenai sifat pertanyaan akan dengan cepat memecahkan misteri ini.
BentOnCoding
2

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.

Penjaga
sumber
1

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.

Dana the Waras
sumber
1

Arsitektur aplikasi tradisional adalah:

  • Antarmuka pengguna
  • Hal-hal yang tidak ditentukan (implementasi) yang dikemas / disembunyikan di balik antarmuka pengguna

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.

ChrisW
sumber
1

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:

  1. Antarmuka, Kebijakan dan Berbasis kontrak
  2. Transparansi lokasi
  3. Otonom
  4. Abstrak
  5. Dapat digunakan kembali
  6. Komposabel
  7. Tanpa kewarganegaraan
  8. Dapat ditemukan
  9. Dapat diperluas
  10. Hubungan renggang

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).

Robert Morschel
sumber
1

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

Oussama L.
sumber
1

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.

Joe Pardi
sumber