Үйлчилгээний тор гэж юу вэ?

Сайн байцгаана уу!.. Хичээл эхлэхийн өмнөхөн "Програм хангамжийн архитектор" Бид өөр нэг хэрэгтэй орчуулга бэлдлээ.

Үйлчилгээний тор гэж юу вэ?

Үйлчилгээний сүлжээ нь программчлалын интерфэйсүүд (API) хооронд сүлжээнд суурилсан процесс хоорондын их хэмжээний харилцааг зохицуулахад шаардлагатай тохируулж болох, хоцролт багатай дэд бүтцийн давхарга юм. Service Mesh нь чингэлэгжүүлсэн болон ихэвчлэн түр зуурын хэрэглээний дэд бүтцийн үйлчилгээнүүдийн хооронд хурдан, найдвартай, аюулгүй холболтыг идэвхжүүлдэг. Service Mesh нь үйлчилгээг илрүүлэх, ачааллыг тэнцвэржүүлэх, шифрлэлт, ил тод байдал, мөрдөх, баталгаажуулалт, зөвшөөрөл, автоматаар унтрах загварыг дэмжих зэрэг боломжуудыг олгодог.таслагч).
Үйлчилгээний тор нь ихэвчлэн үйлчилгээний жишээ бүрийг прокси жишээгээр хангаснаар хэрэгждэг Хажуугийн тэрэг. Хажуугийн тэрэг үйлчилгээ хоорондын харилцаа холбоог зохицуулах, аюулгүй байдлын асуудлуудыг хянах, шийдвэрлэх, өөрөөр хэлбэл тусдаа үйлчилгээнээс хийсвэрлэж болох бүх зүйл. Ингэснээр хөгжүүлэгчид үйлчилгээнүүдэд програмын код бичиж, засварлаж, үйлчлэх боломжтой бөгөөд системийн администраторууд Service Mesh-тэй ажиллаж, програмыг ажиллуулж болно.

Google, IBM, Lyft-ийн Istio нь одоогоор хамгийн алдартай үйлчилгээний торон архитектур юм. Google-д анх бүтээгдсэн Kubernetes нь одоо Istio-ийн дэмждэг цорын ганц контейнер зохион байгуулалтын хүрээ юм. Борлуулагчид Istio-ийн арилжааны дэмжлэгтэй хувилбаруудыг бий болгохыг оролдож байна. Тэд нээлттэй эхийн төсөлд ямар шинэ зүйл авчирч чадахыг харах нь сонирхолтой байх болно.

Гэсэн хэдий ч бусад Service Mesh программуудыг боловсруулж байгаа тул Istio нь цорын ганц сонголт биш юм. Загвар sidecar proxy нь Buoyant, HashiCorp, Solo.io болон бусад төслүүдээс дүгнэж болох хамгийн алдартай хэрэгжилт юм. Мөн өөр архитектурууд байдаг: Netflix технологийн хэрэгсэл нь Ribbon, Hysterix, Eureka, Archaius номын сангууд, түүнчлэн Azure Service Fabric зэрэг платформуудаар дамжуулан Service Mesh функцийг хэрэгжүүлдэг аргуудын нэг юм.

Service Mesh нь үйлчилгээний бүрэлдэхүүн хэсэг, функцүүдийн өөрийн гэсэн нэр томъёотой байдаг:

  • Контейнерийн зохион байгуулалтын хүрээ. Хэрэглээний дэд бүтцэд илүү олон контейнер нэмэгдэхийн хэрээр контейнеруудыг хянах, удирдах тусдаа хэрэгсэл болох container orchestration framework шаардлагатай болж байна. Кубернетес энэ байрыг баттай эзэлдэг тул түүний гол өрсөлдөгчид болох Docker Swarm болон Mesosphere DC/OS нь Кубернетестэй нэгдэх хувилбарыг санал болгодог.
  • Үйлчилгээ ба жишээнүүд (Kubernetes Pods). Жишээ нь микро үйлчилгээний нэг ажиллаж байгаа хуулбар юм. Заримдаа нэг тохиолдол нь нэг контейнер байдаг. Kubernetes-д жишээ нь pod гэж нэрлэгддэг бие даасан савны жижиг бүлгээс бүрдэнэ. Үйлчлүүлэгчид инстанс эсвэл подволд шууд хандах нь ховор; ихэнхдээ тэд ижил, өргөтгөх боломжтой, алдааг тэсвэрлэх чадвартай инстанцууд эсвэл pods (хуулбарууд) бүхий үйлчилгээнд ханддаг.
  • Хажуугийн прокси. Sidecar Proxy нь нэг инстанс эсвэл pod дээр ажилладаг. Sidecar Proxy-ийн зорилго нь ажиллаж буй контейнерээс ирж буй урсгалыг чиглүүлэх эсвэл прокси хийх, урсгалыг буцаах явдал юм. Sidecar нь бусад Sidecar прокси нартай харилцаж, зохион байгуулалтын хүрээгээр удирддаг. Олон Service Mesh хэрэгжүүлэлт нь Instance эсвэл pod доторх болон гарах бүх урсгалыг таслан зогсоох, удирдахад Sidecar Proxy ашигладаг.
  • Үйлчилгээний нээлт. Инстанс өөр үйлчилгээтэй холбогдох шаардлагатай үед нөгөө үйлчилгээний эрүүл бөгөөд боломжтой жишээг олох (нээх) хэрэгтэй. Ихэвчлэн жишээ нь DNS хайлтыг гүйцэтгэдэг. Контейнерын зохион байгуулалтын хүрээ нь хүсэлтийг хүлээн авахад бэлэн болсон тохиолдлуудын жагсаалтыг хөтөлж, DNS асуулгад зориулсан интерфейсээр хангадаг.
  • Ачааллыг тэнцвэржүүлэх. Ихэнх чингэлэг зохион байгуулалтын хүрээ нь 4-р давхарга (тээвэр) дээр ачааллыг тэнцвэржүүлдэг. Service Mesh нь 7-р давхаргад (хэрэглээний түвшин) илүү нарийн төвөгтэй ачааллыг тэнцвэржүүлдэг, алгоритмаар баялаг бөгөөд урсгалыг удирдахад илүү үр дүнтэй байдаг. Ачаалал тэнцвэржүүлэх тохиргоог API ашиглан өөрчлөх боломжтой бөгөөд энэ нь танд хөх-ногоон эсвэл канарын байршуулалтыг зохицуулах боломжийг олгоно.
  • Шифрлэлт. Service Mesh нь хүсэлт, хариултыг шифрлэж, тайлж чаддаг тул үйлчилгээн дэх ачааллыг арилгадаг. Мөн Service Mesh нь одоо байгаа байнгын холболтуудыг эрэмбэлэх эсвэл дахин ашиглах замаар гүйцэтгэлийг сайжруулж, шинэ холболт үүсгэхэд үнэтэй тооцоолол хийх хэрэгцээг багасгадаг. Замын хөдөлгөөний шифрлэлтийн хамгийн түгээмэл хэрэглүүр харилцан TLS (mTLS), энд нийтийн түлхүүрийн дэд бүтэц (PKI) нь Sidecar Proxy-д ашиглах гэрчилгээ болон түлхүүрүүдийг үүсгэж, түгээдэг.
  • Баталгаажуулалт ба зөвшөөрөл. Үйлчилгээний тор нь програмын гаднаас эсвэл дотроос хийсэн хүсэлтийг баталгаажуулж, баталгаажуулж, зөвхөн баталгаажуулсан хүсэлтийг инстанс руу илгээх боломжтой.
  • Автомат унтрах загварын дэмжлэг. Service Mesh дэмждэг автомат унтрах загвар, энэ нь эрүүл бус тохиолдлуудыг тусгаарлаж, шаардлагатай үед аажмаар эрүүл тохиолдлын сан руу буцаадаг.

Тохиолдолуудын хоорондох сүлжээний урсгалыг удирддаг Service Mesh програмын хэсгийг нэрлэдэг Өгөгдлийн хавтгай. Зан төлөвийг хянадаг тохиргоог үүсгэж, байрлуул Өгөгдлийн хавтгай, тусдаа ашиглан гүйцэтгэнэ Хяналтын онгоц. Хяналтын онгоц Ихэвчлэн програмыг удирдахын тулд API, CLI эсвэл GUI-д холбогдохоор эсвэл зориулагдсан байдаг.

Үйлчилгээний тор гэж юу вэ?
Үйлчилгээний торон дахь хяналтын хавтгай нь хажуугийн прокси болон мэдээллийн хавтгай хоёрын хооронд тохиргоог хуваарилдаг.

Service Mesh архитектурыг ихэвчлэн чингэлэг болон микро үйлчилгээ ашиглан үйл ажиллагааны нарийн төвөгтэй асуудлыг шийдвэрлэхэд ашигладаг. Энэ салбарт анхдагчид бичил үйлчилгээ нь Lyft, Netflix, Twitter зэрэг дэлхийн сая сая хэрэглэгчдэд тогтвортой үйлчилгээ үзүүлдэг компаниуд юм. (Netflix-т тулгарч байсан архитектурын зарим сорилтыг эндээс дэлгэрэнгүй харуулав.). Шаардлага багатай програмуудын хувьд энгийн архитектурууд хангалттай байх магадлалтай.

Үйлчилгээний торон архитектур нь програмын үйл ажиллагаа болон хүргэх бүх асуудлын хариулт байх магадлал багатай. Архитекторууд болон хөгжүүлэгчид асар их багаж хэрэгсэлтэй байдаг бөгөөд тэдгээрийн зөвхөн нэг нь алх бөгөөд олон ажлуудын дунд зөвхөн нэгийг нь шийдэх ёстой - хадаасны алх. NGINX-ийн бичил үйлчилгээний лавлах архитектурЖишээ нь, бичил үйлчилгээ ашиглан асуудлыг шийдвэрлэхэд чиглэсэн тасралтгүй арга барилыг агуулсан хэд хэдэн өөр загваруудыг багтаасан болно.

Архитектурын арга болох NGINX, контейнер, Кубернетес, микро үйлчилгээ зэрэг Service Mesh архитектурт нийлдэг элементүүд нь Service Mesh-ийн бус хэрэгжүүлэлтүүдэд адилхан бүтээмжтэй байж болно. Жишээлбэл, Istio нь иж бүрэн үйлчилгээний торон архитектур хэлбэрээр бүтээгдсэн боловч түүний модульчлагдсан байдал нь хөгжүүлэгчид зөвхөн шаардлагатай технологийн бүрэлдэхүүн хэсгүүдийг сонгож, хэрэгжүүлэх боломжтой гэсэн үг юм. Үүнийг анхаарч үзээд, та хэзээ нэгэн цагт үүнийг өөрийн хэрэглээнд бүрэн хэрэгжүүлж чадна гэдэгтээ итгэлгүй байсан ч Service Mesh-ийн тухай тодорхой ойлголтыг хөгжүүлэх нь чухал юм.

Модульчлагдсан цул ба DDD

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх