Mnogi mali razvojni i IT timovi i dalje isporučuju softver na stari način: neko kopira fajlove na server, pokreće nekoliko komandi napamet i nada se da ništa neće puknuti. To radi dok ta osoba nije odsutna, dok izmena ne ode u 17 časova u petak ili dok dvoje ljudi ne prepiše tuđi rad.
DevOps je skup navika i alata koji isporuku čine ponovljivom i bezbednom. Za početak ne treba veliki tim ni veliki budžet. Ovaj tekst pokazuje koji su delovi i realan plan da prvi automatizovani pipeline izgradite za otprilike nedelju dana.
Šta znači CI/CD
- Kontinuirana integracija (CI): svaki put kad neko promeni kod, sistem ga automatski gradi i pokreće testove. Problemi se otkrivaju za nekoliko minuta, a ne pri izdavanju verzije.
- Kontinuirana isporuka / postavljanje (CD): testirana verzija može da se objavi na server automatski ili jednim klikom, svaki put na isti način.
Koristi su praktične: manje grešaka, brža izdanja, lakše vraćanje na prethodno stanje i manja zavisnost od jedne osobe koja „zna kako se postavlja“.
Gradivni blokovi
| Blok | Šta je | Tipični alati |
|---|---|---|
| Kontrola verzija | Sav kod i konfiguracija na jednom mestu, sa istorijom | Git sa GitHub-om, GitLab-om ili sličnim |
| CI/CD pipeline | Automatizovani koraci gradnje, testiranja i postavljanja | GitHub Actions, GitLab CI, Jenkins |
| Kontejneri | Aplikacije upakovane sa svim što im treba | Docker, kasnije Kubernetes ako zatreba |
| Infrastruktura kao kod | Serveri i mreže opisani u fajlovima, a ne klikovima | Terraform, Ansible |
| Nadzor | Znati kad izdanje izazove probleme | Prometheus, Grafana, provere dostupnosti |
Realan plan za nedelju dana
Dan 1: sve u kontrolu verzija
Prebacite kod u Git repozitorijum. Dodajte jednostavno pravilo grananja, na primer glavnu granu koja je uvek spremna za postavljanje i kratkotrajne grane za nove funkcije. Tajne ne držite u repozitorijumu.
Dan 2: automatizujte gradnju
Napravite pipeline koji pri svakom slanju koda instalira zavisnosti i gradi aplikaciju. Neka glasno javi grešku ako nešto pukne. Čak i ovaj korak sam hvata mnoge probleme.
Dan 3: dodajte automatske testove i provere
Pokrenite testove koje imate, uz osnovne provere kvaliteta kao što su stil koda i skeniranje ranjivosti zavisnosti. Ne treba vam savršena pokrivenost. Počnite sa testovima koji štite najkritičnije putanje i odatle rastite.
Dan 4: upakujte u kontejner
Napišite Dockerfile da aplikacija radi na isti način na laptopu, u testiranju i u produkciji. Gotovu sliku (image) pošaljite u registar sa oznakom verzije.
Dan 5: automatski postavljajte na test okruženje
Svaka uspešna gradnja na glavnoj grani postavlja se na staging okruženje koje odražava produkciju. Dodajte brz probni test koji proverava da aplikacija zaista odgovara.
Dan 6: postavljanje u produkciju uz zaštitnu mrežu
Izdajte u produkciju jednim klikom za odobrenje. Zadržite prethodnu verziju da možete da se vratite za nekoliko minuta. Birajte mala, česta izdanja umesto velikih i rizičnih.
Dan 7: nadzor i dokumentacija
Dodajte provere zdravlja i upozorenja i napišite uputstvo od jedne strane: kako se izdaje, kako se vraća i koga zvati. Pregledajte šta je dobro prošlo i šta sledeće da se automatizuje.
Počnite od bola. Ako je postavljanje ono što plaši, prvo automatizujte postavljanje. Ako greške stižu u produkciju, počnite od testova. Pipeline treba da rešava stvaran problem koji imate danas.
Infrastruktura kao kod ukratko
Umesto da klikćete po konzoli da napravite servere, opisujete ih u fajlovima koji žive u Git-u. Alati poput Terraform-a prave infrastrukturu, a Ansible je podešava. Rezultat: okruženja koja možete ponovo napraviti za nekoliko minuta, izmene koje se pregledaju kao kod i nema misterioznih servera koje niko ne sme da dirne.
Česte greške
- Pokušaj da se sve uradi odjednom. Automatizujte jednu fazu po jednu.
- Tajne u kodu. Koristite skladište tajni ili zaštićene promenljive pipeline-a.
- Bez plana vraćanja. Brzo izdanje je bezbedno samo ako postoji brzo poništavanje.
- Različita okruženja. Ako se staging razlikuje od produkcije, testovi malo dokazuju.
- Razmišljanje od alata. Navika malih, testiranih, ponovljivih izmena važnija je od imena alata.
- Zanemarivanje bezbednosti. Skeniranje zavisnosti i slika dodajte u pipeline od početka.
Kako vam možemo pomoći
Alficom projektuje CI/CD pipeline-ove i upravljanje konfiguracijom tako da je svaki server, kontejner i aplikacija konfigurisan na potpuno isti način, svaki put. Pokrivamo infrastrukturu kao kod (Terraform i Ansible), kontejnerizaciju sa Docker-om i Kubernetes-om, skriptovanje u Python-u, Bash-u i PowerShell-u, kao i automatizovana skeniranja bezbednosti i usklađenosti. Možemo sa vama da izgradimo prvi pipeline i obučimo vaš tim da njime upravlja.