Konferans NDC London. Anpeche katastwòf mikwosèvis. Pati 1

Ou te pase plizyè mwa pou redesign monolit ou an nan mikwosèvis, epi finalman tout moun te reyini ansanm pou chanje switch la. Ou ale nan premye paj wèb la... e anyen pa rive. Ou rechaje li - epi ankò pa gen anyen bon, sit la tèlman dousman ke li pa reponn pou plizyè minit. sak pase?

Nan diskou li a, Jimmy Bogard pral fè yon "post-mortem" sou yon katastwòf mikwosèvis reyèl. Li pral montre pwoblèm nan modèl, devlopman ak pwodiksyon li te dekouvri, ak ki jan ekip li a tou dousman transfòme nouvo monolit distribye nan foto final la nan saniti. Pandan ke li enposib konplètman anpeche erè konsepsyon, ou ka omwen idantifye pwoblèm byen bonè nan pwosesis konsepsyon an asire pwodwi final la vin tounen yon sistèm distribiye serye.

Konferans NDC London. Anpeche katastwòf mikwosèvis. Pati 1

Bonjou tout moun, mwen se Jimmy e jodia ou pral tande kijan ou ka evite mega dezas lè wap konstwi microservices. Sa a se istwa yon konpayi mwen te travay pou apeprè yon ane edmi pou ede anpeche bato yo fè kolizyon ak yon iceberg. Pou rakonte istwa sa a byen, nou pral oblije tounen nan tan epi pale sou ki kote konpayi sa a te kòmanse ak ki jan enfrastrikti IT li yo te grandi sou tan. Pou pwoteje non moun ki inosan nan katastwòf sa a, mwen te chanje non konpayi sa a pou Bell Computers. Diapositive kap vini an montre ki jan enfrastrikti IT konpayi sa yo te sanble nan mitan ane 90 yo. Sa a se yon achitekti tipik nan yon gwo sèvè inivèsèl HP Tandem Mainframe pou opere yon magazen pyès ki nan konpitè.

Konferans NDC London. Anpeche katastwòf mikwosèvis. Pati 1

Yo te bezwen bati yon sistèm pou jere tout lòd, lavant, retounen, katalòg pwodwi, ak baz kliyan, kidonk yo te chwazi solisyon mainframe ki pi komen nan moman an. Sistèm jeyan sa a te genyen tout enfòmasyon sou konpayi an, tout sa ki posib, e chak tranzaksyon te fèt atravè mainframe sa a. Yo te kenbe tout ze yo nan yon sèl panyen e yo te panse sa te nòmal. Bagay la sèlman ki pa enkli isit la se katalòg lòd pa lapòs ak mete lòd pa telefòn.

Apre yon tan, sistèm nan te vin pi gwo ak pi gwo, ak yon gwo kantite fatra akimile nan li. Epitou, COBOL se pa lang ki pi ekspresyon nan mond lan, kidonk sistèm nan te fini yon gwo, monolitik moso tenten. Nan lane 2000, yo te wè ke anpil konpayi yo te gen sit entènèt nan kote yo te fè absoliman tout biznis yo, epi yo deside bati premye sit entènèt komèsyal dot-com yo.

Konsepsyon inisyal la te sanble trè bèl epi li konsiste de yon sit wo nivo bell.com ak yon kantite subdomains pou aplikasyon endividyèl: catalog.bell.com, accounts.bell.com, orders.bell.com, rechèch pwodwi search.bell. com. Chak subdomain te itilize fondasyon ASP.Net 1.0 ak baz done pwòp li yo, epi yo tout te pale ak backend sistèm lan. Sepandan, tout lòd yo te kontinye ap trete ak egzekite nan yon sèl gwo mainframe, nan ki tout fatra a rete, men fen devan an te separe sit entènèt ak aplikasyon endividyèl ak baz done separe.

Konferans NDC London. Anpeche katastwòf mikwosèvis. Pati 1

Se konsa, konsepsyon sistèm lan te sanble lòd ak lojik, men sistèm aktyèl la te jan yo montre nan pwochen glise a.

Konferans NDC London. Anpeche katastwòf mikwosèvis. Pati 1

Tout eleman adrese apèl youn ak lòt, aksè API, entegre dll twazyèm pati, ak renmen an. Li te souvan rive ke sistèm kontwòl vèsyon yo ta pwan kòd yon lòt moun, pouse li andedan pwojè a, ak Lè sa a, tout bagay ta kraze. MS SQL Server 2005 te itilize konsèp nan sèvè lyen, e byenke mwen pa t montre flèch yo sou glisad la, chak nan baz done yo tou te pale youn ak lòt, paske pa gen anyen mal ak bati tab ki baze sou done yo jwenn nan plizyè baz done.

Depi kounye a yo te gen kèk separasyon ant diferan zòn lojik nan sistèm nan, sa a te vin distribye tach pousyè tè, ak pi gwo moso fatra a toujou rete nan backend mainframe a.

Konferans NDC London. Anpeche katastwòf mikwosèvis. Pati 1

Bagay la komik te ke mainframe sa a te konstwi pa konpetitè nan Bell Computers epi li te toujou konsève pa konsiltan teknik yo. Konvenki nan pèfòmans nan satisfezan nan aplikasyon li yo, konpayi an deside debarase m de yo ak redesign sistèm nan.

Aplikasyon ki deja egziste a te an pwodiksyon pou 15 ane, ki se yon dosye pou aplikasyon ki baze sou ASP.Net. Sèvis la te aksepte lòd soti nan tout mond lan, ak revni anyèl nan aplikasyon sa a sèl te rive nan yon milya dola. Yon pati enpòtan nan pwofi a te pwodwi pa sit entènèt la bell.com. Nan Vandredi Nwa yo, kantite lòd ki te pase atravè sit la te rive nan plizyè milyon. Sepandan, achitekti ki deja egziste a pa te pèmèt okenn devlopman, depi entèkoneksyon yo rijid nan eleman sistèm pratikman pa te pèmèt okenn chanjman yo dwe fè nan sèvis la.

Pwoblèm ki pi grav la se enkapasite pou mete yon lòd soti nan yon peyi, peye pou li nan yon lòt epi voye li nan yon twazyèm, malgre lefèt ke tankou yon konplo komès trè komen nan konpayi mondyal yo. Sitwèb ki egziste deja a pa t pèmèt anyen konsa, se konsa yo te oblije aksepte epi pase lòd sa yo nan telefòn. Sa a te mennen nan konpayi an de pli zan pli panse sou chanje achitekti a, an patikilye sou chanje nan mikwosèvis.

Yo te fè bagay entelijan lè yo gade lòt konpayi yo pou wè ki jan yo te rezoud yon pwoblèm ki sanble. Youn nan solisyon sa yo se achitekti sèvis Netflix, ki gen ladann mikwosèvis ki konekte atravè yon API ak yon baz done ekstèn.

Jesyon Bell Computers deside bati jis tankou yon achitekti, konfòme yo ak sèten prensip debaz yo. Premyèman, yo elimine duplication done lè yo itilize yon apwòch baz done pataje. Pa gen okenn done yo te voye; Okontrè, tout moun ki te bezwen yo te oblije ale nan yon sous santralize. Sa a te swiv pa izolasyon ak otonomi - chak sèvis te endepandan de lòt yo. Yo deside sèvi ak API Web la pou absoliman tout bagay - si ou te vle jwenn done oswa fè chanjman nan yon lòt sistèm, tout bagay te fèt atravè API Web la. Dènye gwo bagay la se te yon nouvo mainframe ki rele "Bell on Bell" kòm opoze ak "Bell" mainframe ki baze sou pyès ki nan konpitè konpetitè yo.

Se konsa, sou kou a nan 18 mwa, yo te bati sistèm nan ozalantou prensip debaz sa yo epi yo te mennen li nan pre-pwodiksyon. Retounen nan travay apre fen semèn nan, devlopè yo te reyini ansanm epi yo te vire sou tout sèvè yo ki nouvo sistèm nan te konekte. 18 mwa travay, dè santèn de devlopè, pyès ki nan konpitè Bell ki pi modèn - e pa gen okenn rezilta pozitif! Sa a te wont anpil moun paske yo te kouri sistèm sa a sou laptops yo anpil fwa ak tout bagay te byen.

Yo te entelijan jete tout lajan yo nan rezoud pwoblèm sa a. Yo enstale etajè sèvè ki pi modèn ak switch, yo itilize fib optik gigabit, pyès ki nan konpitè sèvè ki pi pwisan ak yon kantite lajan fou nan RAM, konekte li tout, konfigirasyon li - e ankò, pa gen anyen! Lè sa a, yo te kòmanse sispèk ke rezon ki fè yo ta ka timeout, se konsa yo te antre nan tout paramèt entènèt yo, tout paramèt API yo ak mete ajou tout konfigirasyon timeout la nan valè maksimòm yo, se konsa ke tout sa yo te kapab fè se te chita epi tann pou yon bagay rive. sou sit la. Yo te tann epi tann epi tann pou 9 minit ak yon mwatye jiskaske sit entènèt la finalman chaje.

Apre sa, yo te konprann sitiyasyon aktyèl la te bezwen yon analiz apwofondi, e yo te envite nou. Premye bagay nou te jwenn se ke pandan tout 18 mwa nan devlopman, pa te kreye yon sèl reyèl "mikwo" - tout bagay sèlman te vin pi gwo. Apre sa, nou te kòmanse ekri yon post-mortem, ke yo rele tou "retrospektiv", oswa "retwospektiv tris", ke yo rele tou "tanpèt blame", menm jan ak yon "tanpèt sèvo", pou konprann kòz dezas la.

Nou te gen plizyè endikasyon, youn nan yo te saturation trafik konplè nan moman apèl API a. Lè ou sèvi ak yon achitekti sèvis monolitik, ou ka imedyatman konprann kisa egzakteman ale mal paske ou gen yon sèl tras pil ki rapòte tout bagay ki te kapab lakòz echèk la. Nan ka kote yon pakèt sèvis ansanm jwenn aksè nan menm API a, pa gen okenn fason yo swiv tras la eksepte yo sèvi ak zouti adisyonèl siveyans rezo tankou WireShark, gras a ki ou ka egzaminen yon sèl demann epi chèche konnen sa ki te pase pandan aplikasyon li. Se konsa, nou te pran yon paj wèb epi te pase prèske 2 semèn mete moso yo nan devinèt la ansanm, fè yon varyete apèl nan li ak analize sa chak nan yo te mennen nan.
Gade foto sa a. Li montre ke yon sèl demann ekstèn pouse sèvis la fè anpil apèl entèn ki retounen tounen. Li sanble ke chak apèl entèn fè oublions adisyonèl yo nan lòd yo kapab poukont yo sèvis demann sa a, paske li pa ka vire nenpòt lòt kote pou jwenn enfòmasyon ki nesesè yo. Foto sa a sanble yon kaskad apèl san sans, kòm demann ekstèn lan rele sèvis adisyonèl, ki rele lòt sèvis adisyonèl, ak sou sa, prèske ad infinitum.

Konferans NDC London. Anpeche katastwòf mikwosèvis. Pati 1

Koulè vèt nan dyagram sa a montre yon demi sèk kote sèvis yo rele youn ak lòt - sèvis A rele sèvis B, sèvis B rele sèvis C, epi li rele sèvis A ankò. Kòm rezilta, nou jwenn yon "enpas distribiye". Yon sèl demann te kreye yon mil (XNUMX) apèl API rezo, e piske sistèm nan pa t 'gen tolerans fay ak pwoteksyon bouk, demann lan ta echwe si menm youn nan apèl API sa yo echwe.

Nou te fè kèk matematik. Chak apèl API te gen yon SLA ki pa plis pase 150 ms ak 99,9% disponiblite. Yon demann te lakòz 200 apèl diferan, epi nan pi bon ka a, paj la te kapab parèt nan 200 x 150 ms = 30 segonn. Natirèlman, sa a pa t bon. Miltipliye 99,9% disponiblite pa 200, nou te gen 0% disponiblite. Li sanble ke achitekti sa a te kondane a echèk depi nan konmansman an anpil.

Nou te mande devlopè yo ki jan yo echwe pou yo rekonèt pwoblèm sa a apre 18 mwa nan travay? Li te sanble ke yo te sèlman konte SLA a pou kòd yo te kouri a, men si sèvis yo te rele yon lòt sèvis, yo pa konte tan sa a nan SLA yo. Tout sa ki te lanse nan yon pwosesis te respekte valè 150 ms, men aksè a lòt pwosesis sèvis ogmante reta total la anpil fwa. Premye leson yo te aprann nan se te: "Èske w gen kontwòl SLA ou a, oswa èske SLA a kontwole ou?" Nan ka nou an, li te dènye a.

Pwochen bagay nou te dekouvri se ke yo te konnen sou konsèp movèz konsepsyon enfòmatik distribiye, Peter Deitch ak James Gosling te fòme, men yo te inyore premye pati a. Li deklare ke deklarasyon yo "rezo a serye," "zewo latansi," ak "debi enfini" se move konsepsyon. Lòt move konsepsyon gen ladan deklarasyon "rezo a an sekirite," "topoloji a pa janm chanje", "genyen toujou yon sèl administratè," "kout transfè done a se zewo," ak "rezo a omojèn."
Yo te fè yon erè paske yo te teste sèvis yo sou machin lokal yo epi yo pa janm branche ak sèvis ekstèn. Lè yo devlope lokalman ak lè l sèvi avèk yon kachèt lokal yo, yo pa janm rankontre hop rezo. Nan tout 18 mwa devlopman yo, yo pa janm mande sa ki ta ka rive si sèvis ekstèn yo te afekte.

Konferans NDC London. Anpeche katastwòf mikwosèvis. Pati 1

Si w gade fwontyè sèvis yo nan foto anvan an, ou ka wè ke yo tout pa kòrèk. Gen anpil sous ki bay konsèy sou fason pou defini limit sèvis yo, epi pifò fè li mal, tankou Microsoft sou pwochen glise a.

Konferans NDC London. Anpeche katastwòf mikwosèvis. Pati 1

Foto sa a soti nan blog MS sou sijè "Ki jan yo bati mikwosèvis". Sa a montre yon aplikasyon entènèt senp, yon blòk nan lojik biznis, ak yon baz done. Demann lan vini dirèkteman, gen pwobableman yon sèvè pou entènèt la, yon sèl sèvè pou biznis la ak youn pou baz done a. Si ou ogmante trafik, foto a pral chanje yon ti kras.

Konferans NDC London. Anpeche katastwòf mikwosèvis. Pati 1

Isit la vini yon balanse chaj pou distribye trafik ant de serveurs entènèt, yon kachèt ki sitiye ant sèvis entènèt la ak lojik biznis la, ak yon lòt kachèt ant lojik biznis la ak baz done a. Sa a se egzakteman achitekti Bell itilize pou balans chaj li yo ak aplikasyon deplwaman ble / vèt nan mitan ane 2000 yo. Jiska kèk tan tout bagay te travay byen, depi konplo sa a te gen entansyon pou yon estrikti monolitik.

Foto sa a montre ki jan MS rekòmande pou deplase soti nan yon monolit nan mikwosèvis - tou senpleman divize chak nan sèvis prensipal yo nan mikwosèvis separe. Li te pandan aplikasyon konplo sa a ke Bell te fè yon erè.

Konferans NDC London. Anpeche katastwòf mikwosèvis. Pati 1

Yo divize tout sèvis yo nan nivo diferan, chak nan yo ki te gen anpil sèvis endividyèl. Pa egzanp, sèvis entènèt la enkli mikwo-sèvis pou rann kontni ak otantifikasyon, sèvis lojik biznis la te konpoze de mikwo-sèvis pou trete lòd ak enfòmasyon sou kont, baz done a te divize an yon pakèt mikwo-sèvis ak done espesyalize. Tou de entènèt la, lojik biznis, ak baz done yo te sèvis apatrid.

Sepandan, foto sa a te konplètman mal paske li pa t kat inite biznis deyò gwoup IT konpayi an. Konplo sa a pa t 'pran an kont nenpòt koneksyon ak mond lan deyò, kidonk li pa te klè ki jan, pou egzanp, jwenn analiz biznis twazyèm-pati. Mwen note ke yo tou te gen plizyè sèvis envante tou senpleman pou devlope karyè yo nan anplwaye endividyèl yo ki t'ap chache jere anpil moun ke posib yo nan lòd yo jwenn plis lajan pou li.

Yo te kwè ke deplase nan mikwosèvis yo te fasil tankou pran enfrastrikti kouch fizik N-niveau yo epi kole Docker sou li. Ann pran yon gade nan ki sa achitekti tradisyonèl N-niveau sanble.

Konferans NDC London. Anpeche katastwòf mikwosèvis. Pati 1

Li konsiste de 4 nivo: nivo koòdone itilizatè UI, nivo lojik biznis, nivo aksè done ak baz done a. Plis pwogresif se DDD (Domain-Driven Design), oswa achitekti lojisyèl oryante, kote de nivo mitan yo se objè domèn ak yon depo.

Konferans NDC London. Anpeche katastwòf mikwosèvis. Pati 1

Mwen te eseye gade diferan domèn chanjman, diferan domèn responsablite nan achitekti sa a. Nan yon aplikasyon tipik N-niveau, diferan zòn nan chanjman yo klase ki anvayi estrikti a vètikal soti anwo jouk anba. Sa yo se Katalòg, Paramèt konfigirasyon fèt sou òdinatè endividyèl, ak chèk kesye, ki te okipe pa ekip mwen an.

Konferans NDC London. Anpeche katastwòf mikwosèvis. Pati 1

Singularité a nan konplo sa a se ke limit yo nan zòn sa yo nan chanjman afekte pa sèlman nivo a lojik biznis, men tou, pwolonje nan baz done a.

Ann gade sa sa vle di pou yon sèvis. Gen 6 pwopriyete karakteristik nan yon definisyon sèvis - li se lojisyèl ki:

  • kreye epi itilize pa yon òganizasyon espesifik;
  • responsab pou kontni, tretman ak/oswa pwovizyon yon sèten kalite enfòmasyon nan sistèm nan;
  • ka bati, deplwaye ak kouri poukont yo pou satisfè bezwen espesifik operasyonèl yo;
  • kominike ak konsomatè yo ak lòt sèvis, bay enfòmasyon ki baze sou akò oswa garanti kontra;
  • pwoteje tèt li kont aksè san otorizasyon, ak enfòmasyon li yo kont pèt;
  • okipe echèk nan yon fason ke yo pa mennen nan domaj enfòmasyon.

Tout pwopriyete sa yo ka eksprime nan yon mo "otonomi". Sèvis yo fonksyone endepandamman youn ak lòt, satisfè sèten restriksyon, epi defini kontra sou baz ki moun ka resevwa enfòmasyon yo bezwen yo. Mwen pa t 'mansyone teknoloji espesifik, itilizasyon ki evidan.

Koulye a, ann gade nan definisyon mikrosèvis yo:

  • yon mikwosèvis ti gwosè epi li fèt pou rezoud yon pwoblèm espesifik;
  • Mikwosèvis la otonòm;
  • Lè w ap kreye yon achitekti mikwosèvis, yo itilize metafò planifikasyon vil la. Sa a se definisyon nan liv Sam Newman a, Building Microservices.

Definisyon Bounded Context yo pran nan liv Eric Evans, Domain-Driven Design. Sa a se yon modèl debaz nan DDD, yon sant konsepsyon achitekti ki travay ak modèl achitekti volumetrik, divize yo an diferan Kontèks Limite ak defini klèman entèraksyon ki genyen ant yo.

Konferans NDC London. Anpeche katastwòf mikwosèvis. Pati 1

Senpleman mete, yon Kontèks Limite vle di sijè ki abòde lan kote yon modil patikilye ka itilize. Nan kontèks sa a se yon modèl lojikman inifye ki ka wè, pou egzanp, nan domèn biznis ou. Si ou mande "ki moun ki se yon kliyan" bay pèsonèl ki enplike nan lòd, ou pral jwenn yon definisyon, si ou mande moun ki enplike nan lavant yo, ou pral jwenn yon lòt, ak pèfòmè yo ap ba ou yon twazyèm definisyon.

Donk, Bounded Context di ke si nou pa ka bay yon definisyon klè sou sa yon konsomatè sèvis nou yo ye, ann defini limit yo nan ki nou ka pale sou siyifikasyon an nan tèm sa a, epi answit defini pwen tranzisyon yo ant diferan definisyon sa yo. Sa vle di, si nou ap pale de yon kliyan nan pwen de vi nan mete lòd, sa vle di sa a ak sa, epi si nan pwen de vi nan lavant, sa a vle di sa a ak sa.

Pwochen definisyon yon mikwosèvis se enkapsulasyon nenpòt kalite operasyon entèn yo, anpeche "flit" eleman yo nan pwosesis travay la nan anviwònman an. Apre sa, vini "definisyon kontra eksplisit pou entèraksyon ekstèn, oswa kominikasyon ekstèn," ki reprezante pa lide nan kontra ki retounen soti nan SLA. Definisyon ki sot pase a se metafò yon selil, oswa selil, ki vle di enkapsulasyon konplè yon seri operasyon nan yon mikwosèvis ak prezans nan li nan reseptè pou kominikasyon ak mond lan deyò.

Konferans NDC London. Anpeche katastwòf mikwosèvis. Pati 1

Se konsa, nou te di mesye yo nan Bell Computers, "Nou pa ka ranje nenpòt nan dezòd ou te kreye paske ou jis pa gen lajan pou fè li, men nou pral ranje yon sèl sèvis pou fè li tout fè. sans.” Nan pwen sa a, mwen pral kòmanse pa di w ki jan nou te fikse sèl sèvis nou an pou ke li reponn a demann pi vit pase 9 minit edmi.

22:30 min

Pou kontinye trè byento...

Yon ti piblisite

Mèsi paske w rete avèk nou. Ou renmen atik nou yo? Vle wè plis kontni enteresan? Sipòte nou pa mete yon lòd oswa rekòmande pou zanmi, nwaj VPS pou devlopè soti nan $ 4.99, yon analogue inik nan sèvè nivo antre, ki te envante pa nou pou ou: Tout verite sou VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps soti nan $ 19 oswa ki jan yo pataje yon sèvè? (disponib ak RAID1 ak RAID10, jiska 24 nwayo ak jiska 40GB DDR4).

Dell R730xd 2 fwa pi bon mache nan sant done Equinix Tier IV nan Amstèdam? Sèlman isit la 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV soti nan $199 nan Netherlands! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - soti nan $ 99! Li sou Ki jan yo bati enfrastrikti corp. klas ak itilizasyon Dell R730xd E5-2650 v4 serveurs ki vo 9000 ero pou yon jounen travay?

Sous: www.habr.com

Add nouvo kòmantè