Orkestrasi vs. Koreografi

182

Apa perbedaan antara orkestrasi layanan dan koreografi layanan dari sudut pandang intra-organisasi.

PetrosB
sumber

Jawaban:

334

Teknologi dasar seperti (XML, SOAP, WSDL) menyediakan sarana untuk menggambarkan, menemukan, dan memohon layanan sebagai entitas dengan haknya sendiri. Namun, teknologi ini tidak memberikan detail perilaku yang kaya tentang peran layanan dalam kolaborasi yang lebih kompleks. Kolaborasi ini mencakup urutan kegiatan dan hubungan antar kegiatan, yang membangun proses bisnis. Ada dua cara untuk membangun proses ini: orkestrasi layanan dan koreografi layanan.

Orkestrasi layanan

Orkestrasi layanan merupakan proses bisnis tunggal yang dapat dieksekusi terpusat (orkestrator) yang mengoordinasikan interaksi antara berbagai layanan. Orkestrator bertanggung jawab untuk memohon dan menggabungkan layanan.

Hubungan antara semua layanan yang berpartisipasi dijelaskan oleh titik akhir tunggal (yaitu, layanan komposit). Orkestrasi meliputi pengelolaan transaksi antara layanan individual. Orkestrasi menggunakan pendekatan terpusat untuk komposisi layanan.

Orkestrasi

Koreografi Layanan

Koreografi layanan adalah deskripsi global dari layanan yang berpartisipasi, yang ditentukan oleh pertukaran pesan, aturan interaksi dan perjanjian antara dua atau lebih titik akhir. Koreografi menggunakan pendekatan desentralisasi untuk komposisi layanan.

Koreografi

Koreografi menggambarkan interaksi antara beberapa layanan, di mana orkestrasi mewakili kontrol dari perspektif satu pihak. Ini berarti bahwa koreografi berbeda dari orkestrasi sehubungan dengan di mana logika yang mengontrol interaksi antara layanan yang terlibat harus berada.

Andrei
sumber
7
Gambar fantastis untuk menunjukkan keduanya! Di mana Anda mendapatkannya?
David Mann
6
@DavidMann Terima kasih banyak atas komentar Anda, dan harap angkat suara jika Anda merasa itu berguna bagi Anda. Saya membuat diagram ini di Visio, dan sebagai inspirasi saya menggunakan beberapa literatur dalam komposisi layanan. Namun, saya menyadari bahwa jawaban ini adalah 2 tahun yang lalu ketika saya baru mulai membaca tentang komposisi layanan. Saya akan memperbarui jawaban ini dengan referensi dan memperluas kepatutan keduanya
Andrei
@Andrei: Tidak mungkin lebih sederhana dari ini.
Anshul Nigam
Apakah masuk akal untuk menggabungkan orkestrasi dan koreografi? misalnya memiliki orkestrasi untuk alur kerja sinkron inti, tetapi kemudian beberapa koreografi untuk mengalirkan peristiwa async kembali ke kemampuan sumber (layanan microser). Dalam skenario saya, pendekatan ini mungkin menyelamatkan saya harus melakukan saga / state-machine dan logika kompensasi.
Ryan.Bartsch
1
Beberapa pembaca dapat menyimpulkan dari diagram orkestrasi Anda bahwa orkestrasi berarti doa serentak dari layanan pengendali ke layanan penyediaan. Saya ingin mengklarifikasi bahwa komunikasi Invoke-Balas juga dapat diselesaikan menggunakan metode asinkron, termasuk. melalui broker pesan.
Christoph
34

Orkestrasi layanan : Anda mengumpulkan beberapa layanan dengan logika tetap. Logika ini dijelaskan di satu tempat. Anda dapat membayangkan tim orang dengan manajer melakukan manajemen mikro. Manajer dengan cepat memberi tahu apa, kapan dan siapa yang harus dilakukan. Anggota tim tidak peduli dengan seluruh tujuan pekerjaan, manajer menggabungkan output menjadi satu hasil. Contoh praktis adalah proses BPEL. Proses BPEL mengandung logika, dapat memanggil beberapa layanan dan menggabungkan respons mereka menjadi satu respons layanan.

Koreografi layanan : logika keputusan didistribusikan, tanpa titik terpusat. Anda dapat membayangkan sebuah rumah, di mana semua orang bertujuan untuk kebaikan bersama dan bekerja secara proaktif tanpa manajemen mikro. Atau Anda dapat membayangkan tubuh manusia, di mana anggota yang berbeda saling bergantung dan bekerja untuk tujuan bersama. Contoh praktisnya adalah pemrosesan yang didorong oleh peristiwa, di mana agen diaktifkan oleh suatu peristiwa dan melakukan tugasnya. Semua agen membuat sistem bersama. Tidak ada logika terpusat. Kemungkinan koreografi mungkin lebih jauh dari orkestrasi karena lebih selaras dengan dunia nyata.

Pendapat saya adalah bahwa kita tidak perlu membedakan banyak di antara keduanya, karena kita perlu fokus pada logika bisnis. Di mana satu titik logika bekerja, kami melakukan orkestrasi. Di mana masalah tidak dapat ditutupi oleh logika terpusat, kami terpaksa melakukan koreografi. Itulah sebabnya kita sering menemukan orkestrasi dalam IT, sedangkan koreografi tetap lebih merupakan konsep akademis dan subjek penelitian. Dan sangat sering kita melakukan koreografi tanpa benar-benar menyadarinya, seperti di dunia nyata.

KarelHusa
sumber
21

Layanan dapat dibedakan antara layanan atom dan layanan yang terdiri dari layanan lain. Komposisi semacam itu disebut "orkestrasi". Terkadang alur kerja, terkadang proses bisnis. Misalnya, BPEL adalah bahasa orkestrasi, tetapi menyebut dirinya "bahasa eksekusi proses bisnis".

Tidak ada persyaratan bahwa layanan perlu disusun secara hierarkis. Itu berarti, dua layanan dapat berbicara satu sama lain. Protokol yang berjalan di antara mereka disebut "koreografi". Mungkin ada dua layanan, tetapi biasanya, ada lebih dari dua layanan yang terlibat. Setiap layanan dalam koreografi dapat dilihat sebagai orkestra dari layanan mitra. Setiap layanan yang mengambil bagian dalam koreografi dapat diwujudkan sebagai orkestrasi / alur kerja / proses.

Orkestrasi menunjukkan perilaku lengkap dari setiap layanan sedangkan koreografi menggabungkan deskripsi perilaku antarmuka dari setiap layanan.

Artikel ilmiah yang baik membedakan koreografi, perilaku antarmuka, perilaku penyedia, dan orkestrasi adalah yang berikut: Dijkman, R. & Dumas, M. Desain berorientasi layanan: Pendekatan Multi-sudut pandang Jurnal Internasional Sistem Informasi Koperasi, 2004, 13, 337-368

koppor
sumber
19

Karena utas sudah tua tetapi masih menulis untuk mereka yang akan tersandung di sini untuk mencari pertanyaan ini seperti yang saya lakukan. Ini adalah pertanyaan yang banyak diperdebatkan dalam arsitektur berorientasi layanan (SOA) yang membutuhkan penjelasan lebih bersih untuk pemula.

Orkestrasi: Proses Eksekusi

  • Digunakan dalam proses bisnis pribadi
  • Proses terpusat (yang dapat berupa layanan Web lain) mengendalikan layanan Web yang terlibat dan mengoordinasikan pelaksanaan berbagai operasi pada layanan Web yang terlibat dalam operasi
  • Layanan Web yang terlibat tidak "tahu" (dan tidak perlu tahu) bahwa mereka terlibat dalam proses komposisi dan bahwa mereka mengambil bagian dalam proses bisnis tingkat yang lebih tinggi.
  • Hanya koordinator pusat orkestrasi yang menyadari tujuan ini, sehingga orkestrasi terpusat dengan definisi operasi yang jelas dan urutan pemanggilan layanan Web.

masukkan deskripsi gambar di sini

Koreografi: Kolaborasi Multi-partai

  • Sebaliknya, koreografi tidak bergantung pada koordinator pusat. Sebaliknya, setiap layanan Web yang terlibat dalam koreografi tahu persis kapan harus menjalankan operasinya dan dengan siapa berinteraksi. Koreografi adalah upaya kolaboratif yang berfokus pada pertukaran pesan dalam proses bisnis publik.

  • Semua peserta dalam koreografi perlu mengetahui proses bisnis, operasi untuk dieksekusi, pesan untuk dipertukarkan, dan waktu pertukaran pesan.

masukkan deskripsi gambar di sini

Koreografi vs. Orkestrasi

  • Dari perspektif menyusun layanan Web untuk menjalankan proses bisnis, orkestrasi adalah paradigma yang lebih fleksibel dan memiliki keunggulan sebagai berikut dibandingkan dengan koreografi:

  • Koordinasi proses komponen dikelola secara terpusat oleh koordinator yang dikenal.

  • Layanan web dapat dimasukkan tanpa mereka sadari bahwa mereka mengambil bagian dalam proses bisnis yang lebih besar.

  • Skenario alternatif dapat diterapkan jika terjadi kesalahan.
Cyclotron3x3
sumber
1
Sebenarnya, koreografi biasanya bergantung pada koordinator pusat - dan biasanya koordinator itu adalah semacam perantara pesan yang didistribusikan. Tidak menggunakan sesuatu seperti broker pesan akan mengikat layanan Anda bersama-sama dengan cara yang sangat tidak fleksibel yang mengarah pada kerapuhan dan penggunaan kembali yang rendah.
Rodney P. Barbati
8

Andrei dan yang lainnya melakukan pekerjaan dengan baik menjelaskan apa itu orkestrasi dan apa itu koreografi. Untuk arsitek perangkat lunak yang memilih antara dua alternatif ini, penting juga untuk membandingkannya dengan kualitas yang berbeda.

Orkestrasi ditambah lebih dari koreografi

  • Keandalan: Platform orkestrasi memiliki dukungan bawaan untuk penanganan kesalahan dan manajemen transaksi (mengkompensasi transaksi). Dalam koreografi, alur kerja yang dikembangkan sendiri dan penanganan kesalahan cenderung lebih rentan kesalahan.
  • Modifiability: Membuat dan mengubah alur kerja proses dan komposisi layanan yang kompleks lebih mudah dalam alat BPM visual yang ditemukan di platform orkestrasi.

Koreografi ditambah lebih dari orkestrasi

  • Kinerja: Orkestrasi mengeluarkan overhead kinerja karena interpretasi skrip alur kerja dan lapisan tambahan platform orkestrasi itu sendiri.

  • Biaya: Koreografi tidak memerlukan middleware atau bahasa tambahan, yang terkait dengan kurva pembelajaran dan beban tata kelola.

EDIT

Solusi orkestrasi dapat memperkenalkan SPOF jika elemen orkestra tidak menggunakan mekanisme untuk ketersediaan tinggi. Terima kasih @Deepak por menunjukkan ini dalam komentar.

Paulo Merson
sumber
3
Kecuali koreografi memang membutuhkan middleware tambahan. Persyaratan (tugas) harus disesuaikan dengan node yang berbeda. Setelah itu koreografi disebarkan, disahkan, dipantau dan diadaptasi. Semua manajemen ini membutuhkan alat yang biasanya disediakan oleh middleware.
Andrei
1
Bukankah orkestrasi membawa kerugian satu titik kegagalan yang tidak terjadi pada koreografi?
Deepak
6

Menurut saya koreografi sangat cocok untuk organisasi yang sangat terdesentralisasi. Anda tidak memerlukan pelaksana proses bisnis utama. Ini memfasilitasi pertumbuhan dan pengembangan independen oleh masing-masing sub-unit organisasi.

(Saya berlangganan interpretasi pertanyaan orkestrasi vs. koreografi ini: http://geekexplains.blogspot.com/2008/07/ways-of-combining-web-services.html )

Danijel Arsenovski
sumber
6

Orkestrasi berguna ketika Anda memiliki kontrol atas semua aktor dalam suatu proses - ketika mereka semua berada dalam satu domain kontrol dan Anda dapat menentukan alur kegiatan. Ini tentu saja paling sering ketika Anda menentukan proses bisnis yang akan diberlakukan dalam satu organisasi yang Anda kontrol.

Koreografi adalah cara untuk menentukan bagaimana dua pihak atau lebih - tidak ada yang memiliki kontrol atas proses pihak lain, atau mungkin visibilitas proses tersebut - dapat mengoordinasikan kegiatan dan proses mereka untuk berbagi informasi dan nilai. Gunakan koreografi saat koordinasi lintas domain kontrol / visibilitas diperlukan. Anda bisa memikirkan koreografi, dalam skenario sederhana, seperti protokol jaringan. Ini menentukan pola permintaan dan tanggapan yang dapat diterima antara para pihak.

Peter Piper
sumber
5

Cara lain untuk melihat Orkestrasi Layanan vs. Koreografi:

- Layanan Orkestrasi: Sekitar Domain Bisnis.
- Koreografi Layanan: Di antara banyak Domain Bisnis.

Michael Qin
sumber
1

Dalam orkestrasi, ada konduktor dan ada pemain instrumen. Pemain bermain sesuai dengan bagaimana konduktor melakukan. Jika konduktor diganti, ekspresi harmonik akan berbeda yaitu masih bermain (layanan) yang sama tetapi dengan hasil yang berbeda. Misalnya, untuk memberikan proposal pengaturan keuangan, layanan orkestrasi akan melakukan dengan meminta (meminta) setiap pemain (entitas atau layanan utilitas, misalnya pemeriksaan kredit) untuk bermain (mengembalikan hasil atau menyesuaikan / memperbarui permainannya) sesuai dengan templat konduktor (bisnis aturan). Dalam koreografi, ada koreografer dan ada kelompok penari. Koreografi adalah arah, tetapi setiap kelompok penari mandiri dalam cara mewujudkan arah itu.

Dedak
sumber
-1

Sebuah orkestrasi biasanya mengikat layanan tingkat bawah. Itu seperti mediator . Koreografi membantu mengurangi kopling lebih jauh. Saya telah menjelaskan ini secara lebih rinci di sini .

ottodidakt
sumber