Infrastruktura
Celica, naša enota infrastrukture: z enim ukazom zgrajena v 1,7 minute
· 2 min branja
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.

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.