Oleme vĂ€lja töötanud andmekeskuste vĂ”rgu disaini, mis vĂ”imaldab juurutada kompuuteriklastritega, mille suurus ĂŒletab 100 tuhat serverit ja maksimum bisection bandwidth on ĂŒle ĂŒhe petabaiti sekundis.
Dmitri Afanasevi ettekandest saate teada uue disaini pĂ”hialustest, topoloogiate skaleerimisest, tekkivatest probleemidest, vĂ”imalustest nende lahendamiseks, saatmisplaani funktsioonide marsruutimise ja skaleerimise eripĂ€rast, kaasaegsete vĂ”rguseadmete "tihedates" topoloogiates, kus on palju ECMP-marsroute. Lisaks rÀÀkis Dima lĂŒhidalt vĂ€lise ĂŒhenduvuse korraldusest, fĂŒĂŒsilisest tasemest, kaabli sĂŒsteemist ja edasise mahutavuse suurendamise vĂ”imalustest.
â Tere kĂ”igile! Minu nimi on Dmitri Afanasev, olen Yandexi vĂ”rguarhitekt ja tegelen peamiselt andmekeskuste vĂ”rkude disainiga.

Minu lugu rÀÀgib Yandexi andmekeskuste uuendatud vĂ”rgust. See on suuresti evolutsioon meie varasemast disainist, kuid samas on ka mĂ”ned uued elemendid. See on ĂŒlevaatlik esitlus, kuna tuli mahutada ĂŒsna palju teavet lĂŒhikesse aega. Alustame loogilise topoloogia valikust. JĂ€rgneb ĂŒlevaade juhtimistasemest ja probleemidest andmeplaani skaleeritavuses, otsustamine selle ĂŒle, mis toimub fĂŒĂŒsilisel tasandil, ning vaatame mĂ”ningaid seadmete omadusi. Veidi puudutame ka seda, mis toimub andmekeskuses MPLS-i osas, millest oleme mĂ”ni aeg tagasi rÀÀkinud.

Nii, mis on Yandex koormuste ja teenuste seisukohalt? Yandex on tĂŒĂŒpiline hĂŒper-skaalija. Kui rÀÀkida kasutajatest, siis toimub meil esmalt kasutajate pĂ€ringute töötlemine. Samuti erinevad voogedastusteenused ja andmete edastamine, sest meil on ka salvestusteenused. Kui vaadata tagapool, siis ilmnevad seal infrastruktuuri koormused ja teenused, nagu jaotatud objektihoidlad, andmete replikatsioon ja muidugi ka pĂŒsikud. Ăks peamisi koormuste tĂŒĂŒpe on MapReduce ja sellised sĂŒsteemid, voogedastus, masinĂ”pe jne.

Kuidas on ĂŒles ehitatud infrastruktuur, mille peal see kĂ”ik toimub? Oleme tĂ€iesti tĂŒĂŒpiline hĂŒperskaalaja, ehkki vĂ”ib-olla oleme veidi lĂ€hemal sellele spektri poole, kus asuvad pisut vĂ€iksemad hĂŒperskaalajad. Kuid meil on kĂ”ik vajalikud atribuudid. Kasutame kommoditeediga riistvara ja horisontaalset skaleerimist, kus iganes seda on vĂ”imalik rakendada. Meil on tĂ€ielikult olemas ressursside jagamine: me ei tööta ĂŒksikute masinate vĂ”i rackidega, vaid ĂŒhendame need suureks asendatavate ressursside basseiniks koos tĂ€iendavate teenustega, mis tegelevad selle planeerimise ja jaotamisega ning töötame kogu selle basseini peal.
Nii tekib meil jĂ€rgmine tase - operatsioonisĂŒsteem arvutusklastrite tasemel. On vĂ€ga oluline, et kontrollime tĂ€ielikult kasutatavat tehnoloogiat. Kontrollime lĂ”pp-punkte (hosteid), vĂ”rku ja tarkvarakuhjat.
Meil on mitmeid suured andmekeskused Venemaal ja vĂ€lismaal. Need on ĂŒhendatud MPLS-tehnoloogial pĂ”hineva backbone'i kaudu. Meie siseinfrastruktuur on peaaegu tĂ€ielikult rajatud IPv6-le, kuid kuna peame teenindama vĂ€list liiklust, mis tuleb endiselt peamiselt IPv4 kaudu, peame kuidagi toimetama IPv4 kaudu saabuvad pĂ€ringud frontend-serverite, ja natuke kĂ€ima ka vĂ€lises IPv4-internetis â nĂ€iteks indekseerimiseks.
Viimased mitmed andmekeskuste vĂ”rgu disaini iteratsioonid kasutavad mitmeastmelisi Clos-topoloogiaid ja rakendavad ainult L3. Oleme L2-st mĂ”nda aega tagasi loobunud ja tunneka rahulolu. LĂ”puks sisaldab meie infrastruktuur sadu tuhandeid arvutuslikke (serveri) instantsse. Klaster suurus oli mĂ”nda aega tagasi umbes 10 000 serverit. See on suures osas tingitud sellest, kuidas töötavad just need klastritaseme operatsioonisĂŒsteemid, planeerijad, ressursside jaotamine jne. Kuna infrastruktuuri tarkvara osas on toimunud edusamme, on praegune sihtmĂ€rk umbes 100 000 serverit ĂŒhes arvutuslikus klastris, ja meie ees seisab ĂŒlesanne - osata ehitada vĂ”rgu tehaseid, mis vĂ”imaldavad tĂ”husalt ressursse nende klastrite sees koguda.

Mida me siis tahame andmekeskuse vĂ”rgult? Esiteks, palju odavat ja piisavalt ĂŒhtlaselt jaotatud ribalaiust. Sest vĂ”rgu kaudu saame ressursse koguda. Uus sihtmĂ€rk on umbes 100 000 serverit ĂŒhes klastris.
Meie jaoks on oluline, et meil oleks skaleeritav ja usaldusvÀÀrne juhtimistasand (control plane), kuna suure infrastruktuuri puhul tekib piisavalt peavalu isegi lihtsalt juhuslike sĂŒndmuste tĂ”ttu, ja me ei soovi, et juhtimistasand meile veel peavalu valmistaks. Samuti tahame selle seisundit minimeerida. Mida vĂ€hem seisundi, seda paremini ja stabiilsemalt kĂ”ik töötab ning on kergem diagnoosida.
Loomulikult vajame automatiseerimist, sest sellise infrastruktuuri kÀsitsi haldamine on vÔimatu ja on olnud juba mÔnda aega. Me vajame vÔimaluse korral operatiivtoetust ja CI/CD toe pakkumist, nii palju kui vÔimalik.
Nii suurte andmekeskuste ja klastri korral on juba teravalt tĂ”statunud kĂŒsimus inkrementaalse juurutamise ja laienemise toetu hĂ”lbustamisest ilma teenuse katkemiseta. Kui tuhandest masinast koosnevates klastrites, vĂ”ib-olla kĂŒmnest tuhandest masinast, sai sĂŒsteemi uued erinevad uuendused viia lĂ€bi ĂŒhe operatsioonina â mis tĂ€hendab, et plaanime infrastruktuuri laiendamist, ning mitu tuhat masinat lisatakse ĂŒhe operatsioonina, siis klaster, mille suurus on umbes sada tuhat masinat, ei tule jĂ€rsku. See ehitatakse teatud aja jooksul. Ja oleks soovitav, et kogu see aeg oleks juba tehtud, see infrastruktuur, mis on juurutatud, kergesti kĂ€ttesaadav.
Ja ĂŒks nĂ”ue, mis meil oli ja kadus: see on multitenantsuse tugi, ehk virtualiseerimine vĂ”i vĂ”rgu segmentimine. NĂŒĂŒd ei pea me seda tegema vĂ”rgu tehasete tasemel, kuna segmentimine lĂ€ks hostide peale ning see on meile vĂ€ga palju lihtsustanud skaleerimist. TĂ€nu IPv6-le ja suurele aadressiruumile ei pidanud me sisemises infrastruktuuris kasutama dubleeritud aadresse, kĂ”ik aadressid olid nii vĂ”i teisiti unikaalsed. Ja kuna me on vĂ”rgu filtreerimise ja segmentimise viinud hostidele, ei pea me looma mingisuguseid virtuaalseid vĂ”rguolekuid andmekeskuste vĂ”rkudes.

Eriti oluline on see, et me ei pea midagi. Kui mÔned funktsioonid saab vÔrgu hulgast eemaldada, siis see vÀga lihtsustab elu ning tavaliselt laiendab saadaval oleva varustuse ja tarkvara valikut, lihtsustab oluliselt diagnostikat.
Nii et mida me ei vaja, millest me saime loobuda, mitte alati rÔÔmuga hetkel, kui see toimus, kuid suure kergendusega, kui protsess lÔpetati?
Esiteks, loobume L2-st. Me ei vaja L2-d, ei reaalset ega emuleeritud. Seda ei kasutata suuresti, kuna kontrollime rakenduste steki. Meie rakendused skaleeruvad horisontaalselt, nad töötavad L3-aadressimisega ja neid ei muretse eriti, kui mĂ”ni eraldi instants ebaĂ”nnestub, lihtsalt rakendatakse uus; sellel ei pea olema vanal aadressil, kuna on olemas eraldi teenuse avastamise ja jĂ€lgimise tase, mis tegeleb klastris olevate masinatega. Me ei pane seda ĂŒlesannet vĂ”rgu peale. VĂ”rgu ĂŒlesanne on edastada pakette punktist A punkti B.
Meil ei esine olukordi, kus aadressid liiguvad vĂ”rgu sees ja seda tuleb jĂ€lgida. Paljudes disainides on see reeglina vajalik VM mobiilsuse toetamiseks. Me ei kasuta virtuaalmasinate mobiilsust suurte Yandexi sisemiste sĂŒsteemide jaoks ning usume, et isegi kui seda tehakse, ei peaks see toimuma vĂ”rgu toe abil. Kui on tĂ”eliselt vajalik, tuleb see teha hostide tasandil ja suunata migreeritavad aadressid overlay'desse, et mitte segada ja teha liiga palju dĂŒnaamilisi muudatusi oma allveevĂ”rgu (transportvĂ”rgu) marsruutimissĂŒsteemis.
Veel ĂŒks tehnoloogia, mida me ei kasuta, on multikast. Huvi korral saan rÀÀkida selle kasutamise pĂ”hjustest. See muudab elu oluliselt lihtsamaks, kuna kui keegi on seda kogenud ja vaadanud, kuidas tĂ€pselt multikasti kontrollplaan vĂ€lja nĂ€eb â kĂ”igis instalatsioonides, vĂ€lja arvatud kĂ”ige lihtsamates, on see suur peavalu. Veelgi enam, raske on leida hĂ€sti toimivat avatud lahendust, nĂ€iteks.
Ja lĂ”puks, me kujundame meie vĂ”rgud nii, et seal ei toimuks liiga palju muutusi. Saame usaldada, et vĂ€liste sĂŒndmuste voog marsruutimissĂŒsteemis on vĂ€ike.

Milliseid probleeme ja piiranguid tuleb arvesse vĂ”tta, kui me arendame andmekeskuse vĂ”rku? Muidugi, kulud. Skaalautuvus, see, kui kaugele me soovime kasvada. Vajadus laiendada ilma teenuse katkestamiseta. LĂ€bivus, saadavus. VĂ”rgu toimuvate sĂŒndmuste nĂ€htavus jĂ€lgimissĂŒsteemidele, operatiivsetele meeskondadele. Automaatimise tugi â jĂ€lle, nii palju kui vĂ”imalik, kuna erinevaid ĂŒlesandeid saab lahendada erinevatel tasanditel, sealhulgas lisakihtide tutvustamisega. Ja mitte-[vĂ”imaluse]-sĂ”ltuvus tarnijatest. Kuigi eri ajaloolistel perioodidel, sĂ”ltuvalt sellest, millisele lĂ”ikele vaadata, on see sĂ”ltumatus olnud kergem vĂ”i raskem saavutatav. Kui vĂ”tame vĂ”rgu seadmete kiipide lĂ”ike, siis kuni viimase ajani oli hinnata sĂ”ltumatust tarnijatest, kui soovisime ka suure lĂ€bilaskevĂ”imega kiipe, vĂ€ga tingimuslikult.

Kuidas me siis loome oma vÔrku loogilise topoloogia alusel? See saab olema mitmetasandiline Clos. Tegelikult ei ole praegu tÔsiseltvÔetavaid alternatiive. Clos-topoloogia on piisavalt hea, isegi vÔrreldes erinevate arenenud topoloogiatega, mis praegu on peamiselt akadeemilise huvi valdkonnas, kui meil on suure radikiga switchid.

Kuidas on mitmetasandiline Clos-vĂ”rk ĂŒles ehitatud ja kuidas nimetatakse selles erinevaid komponente? Esiteks, tuuleosa, et orienteeruda, kus on pĂ”hjas, kus lĂ”unas, kus idas, kus lÀÀnes. Sellist tĂŒĂŒpi vĂ”rke ehitavad tavaliselt need, kellel on vĂ€ga suur lÀÀne-idatugevus. Mis puutub teistesse komponentidesse, siis ĂŒlalt on kujutatud virtuaalne switch, mis on koostatud vĂ€iksematest switchidest. See on Clos-vĂ”rkude rekursiivse ĂŒlesehitamise peamine idee. VĂ”tame elemendid, millel on mingi radik, ja ĂŒhendame need nii, et saadud struktuuri saab pidada suure radikiga switchiks. Kui on vaja veel rohkem, saab protseduuri korrata.
NĂ€iteks kahesplitiliste Clos'ide puhul, kus on selgelt eristatud komponente, mida minu skeemil esitatakse vertikaalselt, tuntakse neid tasanditena. Kui me ehitaksime Clos'i kolme tasemega spine-lĂŒlititega (kĂ”ik, mis ei ole piir- ega ToR-lĂŒlitid ja mida kasutatakse ainult transiidiks), siis nĂ€eksid tasandid keerulisemad vĂ€lja; kahe tasemega on need just sellised. ToR- vĂ”i leaf-lĂŒlitite plokk ja nendega seotud esimese taseme spine-lĂŒlitid on meil nimetatud Pod'ideks. Spine-lĂŒlitid tasemel spine-1 Pod'i tipus â see on Pod'i ĂŒlemine osa. LĂŒlitid, mis asuvad kogu tehase ĂŒleval â need on tehase ĂŒlemine kiht, Top of fabric.

Muidugi tekib kĂŒsimus: Clos-vĂ”rgud on juba mĂ”nda aega ehitatud, idea alus pĂ€rineb klassikalisest telefonivĂ”rgust ja TDM-vĂ”rkudest. VĂ”ib-olla on midagi paremat ilmnenud, vĂ”ib-olla saaks midagi paremini teha? Ja jah, ja ei. Teoreetiliselt jah, kuid praktikas ei. Seda seetĂ”ttu, et on mĂ”ned huvitavad topoloogiad, millest osa kasutatakse isegi tootmises, nĂ€iteks Dragonfly HPC-rakendustes; on ka huvitavaid topoloogiaid nagu Xpander, FatClique, Jellyfish. Kui vaadata viimasel ajal SIGCOMM vĂ”i NSDI konverentsidel esitatud ettekandeid, vĂ”ib avastada ĂŒsna palju töid alternatiivsete topoloogiate kohta, mis omavad paremaid omadusi (teatud vĂ”i teiste) kui Clos.
Kuid kĂ”igil neil topoloogiatel on ĂŒks huvitav omadus. See takistab nende juurutamist andmekeskuste vĂ”rkudes, mida ĂŒritame ehitada tavalisel riistvaral ja mis on piisavalt mĂ”istliku hinnaga. KĂ”igis neis alternatiivsetes topoloogiates on kahjuks suur osa ribalaiust saadaval mitte kĂ”ige lĂŒhemate teede kaudu. SeetĂ”ttu jÀÀme kohe ilma vĂ”imalusest kasutada traditsioonilist juhtimistaset.
Teoreetiliselt on ĂŒlesande lahendus teada. See on nĂ€iteks link state modifikatsioonid k-lĂŒheima tee kasutamisega, kuid siiski ei ole selliseid protokolle, mis oleksid rakendatud tootmises ja laialdaselt saadaval varustuses.
Lisaks, kuna suurem osa mahutavusest ei ole saadaval lĂŒheima teede kaudu, peame modifitseerima mitte ainult juhtimisplaani, et see valiks kĂ”ik need teed (ja muide, see on palju suurem olek juhtimisplaanis). Peame samuti modifitseerima edasiandmise plaani ning ĂŒldiselt on vajalik vĂ€hemalt kaks lisafunktsiooni. See on vĂ”imalus teha kĂ”ik edasiandmise otsused korraga, nĂ€iteks hostis. Tegelikult on see source routing, mĂ”nikord nimetatakse seda interconnection networks'i kirjanduses all-at-once forwarding decisions. Ja veel on vajalik adapteeruv marsruutimine â see on juba funktsioon, mida vajame vĂ”rguelementidelt, mis hĂ”lmab nĂ€iteks jĂ€rgmise hĂŒppe valimist, tuginedes kĂ”ige madalama jĂ€rjekorra koormuse teabele. NĂ€iteks vĂ”ivad olla ka teised variandid.
Seega on suund huvitav, kuid kahjuks ei saa me seda praegu rakendada.

Okei, peatume Clos-loogilise topoloogia juures. Kuidas me seda laiendame? Vaatame, kuidas see on ĂŒles ehitatud ja mida saame teha.

Clos-vÔrgus on kaks peamist parameetrit, mida saame varieerida ja seelÀbi erinevaid tulemusi saavutada: elementide radiks ja vÔrgutasemete arv. Mul on skeem, mis nÀitab, kuidas need mÔjutavad suurust. Ideaalis kombineerime mÔlemat.

On selgelt nĂ€ha, et Clos-vĂ”rgu lĂ”plik laius on spaini lĂŒlitite lĂ”ikes lÀÀne radiks ja see, kui palju linke me allapoole omame, kuidas see hargneb. Siin on, kuidas me vĂ”rgu suurust laiendame.

Mis puudutab mahtu, eriti ToR-lĂŒlititega, siis on kaks vĂ”imalust laiendamiseks. Kas saame, sĂ€ilitades ĂŒldise topoloogia, kasutada kiiremaid linke vĂ”i saame lisada rohkem tasandeid.
Kui vaatame avatud Clos-vĂ”rgu versioonile (paremas alumises nurgas) ja tagasi sellele Clos-vĂ”rgu pildileâŠ

⊠siis see on tĂ€pselt sama topoloogia, kuid sellel slaidil on see kokku volditud kompaktsemalt ja tehase tasandid on ĂŒksteise peale ladustatud. See on ĂŒks ja sama.

Kuidas nĂ€eb vĂ€lja Clos-vĂ”rgu skaleerimine numbrites? Siin esitan andmed selle kohta, kui suure maksimaalse laiuse vĂ”ib vĂ”rgu saavutada, kui palju riiuleid, ToR-lĂŒliteid vĂ”i lehtlĂŒliteid, kui need ei asu riiulites, saame sĂ”ltuvalt sellest, millised on meie rootorilĂŒlitid, mida kasutatakse spine-tasemetel, ja kui palju tasemeid me sondeerime.
Siin on nÀidatud, kui palju riiuleid meil vÔib olla, kui palju servereid ning kui palju see kÔik kokku vÔib tarbida, arvestades 20 kW riiuli kohta. Natuke varem mainisin, et meie eesmÀrk on umbes 100 000 serverist koosnev klaster.
On nĂ€ha, et kogu selle struktuuri kontekstis pakuvad huvi kaks ja pool varianti. On variant kahe kihiga spainide ja 64-portiliste switchidega, mis on veidi madalamal tasemel. SeejĂ€rel on suurepĂ€raselt sobivad variandid 128-portiliste (radix 128) spine-switchide jaoks kahel tasemel vĂ”i 32 radix switchid kolme taseme osas. Igal juhul, kus on suurem radix ja rohkem tasemeid, on vĂ”imalik luua vĂ€ga suur vĂ”rgu struktuur, kuid kui vaadata oodatavat tarbimist, on see tavaliselt gigavatid. Kaabli vĂ”ib paigaldada, aga nii palju elektrit ĂŒhes kohas me tĂ”enĂ€oliselt ei saa. Kui vaadata statistikat, avalikke andmeid andmekeskuste kohta, siis on vĂ€ga vĂ€he andmekeskuseid, mille arvutatud vĂ”imsus ĂŒletab 150 MW. KĂ”ik, mis sellest rohkem, on tavaliselt andmekeskuste kampused, kus asub mitu suurt andmekeskust, mis on piisavalt lĂ€hedal ĂŒksteisele.
On oluline see, et kui vaadata vasakut veergu, siis on seal nĂ€idatud kasutatav ribalaius. Pole raske mĂ€rgata, et Clos-vĂ”rgus kulub mĂ€rkimisvÀÀrne osa portidest, et ĂŒhendada lĂŒlitid omavahel. Kasutatav ribalaius - see, mida saab suunata vĂ€ljapoole, serverite suunas. Loomulikult rÀÀgin tinglikest portidest ja just ribalaiusest. Ăldjuhul on ĂŒhendused vĂ”rgu sees kiiremad kui ĂŒhendused serverite suunas, kuid iga ribalaius, mida saame suunata, kulutab osa ribalaiusest, mis on seesama vĂ”rgus. Mida rohkem tasandeid loome, seda suuremad on kulud selle ribalaiuse pakkumiseks vĂ€ljapoole.
Peale selle pole isegi see tĂ€iendav ribalaius tĂ€iesti ĂŒhtlane. Kui vahemaa on lĂŒhike, saame kasutada midagi nagu DAC (direct attach copper ehk twinax-kaablid) vĂ”i multimode optikat, mis on veel enam-vĂ€hem mĂ”istlikus hinnaklassis. Kui liikume pikemate vahemaade juurde - tavaliselt on see single mode optika ning selle tĂ€iendava ribalaiuse maksumus tĂ”useb mĂ€rkimisvÀÀrselt.
Ja nagu ma eelneval slaidil mainisin, kui me loome Clos-vĂ”rku ilma ĂŒmberregistreerimiseta, on lihtne vaadata skeemi ja nĂ€ha, kuidas vĂ”rku ehitatakse â iga spain-lĂŒliti taseme lisamisel korratakse kogu riba, mis oli allpool. Pluss taseme â pluss sama riba, veel nii palju, kui oli eelmisel tasemel, lĂŒlitite porte, veel nii palju transiiverit. SeetĂ”ttu on soovitatav minimaalne spain-lĂŒlitite tasemete arv.
Selle pildi pĂ”hjal on selge, et soovime ehitada midagi sarnast 128-radikaalsed lĂŒlitid.

Siin on pÔhimÔtteliselt kÔik see, mida ma just rÀÀkisin, see slaid on pigem hilisemaks aruteluks.

Millised valikud on olemas, mida saame selliste lĂŒlitite jaoks valida? Meie jaoks on vĂ€ga hea uudis, et nĂŒĂŒd on lĂ”puks vĂ”imalik selliseid vĂ”rke ehitada ĂŒhekiibiliste lĂŒlititega. See on tĂ”esti hĂ€mmastav, nad omavad palju meeldivaid omadusi. NĂ€iteks on nende sisemine struktuur peaaegu puudulik. See tĂ€hendab, et need murduvad lihtsamalt. Nad murduvad, ei saa sellest aru, kuid Ă”nneks murduvad nad tĂ€ielikult. Mooduliseadmetes on palju rikkeid (vĂ€ga ebameeldivaid), kui naaber- ja juhtimistasandi vaatepunktist see nĂ€ib töötavat, kuid nĂ€iteks on osa tehase vĂ”imetest kadunud ja see ei tööta tĂ€ielikul mahul. Ja sellele suunatud liiklus tasakaalustatakse lĂ€htuvalt sellest, et see on tĂ€ielikult funktsionaalne, kuid me vĂ”ime saada ĂŒlekoormuse.
NĂ€iteks vĂ”ivad bensiinimootorites tekkida probleemid tagasikutsumisega, sest moodultaolises seadmes on ka kĂ”rge kiirus SerDesâid â see on tĂ”eliselt keeruline. VĂ”i kas tabelid sĂŒnkroniseeritakse vĂ”i mitte edastamise elementide vahel. Ăldiselt sisaldab iga jĂ”udlusega mooduliseade, mis koosneb suurest arvust elementidest, enda sees ikka sama Clos-vĂ”rku, ainult et seda on vĂ€ga raske diagnoosida. Sageli on isegi tarnijal keeruline seda diagnoosida.
Ja sellel on palju rikke stsenaariume, kus seade degraneerub, kuid ei lange tĂ€ielikult topoloogiast vĂ€lja. Kuna meie vĂ”rk on suur, kasutatakse aktiivselt tasakaalustamist identsete elementide vahel, on vĂ”rk vĂ€ga regulaarne, see tĂ€hendab, et ĂŒks tee, kus kĂ”ik on korras, ei erine teistest teedest, siis on meie jaoks kasulikum lihtsalt kaotada osa seadmeid topoloogiast, kui sattuda olukorda, kus mĂ”ned neist nĂ€iliselt töötavad, kuid ei tööta.

JĂ€rgmine meeldiv omadus ĂŒhekiibiliste seadmete puhul on, et need arenevad paremini ja kiiremini. Samuti on neil tavaliselt parem maht. Kui vaadata meie suuremaid kogumisi, siis on mahutavus rack-ĂŒksuse kohta samade kiirusportide puhul peaaegu kaks korda parem kui moodul-seadmetel. Ăhe kiibi ĂŒmber ehitatud seadmed on mĂ€rkimisvÀÀrselt odavamad kui moodul-seadmed ja tarbivad vĂ€hem energiat.
Aga loomulikult, see kĂ”ik ei tule tasuta â on ka puudusi. Esiteks on praktiliselt alati vĂ€iksem radikaal vĂ”rreldes moodul-seadmetega. Kui saame ĂŒhe kiibi kesksete seadmete puhul 128 porti, siis moodulite puhul saame juba praegu ĂŒsna kergesti mitusada porti.
See on mĂ€rkimisvÀÀrselt vĂ€iksem suunamis tabelite maht ja ĂŒldiselt kĂ”ik, mis puudutab andmeplaadi skaleeritavust. Pinnapealsed puhvried. Ja ĂŒldiselt on funktsionaalsus ĂŒsna piiratud. Kuid selgub, et kui need piirangud teada ja Ă”igel ajal hoolitseda nende ĂŒletamise vĂ”i arvestamise eest, siis tegelikult ei ole see nii hirmutav. Radixi vĂ€iksemus ei ole probleemiks uutel, lĂ”puks ilmuvatel 128 radiks seadmetel, saame ehitada kahes kihis spinaid. Ja vĂ€iksema kui kaks ei saa me ikkagi midagi huvitavat ehitada. Ăhe tasemega on tulemuseks tĂ€iesti vĂ€ikesed klastrid. Isegi meie eelmised kujundused ja nĂ”udmised ĂŒletasid need ikka veel.
Tegelikult, kui lahendus on kuskil piiril, on veel ĂŒks viis skaleerimiseks. Kuna viimane (vĂ”i esimene), madalaim tase, kuhu serverid ĂŒhendatakse â ToR-lĂŒlitid vĂ”i leaf-lĂŒlitid, ei pea me neid ĂŒhendama ainult ĂŒhe kapiga. SeetĂ”ttu, kui lahendus jÀÀb kuskil kaks korda alla, vĂ”ib mĂ”elda suurema radiksiga lĂŒliti kasutamisele alumisel tasemel ja nĂ€iteks ĂŒhendada kaks-kolm kappi ĂŒhe lĂŒlitiga. See on samuti variant, millel on oma kulud, kuid see töötab hĂ€sti ja vĂ”ib osutuda heaks lahenduseks, kui on vajalik suurust kahekordistada.

KokkuvÔtteks, ehitame kahe taseme spinaalide topoloogia alusel, kaheksakihilise tehasega.

Mis juhtub fĂŒĂŒsikaga? VĂ€ga lihtsad arvutused. Kui meil on kaks spinaa, siis on meil kokku kolm vahekĂ€iku ja me ootame, et vĂ”rgus on kolm kaablisegmenti: serveritest kuni leaf-switch'ide, spina 1 ja spina 2. Valikud, mida saame kasutada, on twinax, multimood ja ĂŒksikreĆŸiim. Siin tuleb arvestada, milline ribalaius on saadaval, kui palju see maksab, millised on fĂŒĂŒsilised mÔÔtmed, milliste vahedega me saame edasi minna ja kuidas me plaanime uuendada.
Hinna osas saame kĂ”ik ritta seada. Twinax'id on tunduvalt odavamad kui aktiivne optika, odavamad kui multimood edastajad, kui arvestada lĂ”igu hindadega, ja natuke odavamad kui 100-Gbps port vahetusest. Ja see, tĂ€helepanu, on odavam kui ĂŒksikreĆŸiimi optika, kuna kohtades, kus on vajalik ĂŒksikreĆŸiim, on andmekeskustes mitmel pĂ”hjusel mĂ”ttekas kasutada CWDM-d. Parallelne ĂŒksikreĆŸiim (PSM) ei ole vĂ€ga mugav kasutada, tulemuseks on vĂ€ga suured kiudpakid, ja kui jÀÀda nende tehnoloogiate juurde, tekib umbes selline hinnahierarhia.
Veel ĂŒks tĂ€helepanek: kahjuks ei ole 100 4x25 multimood ports hĂ€sti kasutatavad. SFP28 ĂŒlekandjate konstruktsiooni eripĂ€rade tĂ”ttu on nende maksumus vaid veidi odavam kui QSFP28 100 Gbit jaoks. Ja see lahendus multimoodile ei toimi eriti hĂ€sti.
Veel ĂŒks piirang on see, et meie andmekeskused on fĂŒĂŒsiliselt suured, kuna arvutikluster on ulatuslik ja serverite hulk on suur. See tĂ€hendab, et vĂ€hemalt ĂŒks vahe tuleb teha sĂŒnkroonselt. Taaskord, fĂŒĂŒsilise suuruse tĂ”ttu ei saa me lĂ€bi minna kaht twinax ŃĐ”Đștsioonit (vaste kaablitega).
KokkuvĂ”ttes, kui optimeerida hinda ja arvestada selle konstruktsiooni geomeetriat, saame ĂŒhe vahe, mis kasutab twinaxi, ĂŒhe vahe multimoodiga ja ĂŒhe vahe sĂŒnkroonselt koos CWDM-iga. See arvestab vĂ”imalikke uuenduste teid.

Nii nĂ€eb vĂ€lja nĂ€iteks see, millised on olnud viimased arengud, kuhu me liigume ja mis on vĂ”imalik. On selge, et suundume 50-gigabittiste SerDes'ide suunas nii multimoodilises kui ka ĂŒhe kompliidi reĆŸiimis. Veelgi enam, kui vaatame, mis on praegu ĂŒhe kompliidi transiiverites ja mida oodatakse 400G puhul, siis tihti, isegi kui 50G SerDes'id tulevad elektriliselt, minnakse optikas juba 100 Gbps lane'idesse. Seega on tĂ€iesti vĂ”imalik, et enne 50G ĂŒleminekut toimub ĂŒleminek 100-gigabittistele SerDes'idele ja 100 Gbps lane'idele, kuna paljude tootjate lubaduste kohaselt oodatakse nende kĂ€ttesaadavust ĂŒsna varsti. Aeg, mil 50G SerDes'id olid kĂ”ige kiiremad, tundub, et ei tule olema vĂ€ga pikk, kuna 100G SerDes'e hakatakse vĂ€lja andma juba jĂ€rgmisel aastal. Ja mĂ”ne aja pĂ€rast vĂ”ivad need tĂ”enĂ€oliselt maksma minna mĂ”istlikke summasid.

Veel on nĂŒansse, mida arvesse vĂ”tta fĂŒĂŒsika valimisel. Teoreetiliselt saame juba praegu rakendada 400- vĂ”i 200-gigabitisĐ” portsse, kasutades 50G SerDes'i. Kuid tundub, et see pole eriti mĂ”istlik, kuna nagu ma varem rÀÀkisin, soovime me oma lĂŒlitites piisavalt suurt radikssi, loomulikult mĂ”istlikkuse piires. Soovime 128. Kui aga meil on kiibi maht piiratud ja me tĂ”stame linki kiirusĐ”, siis radikss loomulikult vĂ€heneb, imesid ei juhtu.
Kuid ĂŒldist mahtu saame suurendada tasapindade arvu kasvatamisega, ja sellega ei kaasne erilisi kulusid, tasapindade arvu on vĂ”imalik kasvatada. Kui aga me kaotame radikssi, peame sisse viima tĂ€iendava taseme, seega praeguste arvutuste puhul, praeguse maksimaalselt kĂ€ttesaadava kiibi mahu juures, selgub, et tĂ”husam on kasutada 100-gigabitisi porte, kuna need vĂ”imaldavad saavutada suuremat radikssi.

JĂ€rgmine kĂŒsimus on see, kuidas on korraldatud fĂŒĂŒsika, kuid juba kaabelinfrastruktuuri vaatenurgast. Selgub, et see on korraldatud ĂŒsna lĂ”busalt. Kabelliidesed leaf-lĂŒlitite ja esimese taseme spine'ide vahel â seal pole palju linke, kĂ”ik on suhteliselt lihtsalt ĂŒles ehitatud. Kuid kui vĂ”tame ĂŒhe tasandi, siis see, mis toimub seestpoolt â seal tuleb kĂ”ik esimese taseme spine'id ĂŒhendada kĂ”igi teise taseme spine'idega.
Lisaks on tavaliselt teatud soovid selle kohta, kuidas see andmekeskuses vĂ€lja peaks nĂ€gema. NĂ€iteks soovisime vĂ€ga, et kaablid oleksid kokku pandud ja juhitud nii, et ĂŒks kĂ”rge tihedusega patch panel lĂ€heks tĂ€ielikult ĂŒhte patch panelisse, et vĂ€ltida pikkuste segadust. Me suutsime selle probleemi lahendada. Kui vaadata algselt loogilist topoloogiat, siis on nĂ€ha, et tasandid on sĂ”ltumatud, iga tasand vĂ”ib ehitada iseseisvalt. Kuid kui me lisame sellise bundling'i ja soovime tĂ€ielikult patch paneli patch panelisse tĂ”mmata, tuleb meil ĂŒhe bundli sees segada erinevaid tasandeid ja luua vahepealne konstruktsioon optiliste ristĂŒhenduste kujul, et ĂŒmber pakkida need sellest, kuidas nad ĂŒhes segmendis kokku pandi, selliseks, kuidas nad teises segmendis kokku pannakse. TĂ€nu sellele saame me meeldiva omaduse: kogu keeruline ĂŒhendamine ei ulatu vĂ€ljapoole rack'e. Kui midagi on vĂ€ga tugevalt sassis, 'avada tasandeid', nagu mĂ”nikord Clos-vĂ”rkudes öeldakse, siis on kĂ”ik koondatud ĂŒhe rack'i sisse. Meil ei ole tugevalt lahutatud, isegi individuaalsete linkide ulatuses, ĂŒhendusi rack'ide vahel.

Nii see vĂ€lja nĂ€eb, kui vaadata kabeliinfrastruktuuri loogilist korraldust. Vasakul pildil tĂ€histavad vĂ€rvilised plokid esmaklasside spain lĂŒliteid, kokku kaheksa, ning nendest lĂ€htuvad neli köit, mis ristuvad teiste köidudega, mis tulevad spain-2 lĂŒlititest.
VĂ€ikesed ruudud tĂ€histavad ristumiskohti. Vasakpoolne ĂŒlemine osa annab ĂŒlevaate iga ristumiskoha kohta, tegelikult on see 512 porti kross-konnekti moodul, mis pakendab kaableid nii, et need jĂ”uavad tĂ€ielikult ĂŒhte rack'i, kus on ainult ĂŒks spain-2 tasapind. Paremal on selle pildi detailsem ĂŒlevaade, rakendudes mitmele Pods spain-1 tasemel, ja kuidas see kross-konnektis pakitakse, kuidas see jĂ”uab spain-2 tasemele.

Nii see vĂ€lja nĂ€eb. Veel mitte tĂ€ielikult kokku pandud spain-2 rack (vasakul) ja kross-konnekti rack. Kahjuks pole seal vĂ€ga palju nĂ€ha. Kogu konstruktsioon ehitatakse parajasti ĂŒhes meie suurtest andmekeskustest, mis laieneb. See on töö kĂ€imas, see nĂ€eb vĂ€lja ilusam ja on paremini tĂ€idetud.

Oluline kĂŒsimus: oleme valinud loogilise topoloogia ja ehitanud fĂŒĂŒsilise. Mis juhtub control plane'iga? Praktikast on teada, et on mĂ”ningaid ettekandeid, et link state protokollid on head, nendega on meeldiv töötada, kuid kahjuks ei skaleeru nad tihedalt interconnectitud topoloogiate puhul hĂ€sti. Ja on ĂŒks peamine tegur, mis seda takistab â see, kuidas flooding link state protokollides toimub. Kui vĂ”tta lihtsalt flooding algoritm ja vaadata, kuidas meie vĂ”rk on ĂŒles seatud, siis on selge, et igal sammul on vĂ€ga suur fanout ja see lihtsalt joonistab control plane'i uuendustega ĂŒle. Just sellised topoloogiad koos traditsioonilise flooding algoritmiga link state protokollides segunevad vĂ€ga kehvasti.
Valiku tegemiseks on kasutada BGP-d. Selle Ă”igeks seadistamiseks on kirjeldatud RFC 7938, mis kĂ€sitleb BGP kasutamist suurtes andmekeskustes. PĂ”hijooned on lihtsad: minimaalne eelliste arv hostis ja kogu vĂ”rgus, kasutada agregatsiooni, kui see on vĂ”imalik, ja vĂ€hendada path hunting'i. Soovime vĂ€ga ettevaatlikku ja vĂ€ga kontrollitud uuenduste levitamist, mida nimetatakse valley free'iks. Soovime, et uuendused kulgeksid lĂ€bi vĂ”rgu ainult korra. Kui need originaalsetest allikatest tulevad, siis liiguvad nad ĂŒlespoole ja neid levitatakse mitte rohkem kui ĂŒks kord. Zigezage ei tohi esineda. Zigezage peavad olema vĂ€listatud.
Selleks kasutame ĂŒsna lihtsat skeemi, et rakendada BGP pĂ”himĂ”tteid. Me kasutame eBGP-d, mis töötab link local tasemel, ja autonoomsed sĂŒsteemid mÀÀratakse jĂ€rgmiselt: autonoomne sĂŒsteem ToR-i jaoks, autonoomne sĂŒsteem kogu spine-1-lĂŒlitite bloki jaoks ĂŒhe Pod'i sees ning ĂŒldine autonoomne sĂŒsteem kogu Top of Fabric'i jaoks. On lihtne vaadata ja veenduda, et isegi normaalne BGP kĂ€itumine annab meile soovitud uuenduste leviku.

Muidugi, on vajalik kujundada aadressimine ja aadresside kogumine nii, et see oleks kooskĂ”las marsruutimise struktuuriga, et tagada control plane'i stabiilsus. L3 aadressimine transpordis on seotud topoloogiaga, kuna ilma selleta ei ole vĂ”imalik saavutada kogumist; vastasel juhul satuvad individuaalsed aadressid marsruutimisĂŒsteemi. Veel ĂŒks asi on see, et kogumine ei segune kahjuks hĂ€sti multi-path'iga, sest kui meil on multi-path ja kogumine, on kĂ”ik korras, kui kogu vĂ”rk töötab tĂ”rgeteta. Kahjuks, niipea kui vĂ”rgus ilmnevad tĂ”rked ja topoloogia sĂŒmmeetria kaob, vĂ”ime jĂ”uda punkti, kust agregaat on teada antud, kust edasi minna ei saa sinna, kuhu meil vaja on. SeetĂ”ttu on parim koguda seal, kus ei ole rohkem multi-path'i, meie puhul ToR-lĂŒlitites.

Tegelikult on aggregeerimine vĂ”imalik, kuid ettevaatlikult. Kui suudame teha kontrollitud deaggregeerimist, kui vĂ”rgu talitlushĂ€ired tekivad. Kuid see on piisavalt keeruline ĂŒlesanne, oleme isegi proovinud hinnata, kas see on vĂ”imalik, kas saab paigaldada tĂ€iendavat automaatikat ja lĂ”ppautomaatide sĂŒsteeme, mis suudaksid korralikult BGP-d juhtida, et saavutada soovitud kĂ€itumine. Kahjuks on ÀÀrealade juhtimine vĂ€ga ebaselge ja keeruline, ning selle ĂŒlesande lahendamine BGP vĂ€lise varustuse ĂŒhendamise kaudu ei toimi hĂ€sti.
Selles osas on RIFT protokolli raames tehtud vÀga huvitavat tööd, millest rÀÀgitakse jÀrgmises ettekandes.

Teine oluline aspekt on see, kuidas skaleeruvad andmevĂ€ljad tihedate topoloogiate puhul, kus meil on suur hulk alternatiivseid teid. Selleks kasutatakse mitmeid tĂ€iendavaid andmestruktuure: ECMP grupid, mis kirjeldavad omakorda jĂ€rgmise hĂŒppe gruppe.
Tavaliselt toimivas vĂ”rgus, kus ei esine hĂ€ireid ja kui liigelda Clos-topoloogias ĂŒlespoole, piisab ainult ĂŒhe grupi kasutamisest, sest kĂ”ik, mis ei ole lokaalne, on kirjeldatud vaikevÀÀrtusena ning saab liikuda ĂŒles. Kui liigelda ĂŒlemisest allapoole lĂ”una suunas, siis kĂ”ik teed, mis ei lĂ€he ECMP kaudu, on ĂŒhetaktinisid. KĂ”ik on hea. Probleem ja Clos-topoloogia klassikaline eripĂ€ra on see, et kui vaadata kangi ĂŒlaosa, siis igal elemendil on ainus tee igasse elemendi alla. Kui mööda seda teed tekivad tĂ”rked, siis see konkreetne element kangi ĂŒlaosas muutub ebakĂ”lblikuks just nende prefixide jaoks, mis asuvad katkenud tee taga. Kuid teiste jaoks on see kehtiv ja me peame lahti vĂ”tma ECMP grupid ning sisse viima uue oleku.
Kuidas nĂ€eb vĂ€lja andmeplaneedi skaleeritavus kaasaegsetes seadmetes? Kui me teeme LPM-i (pikima eelprefiksi vaste), siis kĂ”ik on ĂŒsna hĂ€sti, ĂŒle 100 000 eelprefiksi. Kui rÀÀgime Next Hop grupidest, siis olukord on halvem, 2-4 tuhat. Kui rÀÀgime tabelist, mis sisaldab Next Hops'i (vĂ”i naabruses asuvaid), siis see on kuskil 16 000 kuni 64 000. Ja see vĂ”ib tekkida probleem. Ja siit jĂ”uame huvitava tĂ€helepanekuni: mis juhtus MPLS-iga andmekeskustes? PĂ”himĂ”tteliselt soovisime seda rakendada.

Juhtus kaks asja. Me tegime mikrosegmentatsiooni hostides, seega ei olnud meil vaja seda teha vĂ”rgus. Erinevate tootjate toe osas polnud olukord eriti hea, rÀÀkimata avatud rakendustest valgete kastide puhul koos MPLS-iga. Ja veel, MPLS, vĂ€hemalt selle traditsioonilised rakendused, kahjuks ei sobi ĂŒldse ECMP-iga. Ja just selle pĂ€rast.

See, kuidas ECMP-suunamise struktuur IP jaoks vĂ€lja nĂ€eb. Palju eelvĂ”tteid vĂ”ib kasutada sama rĂŒhma ja sama Next Hops (vĂ”i adjacencies, erinevates seadmete dokumentatsioonides vĂ”ib see erinevalt nimetada). Idee on, et see kirjeldatakse kui vĂ€ljundport ja kuhu MAC-aadress ĂŒmber kirjutada, et jĂ”uda Ă”ige Next Hopi juurde. IP jaoks nĂ€eb kĂ”ik vĂ€lja lihtne, seda saab kasutada vĂ€ga suure hulga eelvĂ”tete jaoks ĂŒhe ja sama grupi peale, ĂŒhe ja sama Next Hops bloki juures.

Klassikaline MPLS-arkitektuur tÀhendab, et sÔltuvalt vÀljundliidese mÀrgist vÔib see kirjutada kokku erinevatele vÀÀrtustele. SeetÔttu peame hoidma iga sisenemÀrgi jaoks grupi ja Next Hops'i bloki. Kahjuks ei ole see skaleeritav.
Ei ole keeruline nĂ€ha, et meie konstruktsiooni jaoks vajasime umbes 4000 ToR-lĂŒlitit, maksimaalne laius â 64 ECMP rada, kui liikuda spina-1-st spina-2 suunas. Me mahume napilt ĂŒhte ECMP-gruppide tabelisse, kui ainult ĂŒks eelvĂ”te ToR-i kaudu lahkub, ja ei mahu ĂŒldse Next Hops tabelisse.

KÔik pole lootusetu, sest Segment Routingi arhidektuuri puhul kasutatakse globaalset silti. Ahnest vÔiksime taas kÔik need jÀrgnevate hopside plokid kokku panna. Selleks on vajalik selline toiming nagu wildcard: vÔtta silt ja kirjutada see samale, ilma konkreetse vÀÀrtuseta. Kahjuks ei ole see aga kergesti kergesti kÀtte saadavates teostustes vÀga olemas.
Ja lĂ”puks, peame andma andmekeskusele vĂ€list liiklust. Kuidas seda teha? Varem toodi liiklus Clos-vĂ”rkudesse ĂŒlevalt. See tĂ€hendab, et olid piiriruuterid, mis olid ĂŒhendatud kĂ”igi seadmetega Top of fabric. See lahendus töötab tĂ€iesti hĂ€sti vĂ€ikestes ja keskmistes suurustes. Kahjuks, et liiklust sarnasel viisil kogu vĂ”rku tuua, tuleb jĂ”uda samal ajal kĂ”igisse Top of fabric'i elementidesse, ja kui neid muutub rohkem kui sada, selgub, et vajame suurt radikaali ka piiriruuterite peal. Ăldiselt maksab see raha, sest piiriruuterid on funktsionaalsemad, nende pordid on kallimad, ja see moodustab mitte vĂ€ga ilusa konstruktsiooni.
Teine variant on liikluse suunamine alt ĂŒles. Ei ole raske veenduda, et Clos-topoloogia on ĂŒles ehitatud nii, et alt tulev liiklus, st ToR-i poolt, jagatakse tasemete vahel ĂŒhtlaselt kogu Top of fabric'is kahe iteratsiooni jooksul, koormates kogu vĂ”rku. SeetĂ”ttu tutvustame me spetsiaalset tĂŒĂŒpi Pod'i, Edge Pod'i, mis tagavad vĂ€lise ĂŒhenduvuse.
On veel ĂŒks vĂ”imalus. NĂ€iteks teeb seda Facebook. Nad nimetavad seda Fabric Aggregator vĂ”i HGRID. Sisse tuuakse lisaspainiserveri tase, et ĂŒhenduda mitme andmekeskusega. Selline konstruktsioon on vĂ”imalik, kui meil ei ole liitumiskohtades tĂ€iendavaid funktsioone vĂ”i kapseldusmuutusi. Kui need on olemas, siis tegemist on tĂ€iendavate puutepunktidega, mis muudavad asja keerulisemaks. Reeglina tekib rohkem funktsioone ja mingi membraan, mis eraldab erinevaid osi andmekeskusest. Sellise membraani suur tegemine ei ole mĂ”istlik, aga kui see on mingil pĂ”hjusel vĂ€ga vajalik, siis on mĂ”istlik kaaluda selle eemaldamist, teha see vĂ”imalikult laiekes ja viia hostidesse. Nii teeb nĂ€iteks paljud pilveteenuse pakkujad. Neil on overlayd, mis algavad hostidest.

Millised arenguvÔimalused meie arvates on? Esiteks - CI/CD torujuhtme toetamise parendamine. Soovime lennata nii, nagu me katsetame, ja testida nii, nagu me lendame. See ei Ônnestu just kÔige paremini, kuna infrastruktuur on suur ja seda ei saa katsetamiseks dubleerida. Peame vÀlja mÔtlema, kuidas testimiselemente tööinfrastruktuuri lisada, ilma et see kokku kukuks.
Parim töötlus, parim monitoorium on enamasti kunagi liig. KĂŒsimus on tasakaalus jĂ”udude ja tulemuste vahel. Kui mĂ”istlike jĂ”ududega saab midagi lisada - siis on see suurepĂ€rane.
AvaoperatsioonisĂŒsteemid vĂ”rguseadmetele. Parimad protokollid ja parimad marsruutimissĂŒsteemid, nĂ€iteks RIFT. Samuti on vajalikud uuringud parimate ummikute juhtimise skeemide rakendamise kohta ja vĂ”ib-olla teatud punktides RDMA toe hĂ”lmamine klastrite vahel.
Kui vaadata kaugemasse tulevikku, on vajalikud arenenud topoloogiad ja vĂ”ib-olla vĂ”rgud, mis kasutavad vĂ€iksemat overhead'i. Viimase aja uudistest â hiljuti ilmusid avaldused HPC Cray Slingshot tehase tehnoloogiast, mis pĂ”hineb commodity Ethernet'il, kuid pakub vĂ”imalust kasutada palju lĂŒhemaid pealkirju. Selle tulemusena vĂ€heneb overhead.

KĂ”ik tuleb teha nii lihtsaks kui vĂ”imalik, kuid mitte lihtsamaks. Komplexsus on skaleeritavuse vaenlane. Lihtsus ja regulaarne struktuur on meie sĂ”brad. Kui on vĂ”imalus kuskil skaalat tĂ”sta â tehke seda. Ăldiselt on nĂŒĂŒd suurepĂ€rane tegutseda vĂ”rgu tehnoloogiate vallas. Toimub palju huvitavat. AitĂ€h.
Allikas: habr.com
