5 Принсипҳои ақли солим барои сохтани барномаҳои абрӣ

Барномаҳои "абри модарӣ" ё танҳо "абр" махсус барои кор дар инфрасохтори абрӣ сохта шудаанд. Онҳо маъмулан ҳамчун маҷмӯи микросервисҳои бо ҳам пайвастшуда дар контейнерҳо баста шудаанд, ки дар навбати худ аз ҷониби платформаи абрӣ идора карда мешаванд. Чунин барномаҳо ба таври нобаёнӣ барои нокомиҳо омода карда мешаванд, ки ин маънои онро дорад, ки онҳо ҳатто дар ҳолати нокомии ҷиддии сатҳи инфрасохтор боэътимод кор мекунанд ва миқёс доранд. Тарафи дигари танга маҷмӯи маҳдудиятҳо (шартномаҳо) мебошад, ки платформаи абрӣ ба барномаҳои контейнерӣ барои идора кардани онҳо ба таври худкор ҷорӣ мекунад.

5 Принсипҳои ақли солим барои сохтани барномаҳои абрӣ

Гарчанде ки зарурат ва аҳамияти гузаштан ба замимаҳои абрӣ пурра дарк карда бошад ҳам, бисёре аз созмонҳо ҳанӯз намедонанд, ки аз куҷо оғоз кунанд. Дар ин паём, мо як қатор принсипҳоро дида мебароем, ки ҳангоми таҳияи барномаҳои контейнерӣ ба шумо имкон медиҳанд, ки потенсиали платформаҳои абриро амалӣ созед ва ҳатто дар ҳолати нокомии ҷиддӣ дар инфрасохтори IT ба кори боэътимод ва миқёси барномаҳо ноил шавед. сатҳи. Ҳадафи ниҳоии принсипҳои дар ин ҷо зикршуда омӯхтани тарзи сохтани барномаҳое мебошад, ки метавонанд тавассути платформаҳои абрӣ ба монанди Kubernetes ба таври худкор идора карда шаванд.

Принсипҳои тарҳрезии нармафзор

Дар ҷаҳони барномасозӣ, принсипҳо ба қоидаҳои хеле умумӣ дахл доранд, ки ҳангоми таҳияи нармафзор бояд риоя шаванд. Онҳоро ҳангоми кор бо ҳама гуна забони барномасозӣ истифода бурдан мумкин аст. Ҳар як принсип ҳадафҳои худро дорад, воситаҳои ноил шудан ба онҳо одатан қолабҳо ва амалияҳо мебошанд. Инчунин як қатор принсипҳои бунёдии эҷоди нармафзори баландсифат мавҷуданд, ки ҳамаи дигарон аз онҳо сарчашма мегиранд. Инҳоянд чанд намунаи принсипҳои асосӣ:

  • бӯсса (Одда нигоҳ доред, беақл) - онро мураккаб накунед;
  • хушк (худро такрор накунед) - такрор накунед;
  • YAGNI (Ба шумо он лозим нест) - чизеро эҷод накунед, ки фавран лозим нест;
  • Пас Ҷудо кардани нигарониҳо – тақсими масъулиятҳо.

Тавре ки шумо мебинед, ин принсипҳо ягон қоидаҳои мушаххасро муқаррар накардаанд, балки ба категорияи мулоҳизаҳои ба истилоҳ солим дар асоси таҷрибаи амалӣ, ки аз ҷониби бисёр таҳиягарон мубодила мешаванд ва мунтазам ба онҳо муроҷиат мекунанд, тааллуқ доранд.
Илова бар ин, мавҷуд аст SOLID - Маҷмӯи панҷ принсипи аввалини барномасозӣ ва тарҳрезии ба объект нигаронидашуда, ки аз ҷониби Роберт Мартин таҳия шудааст. SOLID принсипҳои васеъ, кушода ва иловагиро дар бар мегирад, ки ҳангоми истифодаи якҷоя ба эҷоди системаҳои нармафзори беҳтар ва нигоҳдории онҳо дар муддати тӯлонӣ кӯмак мекунанд.

Принсипҳои SOLID ба соҳаи OOP тааллуқ доранд ва бо забони чунин мафҳумҳо ва мафҳумҳо ба монанди синфҳо, интерфейсҳо ва мерос таҳия шудаанд. Аз рӯи қиёс, принсипҳои рушдро инчунин барои барномаҳои абрӣ таҳия кардан мумкин аст, танҳо унсури асосӣ дар ин ҷо на синф, балки контейнер хоҳад буд. Бо риояи ин принсипҳо, шумо метавонед барномаҳои контейнерӣ эҷод кунед, ки ба ҳадафҳо ва вазифаҳои платформаҳои абрӣ, ба монанди Kubernetes, беҳтар мувофиқат кунанд.

Контейнерҳои абрӣ: равиши Red Hat

Имрӯз, қариб ҳама гуна барномаҳо метавонанд нисбатан ба осонӣ ба контейнерҳо баста шаванд. Аммо барои он ки барномаҳо дар платформаи абрӣ ба монанди Kubernetes ба таври муассир автоматӣ ва ташкил карда шаванд, кӯшиши иловагӣ лозим аст.
Асоси идеяҳои дар поён овардашуда методология буд Барномаи дувоздаҳ омил ва бисёр корҳои дигар оид ба ҷанбаҳои гуногуни сохтани барномаҳои веб, аз идоракунии коди сарчашма то моделҳои миқёссозӣ. Принсипҳои тавсифшуда танҳо ба таҳияи замимаҳои контейнерӣ, ки дар болои микросервисҳо сохта шудаанд ва барои платформаҳои абрӣ ба монанди Kubernetes пешбинӣ шудаанд, дахл доранд. Унсури асосӣ дар муҳокимаи мо тасвири контейнер мебошад ва вақти иҷроии контейнер платформаи оркестрсозии контейнер мебошад. Ҳадафи принсипҳои пешниҳодшуда эҷоди контейнерҳо мебошад, ки барои онҳо банақшагирӣ, миқёс ва назорат вазифаҳоро дар аксари платформаҳои оркестрӣ автоматӣ кардан мумкин аст. Принсипҳо бо тартиби мушаххас пешниҳод карда намешаванд.

Принсипи нигаронии ягона (SCP)

Ин принсип аз бисёр ҷиҳат ба Принсипи масъулияти ягона шабоҳат дорад. SRP), ки қисми маҷмӯи SOLID аст ва мегӯяд, ки ҳар як объект бояд як масъулият дошта бошад ва ин масъулият бояд пурра дар синф фаро гирифта шавад. Мақсади СРП дар он аст, ки ҳар як масъулият сабаби тағирот аст ва синф бояд як ва танҳо як сабаби тағирот дошта бошад.

Дар SCP, мо ба ҷои калимаи "масъулият" калимаи "ташвиш" -ро барои нишон додани сатҳи баландтари абстраксия ва ҳадафи васеътари контейнер дар муқоиса бо синфи OOP истифода мебарем. Ва агар ҳадафи SRP танҳо як сабаб барои тағирот дошта бошад, пас паси SCP хоҳиши васеъ кардани қобилияти дубора истифода ва иваз кардани контейнерҳост. Бо риояи SRP ва сохтани контейнере, ки як масъаларо ҳал мекунад ва онро ба таври пурра иҷро мекунад, шумо имконияти дубора истифода бурдани он тасвири контейнерро дар контекстҳои гуногуни барнома зиёд мекунед.

Принсипи SCP мегӯяд, ки ҳар як контейнер бояд як масъаларо ҳал кунад ва онро хуб иҷро кунад. Ғайр аз он, SCP дар ҷаҳони контейнерӣ нисбат ба SRP дар ҷаҳони OOP осонтар аст, зеро контейнерҳо одатан як равандро иҷро мекунанд ва аксар вақт ин раванд як вазифаи ягонаро ҳал мекунад.

Агар микросервиси контейнерӣ бояд якбора якчанд мушкилотро ҳал кунад, он гоҳ онро метавон ба контейнерҳои якдафъаина тақсим кард ва дар як подк (як воҳиди ҷойгиркунии платформаи контейнерӣ) бо истифода аз қолабҳои контейнери канорӣ ва init муттаҳид кард. Илова бар ин, SCP иваз кардани контейнери кӯҳнаро (масалан, веб-сервер ё брокери паёмӣ) бо як контейнери нав, ки ҳамон мушкилотро ҳал мекунад, вале функсияҳои васеъ ё миқёси беҳтар дорад, осон мекунад.

5 Принсипҳои ақли солим барои сохтани барномаҳои абрӣ

Принсипи мушоҳидаи баланд (HOP)

Вақте ки контейнерҳо ҳамчун роҳи ягонаи бастабандӣ ва иҷро кардани барномаҳо истифода мешаванд, худи барномаҳо ҳамчун қуттии сиёҳ баррасӣ карда мешаванд. Аммо, агар ин контейнерҳои абрӣ бошанд, пас онҳо бояд API-ҳои махсусро барои назорат кардани саломатии контейнерҳо таъмин кунанд ва дар ҳолати зарурӣ чораҳои дахлдор андешанд. Бидуни ин ягонакунии автоматикунонии навсозии контейнерҳо ва идоракунии давраи зиндагии онҳо ғайриимкон аст, ки дар навбати худ устуворӣ ва қобили истифода будани системаи нармафзорро бадтар мекунад.

5 Принсипҳои ақли солим барои сохтани барномаҳои абрӣ
Дар амал, як барномаи контейнерӣ бояд ҳадди аққал барои намудҳои гуногуни санҷишҳои саломатӣ API дошта бошад: санҷишҳои зинда ва санҷишҳои омодагӣ. Агар ариза даъвои иҷрои бештар дошта бошад, он бояд воситаҳои дигари мониторинги ҳолати онро таъмин намояд. Масалан, сабти рӯйдодҳои муҳим тавассути STDERR ва STDOUT барои ҷамъоварии гузоришҳо бо истифода аз Fluentd, Logstash ва дигар абзорҳои шабеҳ. Инчунин ҳамгироӣ бо китобхонаҳои коллексияи пайгирӣ ва метрика, ба монанди OpenTracing, Prometheus ва ғайра.

Умуман, барномаро метавон ҳамчун қуттии сиёҳ баррасӣ кард, аммо он бояд бо ҳама API-ҳое, ки платформа барои назорат ва идора кардани он ба таври беҳтарин лозим аст, таъмин карда шавад.

Принсипи мутобиқати давраи ҳаёт (LCP)

LCP зидди HOP аст. Дар ҳоле ки HOP изҳор мекунад, ки контейнер бояд API-ҳои хондашударо ба платформа фош кунад, LCP аз барнома талаб мекунад, ки маълумотро аз платформа қабул кунад. Гузашта аз ин, контейнер бояд на танҳо рӯйдодҳоро қабул кунад, балки мутобиқат кунад, ба ибораи дигар, ба онҳо вокуниш нишон диҳад. Аз ин рӯ, номи принсипе пайдо шуд, ки онро ҳамчун талабот барои таъмини платформа бо навиштани API баррасӣ кардан мумкин аст.

5 Принсипҳои ақли солим барои сохтани барномаҳои абрӣ
Платформаҳо дорои намудҳои гуногуни чорабиниҳо мебошанд, ки барои идоракунии давраи ҳаёти контейнер кӯмак мерасонанд. Аммо он ба худи барнома вобаста аст, ки кадоме аз онҳоро дарк кунад ва чӣ гуна муносибат кунад.

Маълум аст, ки баъзе вокеахо назар ба дигар вокеахо мухимтаранд. Масалан, агар барнома ба садамаҳо хуб таҳаммул накунад, он бояд сигналро қабул кунад: паёмҳоро қатъ кунед (SIGTERM) ва реҷаи қатъи онро ҳарчи зудтар оғоз кунед, то сигналро гиред: бикушед (SIGKILL), ки пас аз SIGTERM меояд.

Илова бар ин, рӯйдодҳо ба монанди PostStart ва PreStop метавонанд барои давраи ҳаёти барнома муҳим бошанд. Масалан, пас аз оғози барнома, пеш аз он ки он ба дархостҳо посух диҳад, он метавонад каме вақти гармкунӣ талаб кунад. Ё ин ки барнома бояд ҳангоми хомӯшӣ захираҳоро бо ягон роҳи махсус озод кунад.

Принсипи тағирнопазирии тасвир (IIP)

Умуман қабул карда мешавад, ки замимаҳои контейнершуда пас аз сохта шудан, ҳатто агар онҳо дар муҳитҳои гуногун иҷро карда шаванд ҳам, бояд бетағйир боқӣ монанд. Ин зарурати берунии нигаҳдории маълумотро дар вақти корӣ (ба ибораи дигар, барои ин истифода бурдани абзорҳои беруна) ва такя кардан ба конфигуратсияҳои берунӣ, мушаххаси вақти корӣ, ба ҷои тағир додан ё эҷоди контейнерҳои беназир барои ҳар як муҳит талаб мекунад. Пас аз ҳама гуна тағирот дар барнома, тасвири контейнер бояд аз нав сохта шавад ва дар ҳама муҳитҳои истифодашуда ҷойгир карда шавад. Дар омади гап, ҳангоми идоракунии системаҳои IT як принсипи шабеҳ истифода мешавад, ки ҳамчун принсипи тағирнопазирии серверҳо ва инфрасохтор маълум аст.

Ҳадафи IIP пешгирии эҷоди тасвирҳои контейнерии алоҳида барои муҳитҳои вақти корӣ ва истифодаи як тасвир дар ҳама ҷо бо конфигуратсияи мувофиқи муҳити зист мебошад. Риояи ин принсип ба шумо имкон медиҳад, ки чунин таҷрибаҳои муҳимро аз нуқтаи назари автоматикунонии системаҳои абрӣ, аз қабили бозгашт ва бозгашти навсозии барномаҳо амалӣ кунед.

5 Принсипҳои ақли солим барои сохтани барномаҳои абрӣ

Принсипи истифодабарии раванд (PDP)

Яке аз хусусиятҳои муҳимтарини контейнер муваққатии он аст: як мисоли контейнер сохтан осон аст ва нобуд кардан осон аст, бинобар ин онро дар ҳар вақт ба осонӣ бо мисоли дигар иваз кардан мумкин аст. Барои чунин ивазкунӣ метавонад сабабҳои зиёд дошта бошад: нокомии санҷиши қобили истифода, миқёси барнома, интиқол ба мизбони дигар, тамом шудани захираҳои платформа ё ҳолатҳои дигар.

5 Принсипҳои ақли солим барои сохтани барномаҳои абрӣ
Дар натиҷа, барномаҳои контейнерӣ бояд ҳолати худро бо истифода аз баъзе воситаҳои беруна нигоҳ доранд ё барои ин схемаҳои тақсимоти дохилиро бо зиёдатӣ истифода баранд. Илова бар ин, барнома бояд зуд оғоз шавад ва зуд хомӯш шавад ва ба шикасти ногаҳонии сахтафзор омода бошад.

Як амалия, ки ба татбиқи ин принсип мусоидат мекунад, нигоҳ доштани контейнерҳо мебошад. Муҳитҳои абрӣ метавонанд ба таври худкор ҳостро барои оғоз кардани як мисоли контейнер интихоб кунанд, аз ин рӯ контейнер ҳар қадар хурдтар бошад, он тезтар оғоз мешавад - он танҳо ба хости мавриди ҳадаф тавассути шабака зудтар нусхабардорӣ мешавад.

Принсипи худдорӣ (S-CP)

Тибқи ин принсип, дар марҳилаи васлкунӣ, ҳама ҷузъҳои зарурӣ ба контейнер дохил карда мешаванд. Контейнер бояд аз рӯи тахмине сохта шавад, ки система танҳо ядрои холиси Linux дорад, бинобар ин ҳама китобхонаҳои иловагии зарурӣ бояд дар худи контейнер ҷойгир карда шаванд. Он инчунин бояд чизҳоеро дар бар гирад, ба монанди вақти кор барои забони мувофиқи барномасозӣ, платформаи барнома (агар лозим бошад) ва дигар вобастагӣ, ки ҳангоми кор кардани барномаи контейнер талаб карда мешаванд.

5 Принсипҳои ақли солим барои сохтани барномаҳои абрӣ

Барои конфигуратсияҳое, ки аз муҳит ба муҳит фарқ мекунанд, истисноҳо дода мешаванд ва бояд дар вақти кор таъмин карда шаванд, масалан тавассути ConfigMap Kubernetes.

Барнома метавонад якчанд ҷузъҳои контейнериро дар бар гирад, масалан, як контейнери алоҳидаи DBMS дар дохили барномаи веби контейнершуда. Тибқи принсипи S-CP, ин контейнерҳо набояд ба як муттаҳид карда шаванд, балки бояд тавре сохта шаванд, ки контейнери DBMS ҳама чизҳои заруриро барои кори пойгоҳи додаҳо дар бар гирад ва контейнери замимаи веб ҳама чизҳои заруриро барои кори веб дар бар гирад. барнома, ҳамон веб-сервер . Дар натиҷа, дар вақти корӣ контейнери замимаи веб аз контейнери DBMS вобаста хоҳад буд ва дар ҳолати зарурӣ ба он дастрасӣ пайдо мекунад.

Принсипи ҳабси вақти корӣ (RCP)

Принсипи S-CP муайян мекунад, ки контейнер чӣ гуна бояд сохта шавад ва бинарии тасвир бояд чиро дар бар гирад. Аммо контейнер танҳо як "қуттии сиёҳ" нест, ки танҳо як хусусият дорад - андозаи файл. Ҳангоми иҷро, контейнер дигар андозаҳоро мегирад: миқдори хотираи истифодашуда, вақти CPU ва дигар захираҳои система.

5 Принсипҳои ақли солим барои сохтани барномаҳои абрӣ
Ва дар ин ҷо принсипи RCP муфид аст, ки мувофиқи он контейнер бояд талаботи худро ба захираҳои система ҷудо кунад ва онҳоро ба платформа интиқол диҳад. Бо профилҳои захираҳои ҳар як контейнер (чӣ қадар CPU, хотира, шабака ва захираҳои диск ба он ниёз дорад), платформа метавонад ба таври оптималӣ ба нақшакашӣ ва автоматизатсияро иҷро кунад, қобилияти IT-ро идора кунад ва сатҳи SLA-ро барои контейнерҳо нигоҳ дорад.

Илова бар қонеъ кардани талаботи захираҳои контейнер, инчунин муҳим аст, ки барнома аз ҳудуди худ набарояд. Дар акси ҳол, вақте ки норасоии захираҳо ба вуқӯъ мепайвандад, платформа эҳтимол дорад онро ба рӯйхати барномаҳое дохил кунад, ки бояд қатъ ё интиқол дода шаванд.

Вақте ки мо дар бораи абрнок буданамон гап мезанем, мо дар бораи тарзи корамон гап мезанем.
Дар боло, мо як қатор принсипҳои умумиро таҳия кардем, ки заминаи методологиро барои сохтани барномаҳои баландсифати контейнерӣ барои муҳити абрӣ муқаррар мекунанд.

Дар хотир доред, ки ба ғайр аз ин принсипҳои умумӣ, шумо инчунин усулҳо ва усулҳои иловагии пешрафтаи кор бо контейнерҳо лозиманд. Илова бар ин, мо якчанд тавсияҳои кӯтоҳ дорем, ки мушаххастаранд ва вобаста ба вазъият бояд татбиқ карда шаванд (ё татбиқ карда намешаванд):

  • Кӯшиш кунед, ки андозаи тасвирҳоро кам кунед: файлҳои муваққатиро нест кунед ва бастаҳои нолозимро насб накунед - андозаи контейнер ҳар қадар хурдтар бошад, он тезтар ҷамъ карда мешавад ва ба хости мавриди ҳадаф тавассути шабака нусхабардорӣ мешавад.
  • Таваҷҷӯҳ ба идентификаторҳои худсаронаи корбар: барои кушодани контейнерҳои худ фармони sudo ё ягон корбари махсусро истифода набаред.
  • Бандарҳои муҳимро қайд кунед: Шумо метавонед рақамҳои портҳоро дар вақти корӣ муқаррар кунед, аммо беҳтар аст, ки онҳоро бо истифода аз фармони EXPOSE муайян кунед - он истифодаи тасвирҳои шуморо барои одамони дигар ва барномаҳо осонтар мекунад.
  • Маълумоти доимиро дар ҳаҷмҳо нигоҳ доред: Маълумоте, ки бояд пас аз нобуд шудани контейнер боқӣ монад, бояд ба ҷилдҳо навишта шаванд.
  • Метамаълумоти тасвирро нависед: барчаспҳо, тамғакоғазҳо ва эзоҳҳо истифодаи тасвирҳоро осонтар мекунанд - таҳиягарони дигар ба шумо ташаккур хоҳанд гуфт.
  • Хост ва тасвирҳоро ҳамоҳанг созед: Баъзе замимаҳои контейнерӣ аз контейнер талаб мекунанд, ки бо ҳост дар атрибутҳои муайян, ба монанди вақт ё ID мошин ҳамоҳанг карда шавад.
  • Хулоса, мо қолабҳо ва таҷрибаҳои беҳтаринро мубодила мекунем, ки ба шумо дар амалӣ кардани принсипҳои дар боло номбаршуда кӯмак мерасонанд:
    www.slideshare.net/luebken/container-patterns
    docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices
    docs.projectatomic.io/container-best-practices
    docs.openshift.com/enterprise/3.0/creating_images/guidelines.html
    www.usenix.org/system/files/conference/hotcloud16/hotcloud16_burns.pdf
    leanpub.com/k8spatterns
    12factor.net

Вебинар дар версияи нави OpenShift Container Platform – 4
11 июн соати 11.00

Шумо чиро меомӯзед:

  • Тағирнопазири Red Hat Enterprise Linux CoreOS
  • Шабакаи хидматрасонии OpenShift
  • Чаҳорчӯбаи оператор
  • Чаҳорчӯбаи аслӣ

Манбаъ: will.com

Илова Эзоҳ