Конфронси QCon. Азхудкунии бесарусомонӣ: Дастури Netflix ба Microservices. Қисми 4

Ҷош Эванс дар бораи ҷаҳони бесарусомон ва рангоранги микросервисҳои Netflix, аз асосҳои асосӣ - анатомияи микросервисҳо, мушкилоти марбут ба системаҳои тақсимшуда ва манфиатҳои онҳо сӯҳбат мекунад. Бар асоси ин таҳкурсӣ, ӯ амалияҳои фарҳангӣ, меъморӣ ва амалиётиро меомӯзад, ки ба маҳорати хидматрасонии хурд оварда мерасонад.

Конфронси QCon. Азхудкунии бесарусомонӣ: Дастури Netflix ба Microservices. Қисми 1
Конфронси QCon. Азхудкунии бесарусомонӣ: Дастури Netflix ба Microservices. Қисми 2
Конфронси QCon. Азхудкунии бесарусомонӣ: Дастури Netflix ба Microservices. Қисми 3

Баръакси дрейфи амалиётӣ, ҷорӣ намудани забонҳои нав барои байналмиллалии хидмат ва технологияҳои нав ба монанди контейнерҳо қарорҳои бошуурона барои илова кардани мураккабии нав ба муҳити зист мебошанд. Гурӯҳи амалиётии ман дар харитаи беҳтарини технологияи Netflix стандартизатсия шудааст, ки он ба таҷрибаҳои беҳтарини пешакӣ муайяншуда дар асоси Java ва EC2 пухта шудааст, аммо бо афзоиши тиҷорат, таҳиягарон ба илова кардани ҷузъҳои нав ба монанди Python, Ruby, Node-JS ва Docker шурӯъ карданд.

Конфронси QCon. Азхудкунии бесарусомонӣ: Дастури Netflix ба Microservices. Қисми 4

Ман хеле фахр мекунам, ки мо аввалин шуда тарафдори он будем, ки маҳсулоти мо бе интизории шикоятҳои муштариён аъло кор кунад. Ҳамааш ба қадри кофӣ оддӣ оғоз ёфт - мо барномаҳои амалиётӣ дар Python ва чанд барномаҳои бэк-офис дар Ruby доштем, аммо вақте ки таҳиягарони веби мо эълон карданд, ки JVM-ро тарк мекунанд ва вебро интиқол медиҳанд, кор хеле ҷолибтар шуд. барнома ба платформаи нармафзори Node.js. Пас аз ҷорӣ кардани Docker, корҳо хеле мураккабтар шуданд. Мо ба мантиқ пайравӣ мекардем ва технологияҳое, ки мо таҳия кардем, вақте ки мо онҳоро барои муштариён татбиқ кардем, воқеият шуданд, зеро онҳо бисёр маъно доштанд. Ман ба шумо мегӯям, ки чаро ин тавр аст.

API Gateway воқеан қобилияти муттаҳид кардани скриптҳои олиро дорад, ки метавонанд ҳамчун нуқтаи ниҳоӣ барои таҳиягарони UI амал кунанд. Онҳо ҳар яке аз ин скриптҳоро тавре табдил доданд, ки пас аз ворид кардани тағирот онҳо метавонистанд онҳоро дар истеҳсолот ва сипас ба дастгоҳҳои корбар ҷойгир кунанд ва ҳамаи ин тағиротҳо бо нуқтаҳое, ки дар дарвозаи API кор мекарданд, ҳамоҳанг карда шуданд.

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

Гирифтани ин нуқтаҳо ва берун кашидани онҳо аз хидмати API мантиқӣ буд. Барои ин, мо ҷузъҳои Node.js офаридем, ки ҳамчун барномаҳои хурд дар контейнерҳои Docker кор мекарданд. Ин ба мо имкон дод, ки ҳама гуна мушкилот ва садамаҳое, ки аз ин замимаҳои гиреҳ ба вуҷуд омадаанд, ҷудо кунем.

Арзиши ин тағйирот хеле калон аст ва аз омилҳои зерин иборат аст:

  • Воситаҳои ҳосилнокӣ. Идоракунии технологияҳои нав асбобҳои навро талаб мекард, зеро дастаи UI бо истифода аз скриптҳои хеле хуб барои эҷоди модели муассир вақти зиёдро барои идоракунии инфрасохтор сарф намекард, онҳо танҳо бояд скриптҳо навишт ва кори онҳоро тафтиш кунанд.
    Фаҳмидани имкониятҳо ва ҷудокунӣ - Намунаи калидӣ асбобҳои навест, ки барои ошкор кардани иттилооти драйвери иҷроиш заруранд. Донистан лозим буд, ки протсессор чӣ қадар банд аст, хотира чӣ гуна истифода мешавад ва ҷамъоварии ин маълумот асбобҳои гуногунро талаб мекард.
  • Тақсимоти тасвирҳои асосӣ - пойгоҳи оддии AMI бештар пароканда ва махсусгардонида шудааст.
  • Идоракунии гиреҳ. Ягон меъморӣ ё технологияи берун аз раф мавҷуд нест, ки ба шумо имкон медиҳад гиреҳҳоро дар абр идора кунед, аз ин рӯ мо Titus, платформаи идоракунии контейнерро сохтем, ки густариши миқёспазир ва боэътимоди контейнерҳо ва ҳамгироии абриро бо Amazon AWS таъмин мекунад.
  • Такрори китобхона ё платформа. Таъмини технологияҳои нав бо ҳамон функсияҳои асосии платформа такрори онро ба абзорҳои таҳиякунандаи Node.js-ро талаб мекард.
  • Омӯзиши каҷ ва таҷрибаи саноатӣ. Ҷорӣ кардани технологияҳои нав ногузир мушкилоти наверо ба вуҷуд меорад, ки бояд бартараф карда шаванд ва аз онҳо омӯхта шаванд.

Ба хамин тарик, мо бо як «рохи мумфарш» махдуд шуда наметавонистем ва лозим омад, ки пайваста роххои нави пешрафти технологияамонро созем. Барои кам кардани хароҷот, мо дастгирии мутамарказро маҳдуд кардем ва ба JVM, гиреҳҳои нав ва Docker тамаркуз кардем. Мо таъсири самарабахшро авлавият додем, дастаҳоро дар бораи арзиши қарорҳои худ огоҳ кардем ва онҳоро ташвиқ кардем, ки роҳҳои истифодаи дубораи қарорҳои таъсирбахшеро, ки аллакай таҳия кардаанд, ҷустуҷӯ кунанд. Мо ин равишро ҳангоми тарҷумаи хидмат ба забонҳои хориҷӣ барои расонидани маҳсулот ба мизоҷони хориҷӣ истифода бурдем. Мисолҳо китобхонаҳои нисбатан соддаи муштариёнро дар бар мегиранд, ки метавонанд ба таври худкор тавлид шаванд, то версияи Python, версияи Ruby, версияи Java ва ғайра хеле осон бошад.

Мо пайваста имкониятҳои истифодаи технологияҳои санҷидашуда, ки худро дар як ҷо ва дар дигар ҳолатҳои шабеҳ исбот кардаанд, ҷустуҷӯ мекардем.

Биёед дар бораи унсури охирин - тағирот ё вариантҳо сӯҳбат кунем. Бубинед, ки чӣ тавр истеъмоли маҳсулоти мо аз рӯи рӯзи ҳафта ва соат дар давоми рӯз нобаробар фарқ мекунад. Гуфтан мумкин аст, ки соати 9:XNUMX барои Netflix вақти душворӣ аст, вақте ки сарбории система ба ҳадди аксар мерасад.

Конфронси QCon. Азхудкунии бесарусомонӣ: Дастури Netflix ба Microservices. Қисми 4

Чӣ тавр мо метавонем ба суръати баланди татбиқи навовариҳои нармафзор, яъне пайваста ворид кардани тағйироти нав ба система, бидуни халалдор шудани хидматрасонӣ ва бидуни эҷоди нороҳатӣ ба мизоҷони худ ноил шавем? Netflix ба ин тавассути истифодаи Spinnaker, як платформаи нави идоракунии глобалии абрӣ ва интиқоли муттасил (CD) ноил шуд.

Конфронси QCon. Азхудкунии бесарусомонӣ: Дастури Netflix ба Microservices. Қисми 4

Ҷиҳати интиқодӣ, Spinnaker барои муттаҳид кардани таҷрибаҳои беҳтарини мо тарҳрезӣ шудааст, то вақте ки мо ҷузъҳоро дар истеҳсолот ҷойгир мекунем, мо метавонем маҳсулотро мустақиман ба технологияи интиқоли ВАО ворид кунем.

Конфронси QCon. Азхудкунии бесарусомонӣ: Дастури Netflix ба Microservices. Қисми 4

Мо тавонистем ду технологияро ба лӯлаи интиқоли худ ворид кунем, ки мо онҳоро хеле қадр мекунем: таҳлили автоматии канарӣ ва ҷойгиркунии марҳилавӣ. Таҳлили канарӣ маънои онро дорад, ки мо як трафикро ба версияи нави код равона мекунем ва боқимондаи трафики истеҳсолиро тавассути версияи кӯҳна мегузарем. Пас аз он мо месанҷем, ки чӣ тавр коди нав аз ӯҳдаи ин вазифа мебарояд - беҳтар ё бадтар аз мавҷуда.

Интиқоли беғаразона маънои онро дорад, ки агар паҳнкунӣ дар як минтақа мушкилот дошта бошад, мо ба паҳнкунӣ дар минтақаи дигар мегузарем. Дар ин ҳолат, варақаи дар боло зикршуда бояд ба қубури истеҳсолӣ дохил карда шавад. Ман ба шумо каме вақт сарфа мекунам ва ба шумо тавсия медиҳам, ки суханронии қаблии ман, Engineering Global Netflix Operations in the Cloud -ро бубинед, агар шумо ба амиқтар ба ин мавзӯъ таваҷҷӯҳ дошта бошед. Сабти видеоии суханрониро тавассути истиноди поёни слайд дидан мумкин аст.

Конфронси QCon. Азхудкунии бесарусомонӣ: Дастури Netflix ба Microservices. Қисми 4

Дар охири сӯҳбат ман дар бораи ташкил ва меъмории Netflix мухтасар сӯҳбат мекунам. Дар ибтидо мо нақшае доштем бо номи Таҳвили электронӣ, ки версияи аввалини ҷараёни медиаи NRDP 1.x буд. Истилоҳи "backstream" -ро дар ин ҷо метавон истифода бурд, зеро дар аввал корбар метавонист танҳо мундариҷаро барои навозиш баъдтар дар дастгоҳ зеркашӣ кунад. Аввалин платформаи интиқоли рақамии Netflix, дар соли 2009, ба ин монанд буд.

Конфронси QCon. Азхудкунии бесарусомонӣ: Дастури Netflix ба Microservices. Қисми 4

Дастгоҳи корбар дорои барномаи Netflix буд, ки аз интерфейси UI, модулҳои амниятӣ, фаъолсозии хидмат ва бозбинӣ дар асоси платформаи NRDP - Netflix Ready Device Platform иборат буд.

Дар он вақт интерфейси корбар хеле содда буд. Он чизеро дар бар мегирад, ки Queque Reader номида мешуд ва корбар ба сайт рафта чизе ба Queque илова мекунад ва сипас мундариҷаи иловашударо дар дастгоҳи худ бубинад. Чизи мусбӣ дар он буд, ки дастаи пештара ва дастаи пушти сар ба ҳамон як ташкилоти интиқоли электронӣ тааллуқ доштанд ва робитаи наздики корӣ доштанд. Сарборӣ дар асоси XML сохта шудааст. Ҳамзамон, API Netflix барои тиҷорати DVD таъсис дода шуд, ки барномаҳои тарафи сеюмро ташвиқ кард, ки трафикро ба хидмати мо равона кунанд.

Бо вуҷуди ин, API Netflix хуб омода шудааст, ки ба мо бо интерфейси инноватсионии корбар кӯмак кунад, ки дорои метамаълумоти ҳама мундариҷа, маълумот дар бораи кадом филмҳо мавҷуд аст, ки қобилияти тавлиди рӯйхатҳои тамошоро фароҳам меорад. Он дорои API-и умумии REST дар асоси схемаи JSON, Кодекси вокуниши HTTP, ҳамон чизест, ки дар меъмории муосир истифода мешавад ва модели амнияти OAuth, ки он вақт барои замимаи пешрафта лозим буд. Ин имкон дод, ки аз модели оммавии интиқоли мундариҷа ба модели хусусӣ гузарад.

Конфронси QCon. Азхудкунии бесарусомонӣ: Дастури Netflix ба Microservices. Қисми 4

Мушкилоти гузариш парокандагӣ буд, зеро ҳоло системаи мо ду хидматро дар асоси принсипҳои комилан гуногуни фаъолият кор мекард - яке дар Rest, JSON ва OAuth, дигаре дар RPC, XML ва механизми амнияти корбар дар асоси системаи аломати NTBA. Ин аввалин меъмории гибридӣ буд.

Дар байни ду дастаи мо аслан брандмауэр мавҷуд буд, зеро дар аввал API бо NCCP чандон васеъ набуд ва ин боиси ихтилоф байни дастаҳо гардид. Тафовутҳо дар хидматҳо, протоколҳо, схемаҳо, модулҳои амниятӣ буданд ва таҳиягарон аксар вақт бояд байни контекстҳои комилан гуногун гузаранд.

Конфронси QCon. Азхудкунии бесарусомонӣ: Дастури Netflix ба Microservices. Қисми 4

Дар робита ба ин, ман бо яке аз муҳандисони калони ширкат сӯҳбат доштам, ки ман ба ӯ савол додам: "Меъмории дарозмуддат бояд чӣ гуна бошад?" ва ӯ ба саволи муқобил дод: "Шумо шояд бештар нигарон бошед. дар бораи оқибатҳои ташкилӣ - агар мо ин чизҳоро муттаҳид кунем, чӣ мешавад ва онҳо он чизеро, ки мо хуб кор кардан омӯхтаем, вайрон мекунанд? Ин равиш ба Қонуни Конвей хеле мувофиқ аст: "Ташкилотҳое, ки системаҳои тарҳрезӣ бо тарҳе маҳдуд карда мешаванд, ки сохтори коммуникатсионии ин созмонро такрор мекунад." Ин таърифи хеле абстрактист, бинобар ин ман як таърифи мушаххасро афзалтар медонам: "Ҳар як порчаи нармафзор сохтори ташкилиеро, ки онро офаридааст, инъикос мекунад." Ин аст иқтибоси дӯстдоштаи ман аз Эрик Рэймонд: "Агар шумо чаҳор гурӯҳи таҳиягароне дошта бошед, ки дар як компилятор кор мекунанд, шумо бо як компилятори чор-гузаранда хоҳед буд." Хуб, Netflix дорои як компилятори чоргузар аст ва мо ҳамин тавр кор мекунем.

Метавон гуфт, ки дар ин ҳолат дум сагро меҷунбонад. Афзалияти аввалиндараҷаи мо ҳалли масъала нест, балки созмон аст; он созмонест, ки меъмории мо дорад. Оҳиста-оҳиста, аз як қатор хидматҳо, мо ба меъморие гузаштем, ки онро Blade Runner номида будем, зеро дар ин ҷо сухан дар бораи хидматҳои канорӣ ва қобилияти ҷудо ва ҳамгиро шудани NCCP мустақиман ба прокси Zuul, шлюзи API ва функсионалии мувофиқ меравад. "порчаҳо" ба хидматрасониҳои нав табдил дода шуданд, ки дорои хусусиятҳои пешрафтаи амният, такрор, навъбандии маълумот ва ғайра мебошанд.

Ҳамин тариқ, метавон гуфт, ки сохторҳои шӯъбавӣ ва динамикаи ширкат дар ташаккули тарҳрезии система нақши муҳим доранд ва омиле мебошанд, ки ба тағирот мусоидат мекунанд ё монеъ мешаванд. Меъмории Microservices мураккаб ва органикӣ аст ва саломатии он ба интизом ва бесарусомонии ҷорӣ асос ёфтааст.

Як каме реклама

Ташаккур ба шумо барои бо мо мондан. Мақолаҳои мо ба шумо маъқуланд? Мехоҳед мундариҷаи ҷолибтарро бубинед? Бо фармоиш додан ё тавсия додан ба дӯстон моро дастгирӣ кунед, абр VPS барои таҳиягарон аз $4.99, аналоги беназири серверҳои сатҳи ибтидоӣ, ки аз ҷониби мо барои шумо ихтироъ шудааст: Тамоми ҳақиқат дар бораи VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps аз $19 ё чӣ гуна мубодила кардани сервер? (бо RAID1 ва RAID10, то 24 ядро ​​ва то 40 ГБ DDR4 дастрас аст).

Dell R730xd дар маркази додаҳои Equinix Tier IV дар Амстердам 2 маротиба арзонтар аст? Танҳо дар ин ҷо 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 ТВ аз $199 дар Нидерландия! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - аз $99! Дар бораи хондан Корпоратсияи инфраструктураро чӣ гуна бояд сохт. синф бо истифодаи серверҳои Dell R730xd E5-2650 v4 ба маблағи 9000 XNUMX евро барои як динор?

Манбаъ: will.com

Илова Эзоҳ