Vse novice

Infrastruktura

Celica, naša enota infrastrukture: z enim ukazom zgrajena v 1,7 minute

· 2 min branja

Diagram: celica, samostojna enota, vsebuje vstopno točko s TLS, produkte, varnostne kopije, nadzor in požarni zid. Med delovanjem celice ne delijo ničesar.

Tovarna, ki dodaja vedno nove produkte, potrebuje enoto infrastrukture, ki ob rasti ohrani svojo obliko. Pri nas je to celica.

Kaj je celica

Po zasnovi je celica samostojna enota, danes en strežnik, z vsem, kar produkt potrebuje, da streže uporabnikom: z vstopno točko, ki hrani certifikate TLS in imena produktov v celici, z nočnimi varnostnimi kopijami in z nadzorom, vse za lastnim požarnim zidom. Vsako okolje produkta je nameščeno v natanko eni celici, njegovo ime pa kaže nanjo.

Med delovanjem celice ne delijo ničesar: ne omrežja, ne vstopne točke, ne baze. Zunaj njih ostanejo deli, ki ne strežejo zahtevam, na primer CI in registri slik.

Diagram zasnove celice: dve celici, vsaka za lastnim požarnim zidom, z vstopno točko, produkti, varnostnimi kopijami in nadzorom. Produkt se iz celice A v celico B premakne v treh korakih. Deli, ki ne strežejo zahtevam, na primer CI in registri slik, ostanejo zunaj.

Celica je 22. oktobra nadomestila naš prejšnji načrt z eno osrednjo vstopno točko za vsa imena vseh produktov. Če bi produkti tekli na več strežnikih, bi vsi odpovedali skupaj s strežnikom, na katerem je ta vstopna točka, za dostop do ostalih pa bi potrebovali zasebno omrežje in odkrivanje storitev, ki bi ju vzdrževali ročno. S celicami okvara ostane v svoji celici, tovarna pa raste z novimi celicami, ne z večjim strežnikom.

Po zasnovi se produkt premakne v treh korakih: ista slika na novi celici, njegovi podatki in njegovo ime, preusmerjeno na novo celico. Produkt s seboj prinese slike, zgrajene v CI, konfiguracijo iz okolja in preverjanje zdravja, na katero počaka namestitev. Enako zahteva tudi orkestrator, kot je Kubernetes, zato ta možnost ostaja odprta.

Prva celica, zgrajena s skriptom

Enota infrastrukture je vredna toliko, kolikor stane naslednja. bin/cell.sh build iz svežega strežnika z Ubuntujem naredi celico, za vsak del pa uporabi skript iz repozitorija, ki mu pripada: nastavitve strežnika, požarni zid, vstopno točko, nadzor in varnostne kopije.

Ukaz smo 23. oktobra pognali na začasnem strežniku v drugem podatkovnem centru: strežnik je bil pripravljen v pol minute, celica v 1,7 minute. Nato smo nanj namestili nespremenjeno produkcijsko izdajo produkta v uporabi in njegovi bazi obnovili iz izvozov prejšnje noči. Celoten tek je trajal 3,8 minute in vseh 13 preverjanj je uspelo, od primerjave števila vrstic z izvozi do spletne strani in API-ja produkta, ki sta odgovorila prek nove vstopne točke. Imena produkta namenoma nismo preusmerili na kopijo, zato ni prejela nobene zahteve strank; strežnik smo nato izbrisali.

Naslednja celica se začne z istim ukazom, čas prve pa je zapisan.