Prijevod članka pripremljen je posebno za studente tečaja , koji počinje već danas!

Da li ste ikada pustili novu uslugu u produkciju? Ili ste možda radili na održavanju takvih usluga? Ako jeste, čime ste se rukovodili? Šta je dobro za produkciju, a šta nije? Kako obučavate nove članove tima za izdanja ili za održavanje postojećih usluga.
Većina kompanija u pogledu praksi industrijske eksploatacije na kraju dolazi do pristupa „Divljeg zapada“. Svaki tim se uz pomoć pokušaja i grešaka samostalno rešava alata i najboljih praksi. No, to često utiče ne samo na uspeh projekata, već i na inženjere.
Metoda pokušaja i grešaka stvara okruženje u kojem je uobičajen pronalazak krivaca i prebacivanje odgovornosti. U takvom ponašanju postaje sve teže učiti iz grešaka i ne ponavljati ih.
Uspešne organizacije:
- shvataju potrebu za smernicama za produkciju,
- istraguju najbolje prakse,
- započinju raspravu o spremnosti za produkciju tokom razvoja novih sistema ili komponenti,
- obezbeđuju poštovanje pravila pripreme za produkciju.
Priprema za produkciju uključuje proces „pregleda“. Pregled može biti u obliku checklist-a ili skupa pitanja. Pregled se može raditi ručno, automatski ili na oba načina. Umesto statičnih lista zahteva, mogu se napraviti šabloni checklist-a koji se prilagođavaju specifičnim potrebama. Na taj način inženjerima se može dati način da nasleđuju znanje i dovoljno fleksibilnosti kada je to potrebno.
Kada proveriti uslugu na spremnost za produkciju?
Proveru spremnosti za produkciju korisno je sprovoditi ne samo neposredno pre izdanja, već i prilikom predaje drugom timu za eksploataciju ili novom zaposleniku.
Proverite kada:
- Pustite novu uslugu u produkciju.
- Predajete eksploataciju produkcijske usluge drugom timu, kao što je SRE.
- Predajete eksploataciju produkcijske usluge novim zaposlenicima.
- Organizujete tehničku podršku.
Checklist za proveru spremnosti za produkciju
Pre nekog vremena, kao primer, ja Checklista za provjeru spremnosti za produkciju. Iako je ovaj popis nastao tijekom rada s klijentima Google Cloud-a, bit će koristan i primjenjiv i izvan Google Cloud-a.
Projektiranje i razvoj
- Razvijte ponovljiv proces izrade koji ne zahtijeva pristup vanjskim uslugama i ne ovisi o kvarovima vanjskih sustava.
- Tijekom projektiranja i razvoja odredite i postavite SLO za svoje usluge.
- Dokumentirajte očekivanja dostupnosti vanjskih usluga od kojih ovisite.
- Izbjegavajte jedinstvenu točku neuspjeha uklanjanjem ovisnosti o jednom globalnom resursu. Replikacija resursa ili korištenje rezervne opcije kada je resurs nedostupan (npr. tvrdo kodirane vrijednosti).
Upravljanje konfiguracijom
- Statičku, malu i neosjetljivu konfiguraciju možete prenijeti putem parametara naredbenog retka. Za sve ostalo koristite usluge pohrane konfiguracije.
- Dinamička konfiguracija treba imati rezervne postavke u slučaju nedostupnosti usluge konfiguracije.
- Konfiguracija razvojne okoline ne bi trebala biti povezana s konfiguracijom produkcije. Inače može doći do pristupa službama produkcije iz razvojne okoline, što može izazvati probleme s povjerljivošću i curenjem podataka.
- Dokumentirajte ono što se može konfigurirati dinamički i opišite rezervno ponašanje ako sustav za isporuku konfiguracije postane nedostupan.
Upravljanje izdanjima
- Detaljno dokumentirajte proces izdanja. Opišite kako izdanja utječu na SLO (na primjer, privremeno povećanje kašnjenja zbog promašaja predmemorije).
- Dokumentirajte kanarinske izdaje.
- Razvijte plan za analizu kanarinskih izdanja i, ako je moguće, mehanizme za automatsko vraćanje.
- Osigurajte da se vraćanja mogu koristiti istim procesima kao i implementacija.
Prikladnost za praćenje (Observability)
- Osigurajte da se prikuplja skup metrika potrebnih za SLO.
- Osigurajte da se može razlikovati između klijentskih i serverskih podataka. To je važno za pronalaženje uzroka kvarova.
- Postavite obavijesti kako biste smanjili troškove rada. Na primjer, uklonite obavijesti izazvane rutinskim operacijama.
- Ako koristite Stackdriver, omogućite GCP platforme metrike u svojim nadzornim pločama. Postavite obavijesti za GCP ovisnosti.
- Uvijek širite ulaznu tricu. Čak i ako ne sudjelujete u trici, to će omogućiti uslugama niže razine da dijagnosticiraju probleme u produkciji.
Zaštita i sigurnost
- Osigurajte da su sve vanjske veze šifrirane.
- Osigurajte da vaši produkcijski projekti imaju ispravnu IAM konfiguraciju.
- Koristite mreže za izolaciju grupa virtualnih instanci.
- Koristite VPN za sigurno povezivanje s udaljenim mrežama.
- Dokumentirajte i nadgledajte pristup korisnika podacima. Osigurajte da je sav pristup korisnika podacima provjeren i evidentiran.
- Osigurajte da su krajnje točke za otklanjanje pogrešaka ograničene ACL-om.
- Sanitizirajte korisnički unos. Postavite ograničenja veličine korisničkog unosa.
- Osigurajte da vaša usluga može selektivno blokirati ulazni promet za pojedinačne korisnike. To će omogućiti blokiranje kršenja bez utjecaja na druge korisnike.
- Izbjegavajte vanjske krajnje točke koje iniciraju veliki broj unutarnjih operacija.
Planiranje resursa
- Dokumentirajte kako se vaša usluga skalira. Na primjer: broj korisnika, veličina ulaznog korisnog tereta, broj dolaznih poruka.
- Dokumentirajte zahtjeve za resursima za vašu uslugu. Na primjer: broj dodijeljenih virtualnih instanci, broj instanci Spanner, specijalizirana oprema poput GPU-a ili TPU-a.
- Dokumentirajte ograničenja resursa: tip resursa, regija itd.
- Dokumentirajte ograničenja kvota za stvaranje novih resursa. Na primjer, ograničenje broja GCE API zahtjeva ako koristite API za stvaranje novih instanci.
- Razmotrite mogućnost provođenja testova opterećenja radi analize smanjenja performansi.
To je to. Vidimo se na nastavi!
Izvor: habr.com
