Қызметтік тор дегеніміз не?

Тағы да сәлем!.. Курстың басталу қарсаңында «Бағдарламалық қамтамасыз ету сәулетшісі» Біз тағы бір пайдалы аударма дайындадық.

Қызметтік тор дегеніміз не?

Қызметтік тор – қолданбалы бағдарламалау интерфейстері (API) арасындағы желіге негізделген процессаралық байланыстың үлкен көлемін өңдеу үшін қажет конфигурацияланатын, кідірісі төмен инфрақұрылым қабаты. Service Mesh контейнерлік және жиі уақытша қолданба инфрақұрылымы қызметтері арасында жылдам, сенімді және қауіпсіз байланысты қамтамасыз етеді. Service Mesh қызметтерді табу, жүктемені теңестіру, шифрлау, мөлдірлік, бақылау, аутентификация және авторизация және автоматты өшіру үлгісін қолдау сияқты мүмкіндіктерді қамтамасыз етеді (ажыратқыш).
Қызмет торы әдетте әрбір қызмет данасын шақырылатын прокси данамен қамтамасыз ету арқылы жүзеге асырылады Көлік. Көлік қызметтер арасындағы байланысты басқарады, қауіпсіздік мәселелерін, яғни жеке қызметтерден алынуы мүмкін барлық нәрсені бақылайды және шешеді. Осылайша, әзірлеушілер қызметтерде қолданба кодын жаза, сақтай және қызмет көрсете алады, ал жүйелік әкімшілер Service Mesh жүйесімен жұмыс істей алады және қолданбаны іске қоса алады.

Google, IBM және Lyft ұсынған Istio қазіргі уақытта ең танымал сервистік тор архитектурасы болып табылады. Бастапқыда Google-да жасалған Kubernetes қазір Istio қолдайтын жалғыз контейнерлік оркестрлік құрылым болып табылады. Сатушылар Istio-ның коммерциялық қолдау көрсетілетін нұсқаларын жасауға тырысуда. Ашық бастапқы жобаға қандай жаңа нәрселер әкелетінін көру қызықты болады.

Дегенмен, Istio жалғыз нұсқа емес, өйткені басқа Service Mesh енгізулері әзірленуде. Үлгі sidecar proxy ең танымал іске асыру болып табылады, оны Buoyant, HashiCorp, Solo.io және т.б. жобаларымен бағалауға болады. Сондай-ақ, баламалы архитектуралар бар: Netflix технологиясының құралдар жинағы Service Mesh функционалдығы Ribbon, Hysterix, Eureka, Archaius кітапханалары, сондай-ақ Azure Service Fabric сияқты платформалар арқылы жүзеге асырылатын тәсілдердің бірі болып табылады.

Сондай-ақ Service Mesh қызмет компоненттері мен функцияларына арналған өз терминологиясына ие:

  • Контейнерлік оркестрлік құрылым. Қолданбаның инфрақұрылымына көбірек контейнерлер қосылған сайын, контейнерлерді бақылау және басқару үшін бөлек құрал – контейнерлік оркестрлік құрылым қажет. Кубернетес бұл тауашаны мықтап басып алғаны сонша, тіпті оның негізгі бәсекелестері Docker Swarm және Mesosphere DC/OS балама ретінде Kubernetes-пен интеграцияны ұсынады.
  • Қызметтер мен даналар (Kubernetes Pods). Дана микросервистің жалғыз іске қосылған көшірмесі болып табылады. Кейде бір данасы бір контейнер болып табылады. Kubernetes-те данасы pod деп аталатын тәуелсіз контейнерлердің шағын тобынан тұрады. Клиенттер данаға немесе подкастқа сирек қатынасады; көбінесе олар бірдей, масштабталатын және қатеге төзімді даналардың немесе подкасттардың (репликалардың) жиынтығы болып табылатын қызметке қатынасады.
  • Sidecar прокси. Sidecar прокси бір данамен немесе подключпен жұмыс істейді. Sidecar Proxy бағдарламасының мақсаты - ол жұмыс істейтін контейнерден келетін трафикті бағыттау немесе прокси трафикті қайтару. Sidecar басқа Sidecar прокси-серверлерімен өзара әрекеттеседі және оркестрлік жүйе арқылы басқарылады. Көптеген Service Mesh іске асырулары данаға немесе подкастқа кіретін және одан шығатын барлық трафикті ұстап тұру және басқару үшін Sidecar прокси-серверін пайдаланады.
  • Қызмет ашу. Дана басқа қызметпен байланысуы қажет болғанда, ол басқа қызметтің сау және қолжетімді данасын табуы (ашуы) керек. Әдетте, дана DNS іздеулерін орындайды. Контейнерді басқару жүйесі сұрауларды қабылдауға дайын даналардың тізімін сақтайды және DNS сұраулары үшін интерфейсті қамтамасыз етеді.
  • Жүктемені теңестіру. Көптеген контейнерлік оркестрлер 4-деңгейде (тасымалдауда) жүктемені теңестіруді қамтамасыз етеді. Service Mesh алгоритмдерге бай және трафикті басқаруда тиімдірек 7-деңгейде (қолданба деңгейінде) күрделі жүктемені теңестіруді жүзеге асырады. Жүктемені теңестіру параметрлерін API арқылы өзгертуге болады, бұл көк-жасыл немесе канарлық орналастыруларды ұйымдастыруға мүмкіндік береді.
  • Шифрлау. Service Mesh бұл жүктемені қызметтерден алып тастай отырып, сұраулар мен жауаптарды шифрлап, шифрын шеше алады. Сондай-ақ, Service Mesh бар тұрақты қосылымдарға басымдық беру немесе қайта пайдалану арқылы өнімділікті жақсартады, жаңа қосылымдарды жасау үшін қымбат есептеу қажеттілігін азайтады. Трафикті шифрлаудың ең кең тараған жүзеге асуы болып табылады өзара TLS (mTLS), мұнда ашық кілттер инфрақұрылымы (PKI) Sidecar прокси арқылы пайдалану үшін сертификаттар мен кілттерді жасайды және таратады.
  • Аутентификация және авторизация. Қызмет торы қолданбаның сыртынан немесе ішінен жасалған сұрауларды авторизациялай және түпнұсқалығын растай алады, тек тексерілген сұрауларды даналарға жібереді.
  • Автоматты өшіру үлгісін қолдау. Service Mesh қолдайды автоматты өшіру үлгісі, ол жарамсыз даналарды оқшаулайды, содан кейін қажет болғанда оларды бірте-бірте сау даналар пулына қайтарады.

Даналар арасындағы желілік трафикті басқаратын Service Mesh қолданбасының бөлігі шақырылады Деректер жазықтығы. Тәртіпті басқаратын конфигурацияны жасаңыз және орналастырыңыз Деректер жазықтығы, бөлек арқылы орындалады Бақылау жазықтығы. Бақылау жазықтығы әдетте қолданбаны басқару үшін API, CLI немесе GUI интерфейсін қамтиды немесе қосылуға арналған.

Қызметтік тор дегеніміз не?
Қызмет торындағы басқару жазықтығы конфигурацияны Sidecar прокси мен деректер жазықтығы арасында таратады.

Service Mesh архитектурасы контейнерлер мен микросервистерді пайдалана отырып, күрделі операциялық мәселелерді шешу үшін жиі пайдаланылады. Алаңдағы пионерлер микросервис бүкіл әлем бойынша миллиондаған пайдаланушыларға тұрақты қызметтерді ұсынатын Lyft, Netflix және Twitter сияқты компаниялар. (Мұнда Netflix тап болған кейбір архитектуралық қиындықтардың егжей-тегжейлі көрінісі берілген.). Аз талап ететін қолданбалар үшін қарапайым архитектуралар жеткілікті болуы мүмкін.

Service Mesh архитектурасы қолданбаның жұмысы мен жеткізу мәселелерінің барлығына жауап беруі екіталай. Сәулетшілер мен әзірлеушілерде құралдардың үлкен арсеналы бар және олардың біреуі ғана балға болып табылады, ол көптеген тапсырмалардың ішінде тек біреуін шешуі керек - шегелерді соғу. NGINX микросервистерінің анықтамалық архитектурасы, мысалы, микросервистерді пайдалана отырып, мәселелерді шешу тәсілдерінің үздіксіздігін қамтамасыз ететін бірнеше түрлі үлгілерді қамтиды.

NGINX, контейнерлер, Kubernetes және архитектуралық тәсіл ретіндегі микросервистер сияқты Service Mesh архитектурасында біріктірілген элементтер Service Mesh қолданбасында бірдей өнімді болуы мүмкін. Мысалы, Istio толық сервистік тор архитектурасы ретінде жасалған, бірақ оның модульділігі әзірлеушілер тек қажетті технология құрамдастарын таңдап, жүзеге асыра алатынын білдіреді. Осыны ескере отырып, егер сіз оны қолданбаңызда толығымен енгізе алатыныңызға сенімді болмасаңыз да, Service Mesh тұжырымдамасы туралы нақты түсінікті дамыту маңызды.

Модульдік монолиттер және DDD

Ақпарат көзі: www.habr.com

пікір қалдыру