Uvod u Spinnaker

1. Pregled

U ovom uputstvu pogledat ćemo Spinnaker, platformu za kontinuiranu isporuku otvorenog koda koju je izradio Netflix. Možemo ga koristiti za razmještanje naših aplikacija na više pružatelja usluga u oblaku.

Sustav je izgrađen na vrhu Spring Boota i podržava mnoge pružatelje usluga u oblaku.

Vidjet ćemo kako to funkcionira i za koje slučajeve ga možemo koristiti.

2. Pozadina

Pogledajmo povijest razvoja softvera. Prvo smo imali Vodopad s rijetkim izdanjima.

Nakon toga počeli smo raditi Agile i isporučivali smo značajke svakog sprinta. Međutim, još uvijek nismo raspoređivali u proizvodnji svaki sprint. Nažalost, korisnici još uvijek nisu mogli koristiti nove značajke koje su ležale na polici.

Bilo je nekoliko razloga za redovito raspoređivanje. Jedna od njih bila je činjenica da su se koraci implementacije često izvršavali ručno i skloni ljudskim pogreškama.

Osim toga, neki su ljudi mislili da češće raspoređivanje znači veći rizik za potencijalne probleme. Danas se uglavnom slažemo da primjena malih promjena znači manji rizik za velike pogreške. Bez obzira na to, ako postoji pogreška, možemo je brzo pronaći u maloj promjeni i objaviti novu verziju koja rješava problem.

3. Spinaker

Sa Spinnakerom možemo koristiti kontinuiranu isporuku ili kontinuirano postavljanje kako bismo našu aplikaciju automatski pustili u proizvodnju. Kontinuirana isporuka znači da je sve pripremljeno za produkcijsko izdanje.

Međutim, izdanje se odobrava ručno prije nego što se aplikacija postavi u proizvodnju. Kontinuirano raspoređivanje znači da nema ručne intervencije. Izvode se svi koraci, uključujući postavljanje u proizvodnju. Samo gurnemo naš aplikacijski kôd u sustav kontrole verzija i to je to.

Od guranja našeg koda do kontrole verzija do uvođenja u proizvodnju, možemo izvršiti puno koraka. Možemo izgraditi svoj kôd, jedinstveno testirati kôd, rasporediti ga u testno okruženje i izvršiti funkcionalne testove. Za konfiguriranje svih tih koraka koristimo takozvani cjevovod.

Pomoću Spinnakera možemo stvoriti takav cjevovod i primijeniti našu aplikaciju na većini davatelja usluga u oblaku.

4. Komponente

Spinnaker se u osnovi sastoji od dva dijela: sloja apstrakcije na vrhu različitih pružatelja usluga u oblaku i alata za kontinuiranu isporuku.

4.1. Tradicionalno postavljanje u oblak

Kada pogledamo davatelje usluga u oblaku, svi oni nude više-manje iste usluge. Te usluge uključuju stvari kao primjerke, bez poslužitelja i podršku za spremnike.

Međutim, konfiguracija tih usluga uvelike se razlikuje od davatelja usluga. To otežava prebacivanje između davatelja usluga. Potrebno je neko vrijeme da se prebacimo na drugog davatelja usluga u oblaku i naučimo sve detalje, što znači da u osnovi imamo vezu sa dobavljačem kod našeg dobavljača usluga u oblaku.

Netflix je želio imati mogućnost jednostavnog prebacivanja između davatelja usluga u oblaku, umjesto da ovisi o samo jednom. Zbog toga su izgradili apstraktni sloj na vrhu davatelja usluga u oblaku.

4.2. Sloj apstrakcije

Kada koristimo Spinnaker, to je isto kod svih davatelja usluga u oblaku. Možemo ga koristiti na Amazon Web Services, Microsoft Azure, Google Cloud Platform, OpenStack, Google App Engine ili Kubernetes. To nam omogućuje prelazak na drugog davatelja usluga u oblaku ako su cijene konkurentnije.

Čak štoviše, možemo odabrati raspoređivanje na više davatelja usluga istovremeno. Na taj način možemo pokrenuti našu aplikaciju na dva ili više davatelja usluga radi dodatne suvišnosti.

Još jedna prednost apstraktnog sloja je što se usredotočuje na aplikacije umjesto na resurse. Obično nam pružatelji usluga u oblaku prikazuju resurse koje trenutno koristimo. Međutim, sami moramo shvatiti koja aplikacija koristi koje resurse.

No resursi nam nisu zanimljivi. Želimo pokrenuti našu aplikaciju bez trošenja vremena na praćenje resursa. Spinnaker ima pogled usmjeren na primjenu. Dakle, kada ga pogledamo, prvo vidimo aplikaciju, a zatim vidimo resurse koje aplikacija koristi.

4.3. Kontinuirana dostava

Povrh sloja apstrakcije, Netflix je izgradio platformu za kontinuiranu isporuku. Ova nam platforma omogućuje upotrebu naše aplikacije na jednom ili više davatelja usluga u oblaku. Izgleda pomalo poput Jenkinsa, ali nudi ljepšu integraciju s pružateljima usluga u oblaku i zahtijeva manje konfiguracije.

Na primjer, možemo pokrenuti cjevovod kontinuirane isporuke od Jenkinsa, učitane Dockerove slike ili git push-a. Nakon toga pomoću naše aplikacije možemo jednostavno stvoriti sliku ili spremnik i pokrenuti ga u proizvodnji.

Međutim, dostupno je mnogo više opcija kao što su automatizirana ispitivanja i ručna odobrenja prije uvođenja u proizvodnju.

Možemo čak odlučiti koju strategiju želimo slijediti prilikom postavljanja nove verzije postojeće aplikacije. Kao takav, staru je verziju moguće jednostavno zamijeniti novom. Međutim, bolja bi strategija bila prvo ih pokrenuti rame uz rame. Na taj način možemo automatski ili ručno provjeriti radi li nova verzija i, ako da, ukloniti staru.

5. Netflixov model oblaka

Svaka se aplikacija sastoji od jedne ili više grupa poslužitelja. Ista verzija aplikacije radi na svim instancama u grupi poslužitelja. Koristi se sljedeća konvencija imenovanja: ---. Polje (neobavezno) steka koristi se za određivanje je li grupa poslužitelja za testne, proizvodne ili druge svrhe. Izborno polje detalja koristi se za dodatne informacije.

Konačno, imamo koncept klastera koji sadrži jednu ili više grupa poslužitelja s istim imenom, stogom i pojedinostima. Međutim, većinu vremena svaka grupa poslužitelja u klasteru pokreće drugu verziju aplikacije. Neuspjeli primjerci zamijenit će se novim.

Također je moguće automatski dodati instance grupi poslužitelja kako bi se prilagodilo povećanom opterećenju.

6. Strategija raspoređivanja

Kad implementiramo novu verziju aplikacije, obično se odabire strategija "crveno / crno". Prvo se na klaster postavlja nova grupa poslužitelja koja sadrži novu verziju aplikacije. Nakon primjene aplikacije, provodi se provjera je li nova grupa poslužitelja zdrava.

Sada je grupa poslužitelja omogućena i dostupna našim kupcima. Napokon, stara grupa poslužitelja je onemogućena.

U ovom je scenariju lako vratiti se ako nešto pođe po zlu s novim aplikacijskim poslužiteljem. Jednostavno možemo ponovo omogućiti grupu poslužitelja sa starom verzijom i učiniti je dostupnom našim kupcima.

7. Zašto Spinaker

Sa Spinnakerom se možemo usredotočiti na našu aplikaciju umjesto na oblačne resurse koje koristimo. To olakšava postavljanje i održavanje naših aplikacija.

Uz to, Spinnaker omogućuje istodobno pokretanje na više davatelja usluga u oblaku. Štoviše, lako se možemo prebaciti na druge davatelje usluga u oblaku, ovisno o njihovoj strategiji cijena i dostupnim značajkama.

8. Zaključak

Spinnaker se nadovezuje na iskustvo Netflixa. Njihovo znanje možemo koristiti i raditi na isti način uz minimalan napor. Na temelju ovih alata možemo lako implementirati cjevovod za implementaciju za implementaciju naših aplikacija u proizvodnju.

Da biste saznali više o Spinnakeru, preuzmite besplatnu kontinuiranu isporuku sa Spinnaker e-knjigom.


$config[zx-auto] not found$config[zx-overlay] not found