Apakah itu Service Mesh?

Salam sekali lagi!.. Pada malam permulaan kursus "Arkitek Perisian" Kami telah menyediakan satu lagi terjemahan yang berguna.

Apakah itu Service Mesh?

Jaringan perkhidmatan ialah lapisan infrastruktur kependaman rendah yang boleh dikonfigurasikan yang diperlukan untuk mengendalikan jumlah besar komunikasi antara proses berasaskan rangkaian antara antara muka pengaturcaraan aplikasi (API). Service Mesh membolehkan komunikasi yang pantas, boleh dipercayai dan selamat antara perkhidmatan infrastruktur aplikasi kontena dan selalunya tidak kekal. Service Mesh menyediakan keupayaan seperti penemuan perkhidmatan, pengimbangan beban, penyulitan, ketelusan, kebolehkesanan, pengesahan dan kebenaran, dan sokongan corak penutupan automatik (pemutus litar).
Mesh perkhidmatan biasanya dilaksanakan dengan menyediakan setiap contoh perkhidmatan dengan contoh proksi, dipanggil Sidecar. Sidecar mengendalikan komunikasi antara perkhidmatan, memantau dan menyelesaikan isu keselamatan, iaitu segala-galanya yang boleh disarikan daripada perkhidmatan individu. Dengan cara ini, pembangun boleh menulis, menyelenggara dan menyampaikan kod aplikasi dalam perkhidmatan, dan pentadbir sistem boleh bekerja dengan Service Mesh dan menjalankan aplikasi.

Istio daripada Google, IBM dan Lyft kini merupakan seni bina mesh perkhidmatan yang paling terkenal. Dan Kubernetes, yang pada asalnya dibangunkan di Google, kini merupakan satu-satunya rangka kerja orkestrasi kontena yang disokong oleh Istio. Penjual cuba mencipta versi Istio yang disokong secara komersial. Menarik untuk melihat perkara baharu yang boleh mereka bawa kepada projek sumber terbuka.

Walau bagaimanapun, Istio bukanlah satu-satunya pilihan kerana pelaksanaan Service Mesh lain sedang dibangunkan. Corak sidecar proxy adalah pelaksanaan yang paling popular, seperti yang boleh dinilai oleh projek Buoyant, HashiCorp, Solo.io dan lain-lain. Terdapat juga seni bina alternatif: kit alat teknologi Netflix ialah salah satu pendekatan di mana fungsi Service Mesh dilaksanakan melalui perpustakaan Ribbon, Hysterix, Eureka, Archaius, serta platform seperti Azure Service Fabric.

Service Mesh juga mempunyai istilah tersendiri untuk komponen dan fungsi perkhidmatan:

  • Rangka kerja orkestrasi kontena. Memandangkan semakin banyak kontena ditambahkan pada infrastruktur aplikasi, terdapat keperluan untuk alat yang berasingan untuk memantau dan mengurus bekas - rangka kerja orkestrasi kontena. Kubernetes telah menguasai niche ini dengan tegas, sehinggakan pesaing utamanya Docker Swarm dan Mesosphere DC/OS menawarkan integrasi dengan Kubernetes sebagai alternatif.
  • Perkhidmatan dan Kejadian (Kubernetes Pods). Contoh ialah salinan tunggal perkhidmatan mikro yang sedang berjalan. Kadangkala satu contoh adalah satu bekas. Dalam Kubernetes, contoh terdiri daripada sekumpulan kecil bekas bebas yang dipanggil pod. Pelanggan jarang mengakses tika atau pod secara langsung; lebih kerap, mereka mengakses perkhidmatan, yang merupakan set kejadian atau pod (replika) yang sama, boleh skala dan tahan kesalahan.
  • Proksi Sidecar. Proksi Sidecar berfungsi dengan satu contoh atau pod. Tujuan Sidecar Proxy adalah untuk menghalakan atau proksi trafik yang datang dari bekas yang berfungsi dengannya dan mengembalikan trafik. Sidecar berinteraksi dengan Proksi Sidecar yang lain dan diuruskan oleh rangka kerja orkestrasi. Banyak pelaksanaan Service Mesh menggunakan Proksi Sidecar untuk memintas dan mengurus semua trafik masuk dan keluar dari contoh atau pod.
  • Penemuan Perkhidmatan. Apabila contoh perlu berkomunikasi dengan perkhidmatan lain, ia perlu mencari (menemui) contoh perkhidmatan lain yang sihat dan tersedia. Biasanya, contoh melakukan carian DNS. Rangka kerja orkestrasi kontena mengekalkan senarai kejadian yang sedia menerima permintaan dan menyediakan antara muka untuk pertanyaan DNS.
  • Pengimbangan beban. Kebanyakan rangka kerja orkestrasi kontena menyediakan pengimbangan beban pada lapisan 4 (pengangkutan). Service Mesh melaksanakan pengimbangan beban yang lebih kompleks pada lapisan 7 (peringkat aplikasi), kaya dengan algoritma dan lebih berkesan dalam mengurus trafik. Tetapan pengimbangan beban boleh ditukar menggunakan API, membolehkan anda mengatur penggunaan biru-hijau atau kenari.
  • Penyulitan. Service Mesh boleh menyulitkan dan menyahsulit permintaan dan respons, mengalih keluar beban ini daripada perkhidmatan. Service Mesh juga boleh meningkatkan prestasi dengan mengutamakan atau menggunakan semula sambungan berterusan sedia ada, mengurangkan keperluan untuk pengiraan mahal untuk mencipta sambungan baharu. Pelaksanaan penyulitan trafik yang paling biasa ialah TLS bersama (mTLS), di mana infrastruktur kunci awam (PKI) menjana dan mengedarkan sijil dan kunci untuk digunakan oleh Proksi Sidecar.
  • Pengesahan dan Keizinan. Service Mesh boleh membenarkan dan mengesahkan permintaan yang dibuat dari luar atau dalam aplikasi, menghantar hanya permintaan yang disahkan kepada kejadian.
  • Sokongan corak penutupan automatik. Sokongan Service Mesh corak penutupan automatik, yang mengasingkan kejadian yang tidak sihat dan kemudian secara beransur-ansur mengembalikannya kepada kumpulan kejadian yang sihat apabila diperlukan.

Bahagian aplikasi Service Mesh yang menguruskan trafik rangkaian antara kejadian dipanggil Satah Data. Buat dan gunakan konfigurasi yang mengawal tingkah laku Satah Data, dilakukan menggunakan yang berasingan Pesawat Kawalan. Pesawat Kawalan biasanya termasuk atau direka bentuk untuk menyambung ke API, CLI atau GUI untuk mengawal aplikasi.

Apakah itu Service Mesh?
Satah Kawalan dalam Mesh Perkhidmatan mengedarkan konfigurasi antara Proksi Sidecar dan Satah Data.

Seni bina Service Mesh sering digunakan untuk menyelesaikan masalah operasi yang kompleks menggunakan bekas dan perkhidmatan mikro. Perintis dalam bidang perkhidmatan mikro ialah syarikat seperti Lyft, Netflix dan Twitter, yang menyediakan perkhidmatan yang stabil kepada berjuta-juta pengguna di seluruh dunia. (Berikut ialah pandangan terperinci tentang beberapa cabaran seni bina yang dihadapi Netflix.). Untuk aplikasi yang kurang menuntut, seni bina yang lebih ringkas mungkin sudah memadai.

Seni bina Service Mesh tidak mungkin menjadi jawapan kepada semua isu operasi dan penghantaran aplikasi. Arkitek dan pemaju mempunyai senjata yang besar, dan hanya satu daripadanya adalah tukul, yang, di antara banyak tugas, mesti menyelesaikan hanya satu - memalu paku. Microservices Reference Architecture daripada NGINX, sebagai contoh, termasuk beberapa model berbeza yang menyediakan kesinambungan pendekatan untuk menyelesaikan masalah menggunakan perkhidmatan mikro.

Elemen yang digabungkan dalam seni bina Service Mesh, seperti NGINX, bekas, Kubernetes dan perkhidmatan mikro sebagai pendekatan seni bina, boleh menjadi sama produktif dalam pelaksanaan bukan Perkhidmatan Mesh. Sebagai contoh, Istio telah direka bentuk sebagai seni bina rangkaian perkhidmatan yang lengkap, tetapi modularitinya bermakna pembangun boleh memilih dan melaksanakan hanya komponen teknologi yang mereka perlukan. Dengan mengambil kira perkara ini, adalah penting untuk membangunkan pemahaman yang jelas tentang konsep Service Mesh, walaupun anda tidak pasti anda akan dapat melaksanakannya sepenuhnya dalam aplikasi anda.

Monolit modular dan DDD

Sumber: www.habr.com

Tambah komen