Tööstusuudised

Kuidas Netflix koodi kasutab

2020-03-03
Autor Zef Hemelon 13. juuni 2013.

Populaarse filmi voogesituse sait Netflix kasutab sada korda päevas ilma peakokka või nukuta kasutamata, ilma kvaliteedi tagamise osakonnata ja ilma vabastamisinsenerideta. Selleks ehitas Netflix täiustatud ettevõttesisese PaaS-i (platvorm kui teenus), mis võimaldab igal meeskonnal kasutada oma osa infrastruktuurist igal ajal, kui nad seda soovivad, hoolimata sellest, mitu korda nad seda vajavad. QCon New York 2013 ajal rääkis Jeremy Edberg infrastruktuurist, mille Netflix ehitas Amazonase AWS-i peal selle kiire iteratsiooni kiirendamiseks.



Netflix kasutab nende API juurutamiseks teenustele orienteeritud arhitektuuri, mis tegeleb suurema osa saidi taotlustega (2 miljardit taotlust päevas). Kulisside taga on API jaotatud paljudeks teenusteks, kus iga teenust haldab meeskond, mis võimaldab meeskondadel töötada suhteliselt iseseisvalt ja ise otsustada, millal ja kui sageli nad soovivad uut tarkvara juurutada.



Netflix on DevOpsisse palju investeerinud. Arendajad loovad, juurutavad ja haldavad oma serveriklastrid ning vastutavad, kui asjad valesti lähevad. Ebaõnnestumise korral korraldatakse istungjärk, kus uuritakse probleemi algpõhjust ja arutatakse võimalusi sarnaste probleemide ennetamiseks tulevikus - sarnaselt viiele viskele -.



Juurutamine Netflixis on täielikult automatiseeritud. Kui teenus tuleb kasutusele võtta, lükkab arendaja kõigepealt koodi lähtekoodi hoidlasse. Koodi vajutuse võtab vastu Jenkins, kes teostab seejärel rakendusepaketi koostamist. Seejärel toodetakse värske VM-pilt (AMI), mis põhineb baaspildil (sisaldab Linuxi jaotust) ja tarkvaral, mida kõik Netflixi serverid töötavad, sealhulgas JVM ja Tomcat, mida meeskond võib veelgi kohandada. Sellele põhiinstallile on installitud rakenduste pakett. Sellest alates toodetakse ja registreeritakse süsteemis AMI.



VM-piltide oma infrastruktuurile juurutamiseks ehitas Netflix Asgardi. Asgardi veebiliidese kaudu saab VM-kujutisi uute EC2 klastrite loomiseks kiirendada. Iga klaster koosneb vähemalt 3 EC2 eksemplarist koondamise jaoks, mis on jaotatud mitmele saadavustsoonile. Uue versiooni juurutamisel hoitakse klastrit, kus töötab eelmine versioon, uue versiooni realiseerimise ajal. Kui uus versioon on alglaaditud ja on end registreerinud Netflixi teenuste registris nimega Eureka, libistab koormuse tasakaalustaja lüliti, mis suunab kogu liikluse uude klastrisse. Uut klastrit jälgitakse hoolikalt ja seda hoitakse üleöö. Kui kõik sujub, hävitatakse vana klaster. Kui midagi läheb valesti, lülitatakse koormuse tasakaalustaja tagasi vanasse klastrisse.



Netflixi infrastruktuuris toimub tõrge pidevalt. Tarkvara peab suutma toime tulla rikkega riistvara, võrguühenduse ja paljude muude riketega. Isegi kui ebaõnnestumine ei toimu loomulikul teel, kutsutakse see Simiani armee jõuliselt esile. Simiani armee koosneb mitmetest (tarkvara) "ahvidest", mis juhuslikult juurutavad tõrkeid. Näiteks Chaos Monkey viib serverid juhuslikult alla ja Latency Monkey juhuslikult juhib võrku latentsust. Kui tagatakse, et ebaõnnestumisi juhtub pidevalt, on meeskonnal võimatu probleemi ignoreerida ja luuakse kultuur, mille esmatähtis prioriteet on vea vastupidavus.



Paljud Netflixi infrastruktuuri osad on juba avatud lähtekoodiga ja saadaval Githubis. Netflixi eesmärk on lõpuks vabastada kogu oma infrastruktuur, et teised ettevõtted sellest kasu saaksid.

Alates: https: //www.infoq.com/news/2013/06/netflix/