Översättningen av artikeln är särskilt utarbetad för studenter i kursen , som startar idag!

Har du någon gång lanserat en ny tjänst i produktion? Eller kanske varit involverad i driften av sådana tjänster? Om ja, vad vägledde dig? Vad är bra för produktion och vad är dåligt? Hur utbildar du nya teammedlemmar för releaser eller drift av befintliga tjänster?
De flesta företag som arbetar med industriell drift tenderar till slut att anta "vilda västern"-metoder. Varje team avgör på egen hand, genom trial and error, vilka verktyg och bästa metoder som ska användas. Men detta påverkar ofta inte bara projekts framgång utan även ingenjörerna.
Trial and error-metoden skapar en miljö där skuldbeläggning och ansvarsförskjutning är vanliga. Vid sådana beteenden blir det allt svårare att lära sig av sina misstag och att inte upprepa dem.
Framgångsrika organisationer:
- erkänner behovet av riktlinjer för produktion,
- studera bästa praxis,
- inleder diskussioner om beredskap för produktion tidigt i utvecklingen av nya system eller komponenter,
- säkerställer att reglerna för beredskap inför produktion följs.
Förberedelse för produktion inkluderar en 'review'-process. En review kan antingen vara i form av en checklista eller en uppsättning frågor. Review kan göras manuellt, automatiskt eller med en kombination av båda. Istället för statiska kravlistor kan checklistor göras om till mallar som kan anpassas efter specifika behov. På så sätt kan ingenjörerna få ett sätt att överföra kunskap och tillräcklig flexibilitet när det behövs.
När ska tjänsten kontrolleras för beredskap för produktion?
Det är bra att genomföra en beredskapskontroll för produktion inte bara direkt före releasen, utan också vid överlämning till ett annat driftteam eller en ny medarbetare.
Genomför kontrollen när:
- Du släpper en ny tjänst i produktion.
- Du överlämnar driften av en produktionstjänst till ett annat team, såsom SRE.
- Du överlämnar driften av en produktionstjänst till nya medarbetare.
- Du organiserar teknisk support.
Checklista för beredskapskontroll för produktion
För en tid sedan, som exempel, skapade jag checklistan för beredskapskontroll för produktion. Trots att denna lista kom till vid arbete med Google Cloud-kunder kommer den att vara användbar och tillämplig även utanför Google Cloud.
Design och utveckling
- Utveckla en reproducerbar byggprocess som inte kräver tillgång till externa tjänster och inte är beroende av externa systemfel.
- Under projekt- och utvecklingsfasen, definiera och sätt upp SLO för dina tjänster.
- Dokumentera förväntningarna på tillgängligheten av de externa tjänster som du är beroende av.
- Undvik en enda felpunkt genom att ta bort beroenden av en global resurce. Replikera resursen eller använd en reservlösning när resursen är otillgänglig (t.ex. hårdkodad värde).
Konfigurationshantering
- Statisk, liten och icke-hemlig konfiguration kan överföras via kommandoradsparametrar. För allt annat, använd konfigurationslagringstjänster.
- Dynamisk konfiguration bör ha reservinställningar ifall konfigurationsservicen blir otillgänglig.
- Utvecklingsmiljökonfigurationen bör inte vara kopplad till produktionskonfigurationen. Annars kan det leda till att utvecklingsmiljön får tillgång till produktions- tjänster, vilket kan orsaka problem med sekretess och dataläckor.
- Dokumentera vad som kan konfigureras dynamiskt och beskriv reservbeteendet om konfigurationsleveranssystemet blir otillgängligt.
Releasehantering
- Dokumentera releaseprocessen i detalj. Beskriv hur releaser påverkar SLO (t.ex. tillfälliga ökningar av latens på grund av cache-missar).
- Dokumentera kanariefåglar.
- Utveckla en plan för analys av kanariefåglar och, när det är möjligt, mekanismer för automatisk återställning.
- Se till att återställningar kan använda samma processer som distribution.
Övervakning (Observability)
- Se till att en uppsättning metrik som krävs för SLO samlas in.
- Se till att du kan särskilja mellan klient- och serverdata. Detta är viktigt för att hitta orsaken till fel.
- Konfigurera aviseringar för att minska arbetsbelastningen. Till exempel, ta bort aviseringar som orsakas av rutinåtgärder.
- Om du använder Stackdriver, se till att GCP-plattformsmetrik inkluderas i dina instrumentpaneler. Ställ in aviseringar för GCP-beroenden.
- Sprid alltid inkommande spårning. Även om du inte deltar i spårningen, kan det hjälpa lägre nivåtjänster att felsöka produktionsproblem.
Skydd och säkerhet
- Se till att alla externa anslutningar är krypterade.
- Se säkerställ att dina produktionsprojekt har rätt IAM-inställningar.
- Använd nätverk för att isolera grupper av virtuella maskiner.
- Använd VPN för säker anslutning till externa nätverk.
- Dokumentera och övervaka användartillgång till data. Säkerställ att all användartillgång till data granskas och loggas.
- Se till att slutpunkterna för felsökning är begränsade av ACL.
- Sanera användarinmatningar. Ställ in begränsningar för storleken på nyttolasten för användarinmatningar.
- Säkerställ att din tjänst kan selektivt blockera inkommande trafik för specifika användare. Detta gör att man kan blockera överträdelser utan att påverka andra användare.
- Undvik externa slutpunkter som initierar ett stort antal interna operationer.
Kapacitetsplanering
- Dokumentera hur din tjänst skalas. Till exempel: antal användare, storlek på inkommande nyttolast, antal inkommande meddelanden.
- Dokumentera resurskraven för din tjänst. Till exempel: antal dedikerade virtuella maskiner, antal Spanner-instans, specialutrustning som GPU eller TPU.
- Dokumentera resursbegränsningar: typ av resurs, region, etc.
- Dokumentera kvotbegränsningar för att skapa nya resurser. Till exempel, begränsningen för antal GCE API-förfrågningar om du använder API:t för att skapa nya instanser.
- Överväg att genomföra belastningstester för att analysera prestandaförsämringen.
Det var allt. Vi ses på lektionerna!
Källa: habr.com
