Checklist za pripremu za produkciju

Prijevod članka pripremljen je posebno za studente tečaja „DevOps prakse i alati“, koji počinje već danas!

Checklist za pripremu za produkciju

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 objavila 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

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster