Korisnička priča

How we built an automation platform for 600+ managed servers

And why we replaced n8n with Laravel along the way

Portrait of Toon Van Dooren

Toon Van DoorenCTO · Savvii Hosting

600+
Servers managed
3–4k
Final scale across all verticals
7
Infrastructure stacks unified post-merger
6
Tools evaluated before committing

Kada smo počeli da gradimo našu internu platformu za automatizaciju, mislili smo da imamo savršen tehnološki stek. Imali smo n8n za orkestraciju tokova posla, Semaphore UI za pokretanje Ansible playbook-ova i jasnu viziju kako da u potpunosti automatizujemo hosting operacije. Nekoliko meseci kasnije, gledao sam u ono što se može opisati samo kao paukova mreža — i shvatio da moramo početi iz početka.

1

Problem koji smo pokušavali da rešimo

Ja sam tehnički direktor (CTO) u Savvii-ju, kompaniji za upravljani hosting sa sedištem u Holandiji. Specijalizovani smo za veb sajtove zasnovane na PHP-u — e-trgovinu, WordPress i slična radna opterećenja — i opslužujemo tri segmenta klijenata: manje klijente, preprodavce (resellere) i agencije. Svaki ima različite potrebe, različit obim i drugačija očekivanja.

Segment agencija je bio onaj gde smo osećali najveći pritisak. Agencije su zahtevni klijenti, ali njihovi interni timovi su često mešavina tehničkih i netehničkih ljudi. Njima je potreban grafički interfejs. Oni ne mogu raditi u komandnoj liniji. I što smo više agencija uvodili u sistem, to je bivalo očiglednije: bio nam je potreban pravi kontrolni panel podržan pouzdanom automatizacijom.

Ansible Tower i slični alati su nam bili na radaru, ali su bili ili previše složeni za postavljanje, imali nedoslednu dokumentaciju, ili su nosili brige oko performansi i suvereniteta podataka. Želeli smo rešenje koje možemo samostalno hostovati, ažurirati bez drame i prepustiti našem timu za podršku bez potrebe za nedeljama obuke.

2

Procena opcija

Sveli smo izbor pre donošenja konačne odluke. Dva ključna faktora su brzo suzila izbor:

Suverenitet podataka. Nijedan alat koji čuva stanje ili akreditive u cloud-u treće strane nije dolazio u obzir. Samostalno hostovanje (self-hosting) nije imalo alternativu.

Korisničko iskustvo za netehničke korisnike. Naš tim prve linije podrške su odlični komunikatori, a ne sistem administratori. Šta god da izaberemo moralo je biti lako za korišćenje bez eskalacije svakog incidenta ka DevOps timu. Alati koje smo procenjivali obuhvatali su:

Kriterijum Semaphore UI n8n AWX / Tower Rundeck
Samostalno hostovan Da — jedan binarni fajl / jednostavno pokretanje Da — self-hosted izdanje Da (AWX) / mešovito (AAP cloud opcije) Da
UX za prvu liniju podrške Izuzetna jasnoća zadataka i inventara Dobar za autore; loš za operativnu primopredaju Prekomplikovani RBAC koncepti; strmo za podršku Usmeren na poslove; komplikovana Ansible ergonomija
Ansible inventar i izvršavanje Izgrađen oko projekata i šablona Nije kontrolna ravan za Ansible Izvorni, ali složen put nadogradnje Moguće; nije prvenstveno namenjen za Ansible
API za prilagođeni middleware Konzistentan API za zadatke i projekte Opsežan; potpuno drugačiji operativni model API površina Tower-a varira po verzijama Zreo API za poslove; drugačiji primitivi
Teret nadogradnje i održavanja Bezbolne nadogradnje u praksi Zavisi od kompleksnosti radnih tokova Često težak (K8s / mnogobrojne zavisnosti) Umeren; JVM potrošnja

Semaphore UI je pobedio po oba kriterijuma. Instalacija je bila jednostavna. Nadogradnje su bile bezbolne. Interfejs je bio dovoljno čist da osoba bez inženjerskog znanja može tačno da razume šta se dešava. Povezivanje našeg postojećeg Ansible inventara bilo je praktično bez ikakvog trenja — jedina tačka gde nam je bila potrebna pomoć bila je konfiguracija inventara, što je brzo rešeno uz podršku. Dokumentacija Semaphore-a je bila temeljita i ulila nam je puno poverenje.

3

Prva arhitektura: n8n kao middleware

Početna arhitektura koristila je n8n kao orkestracioni sloj između HostBill-a (naplata), Semaphore UI-a i CMDB-a. Na papiru je izgledalo sjajno — vizuelno, low-code, bez potrebe za programerom za održavanje.

1
Klijent kupuje server u HostBill-u
2
HostBill šalje webhook ka n8n-u
3
n8n pokreće Semaphore zadatak koji izvršava Ansible playbook za kreiranje servera
4
Playbook se izvršava na infrastrukturi
5
Semaphore šalje povratni poziv (callback) kada se zadatak završi
6
n8n prima povratni poziv i prikuplja rezultujuće podatke
7
n8n upisuje informacije o serveru u naš CMDB
8
Klijent prima akreditive servera i detalje za povezivanje
4

Šta je pošlo po zlu sa n8n-om

Vizuelni interfejs n8n-a je odličan za jednostavne linearne tokove. Ali čim su se pojavili uslovi, obrada grešaka, višestepeni povratni pozivi i upravljanje stanjem — preglednost je nestala. Ono što je počelo kao čist dijagram pretvorilo se u nepreglednu elektronsku šemu.

Nema bezbednog čuvanja stanja

Nije postojao bezbedan način za čuvanje međustanja između koraka u verziji koju smo koristili.

Bezbednosne nedoumice

Nedostatak pouzdanog maskiranja lozinki u logovima — ozbiljan rizik kada Ansible povratni pozivi uključuju generisane akreditive.

Krhki povratni pozivi

Rukovanje povratnim pozivima između n8n-a, Semaphore-a i CMDB-a zahtevalo je previše među-koraka što je činilo tokove nestabilnim.

5

Nova arhitektura: Laravel kao middleware

Zamenili smo n8n namenskom Laravel aplikacijom. To je pravi middleware — ne "no-code" alat, već sistem koji naš tim u potpunosti poseduje, kontroliše i razume.

Tok kreiranja servera
1
Klijent naručuje server u HostBill-u (panel za naplatu)
2
HostBill šalje webhook ka Laravel middleware-u
3
Laravel prikuplja podatke zahteva i rezerviše slot u našem CMDB-u
4
Laravel poziva Semaphore radi pokretanja playbook-a za kreiranje
5
Semaphore izvršava playbook i vraća ID zadatka
6
Laravel povezuje ID zadatka sa zapisom u CMDB-u
7
Kada Semaphore javi završetak, Laravel ažurira CMDB sa IP adresom servera
8
Klijent dobija obaveštenje sa svim detaljima svog novog servera

Bezbednosni model

Svaki server poseduje authorized_keys fajl koji tačno ograničava šta Semaphore SSH ključ zapravo sme da uradi. Korišćenjem command direktive u authorized_keys, definišemo precizno koje komande Semaphore sme da pokrene. Nakon početne postavke, Semaphore takođe gubi root pristup — može se povezati samo na korisničke naloge.

Ovo drastično smanjuje radijus potencijalne štete u slučaju bilo kakvog bezbednosnog incidenta.

6

Gde se nalazimo danas

Segment agencija, sa kojim smo počeli, pokreće oko 600 servera kroz ovu arhitekturu. Ukupan obim kroz sva tri segmenta će na kraju iznositi između 3.000 i 4.000 servera, i postepeno uvodimo celu platformu.

Semaphore-ov planer (scheduler) je sledeći na redu za automatska ažuriranja servera — što se trenutno rešava eksternim alatima, ali prelazi na Ansible pod kontrolom planera.

Nezavisnost podrške

Podrška može samostalno koristiti Semaphore bez uplitanja DevOps tima u svaki incident.

Obaveštenja u realnom vremenu

Slack integracija daje inženjerima trenutna upozorenja kada playbook ne uspe.

Pregledni šabloni

Mali broj šablona zahvaljujući prosleđivanju promenljivih putem API-ja — izbegnuto gomilanje.

Tačan CMDB

CMDB ostaje tačan automatski — nema više manuelnog održavanja.

7

Šta bismo uradili drugačije

Najvažnija stvar koju bismo uradili drugačije: posvetili bismo više vremena dizajnu arhitekture pre pisanja ijedne linije automatizacije. Morali smo da krenemo ispočetka više nego jednom jer nismo dovoljno pažljivo razmislili o tome koji tokovi mogu bezbedno da skaliraju i graciozno podnesu greške.

Arhitektura na prvom mestu

Posvetite više vremena dizajnu arhitekture pre pisanja prve linije automatizacije. Pažljivo razmislite o tokovima koji će skalirati i pouzdano rukovati greškama.

Procenjujte po korisničkom iskustvu, ne samo po mogućnostima

Ako vaš tim za podršku ne može samostalno da upotrebi alat u 2 sata ujutru bez pozivanja senior inženjera, to je pogrešan alat.

Suverenitet podataka je ključan

Znajte tačno gde se nalaze vaši akreditivi i stanje pre nego što uđete u produkciju.

Dobra dokumentacija je jasan signal kvaliteta

Ako je dokumentacija alata neorganizovana i zapuštena, najverovatnije je takav i sam softver.

Ready to automate your infrastructure?

Start with OSS, upgrade to Pro when your team grows. Enterprise support and SLA are available — including for hosting providers running thousands of servers.