Checklist voor productie gereedheid

De vertaling van het artikel is speciaal voorbereid voor studenten van de cursus «DevOps-praktijken en -tools», die vandaag al van start gaat!

Checklist voor productie gereedheid

Heb je ooit een nieuwe service in productie gebracht? Of misschien was je betrokken bij het onderhoud van zulke services? Zo ja, wat waren je richtlijnen? Wat is goed voor productie en wat is slecht? Hoe leer je nieuwe teamleden over releases of het onderhoud van bestaande services?

De meeste bedrijven komen uiteindelijk met hun praktijken voor productie-exploitatie terecht bij “Wild West”-benaderingen. Elk team bepaalt op basis van trial-and-error zelf welke tools en beste praktijken zij gebruiken. Maar dit heeft vaak invloed niet alleen op het succes van projecten, maar ook op de engineers.

De trial-and-error-methode creëert een omgeving waarin de schuldige wordt gezocht en de verantwoordelijkheid wordt verschoven. Bij dit gedrag wordt het steeds moeilijker om van fouten te leren en deze niet opnieuw te maken.

Sucessvolle organisaties:

  • realisteren de noodzaak van richtlijnen voor productie,
  • studeren de beste praktijken,
  • starten discussies over de gereedheid voor productie tijdens de ontwikkeling van nieuwe systemen of componenten,
  • zorgen voor de naleving van de regels voor gereedheid voor productie.

Voorbereiding voor productie omvat het proces van “review”. Review kan plaatsvinden in de vorm van een checklist of een set vragen. Review kan handmatig, automatisch of beide manieren worden uitgevoerd. In plaats van statische eisenlijsten kunnen sjablonen voor checklists worden gemaakt die aangepast kunnen worden aan specifieke behoeften. Zo kunnen engineers de mogelijkheid krijgen om kennis over te dragen en voldoende flexibiliteit wanneer dat nodig is.

Wanneer moet je de service op gereedheid voor productie controleren?

Het is nuttig om de gereedheid voor productie niet alleen direct voor de release te controleren, maar ook wanneer je deze overdraagt aan een ander team voor exploitatie of aan een nieuwe medewerker.

Voer de controle uit wanneer:

  • Je een nieuwe service in productie brengt.
  • Je de exploitatie van een productie-service overdraagt aan een ander team, zoals SRE.
  • Je de exploitatie van een productie-service overdraagt aan nieuwe medewerkers.
  • Je technische ondersteuning organiseert.

Checklist voor controle van gereedheid voor productie

Enige tijd geleden, als voorbeeld, deed ik heeft gepubliceerd een checklist voor controle van gereedheid voor productie. Hoewel deze lijst is ontstaan tijdens het werken met klanten van Google Cloud, zal hij ook nuttig zijn buiten Google Cloud.

Ontwerp en ontwikkeling

  • Ontwikkel een reproduceerbaar bouwproces dat geen toegang tot externe diensten vereist en niet afhankelijk is van de storing van externe systemen.
  • Bepaal en stel SLO's voor uw diensten vast tijdens de ontwerpfase en ontwikkeling.
  • Documenteer de verwachtingen over de beschikbaarheid van externe diensten waarop u afhankelijk bent.
  • Vermijd een enkele foutpunt door afhankelijkheid van één wereldwijde bron te elimineren. Repliceer de bron of gebruik een alternatieve optie wanneer de bron niet beschikbaar is (bijvoorbeeld een hardcoded waarde).

Configuratiebeheer

  • Statische, kleine en niet-geheime configuratie kan worden doorgegeven via commandoregelparameters. Voor alles wat anders is, gebruik configuratieopslagdiensten.
  • Dynamische configuratie moet een back-upinstelling hebben voor het geval de configuratiedienst niet beschikbaar is.
  • De ontwikkelomgeving mag niet gekoppeld zijn aan de productieconfiguratie. Anders kan dit leiden tot toegang vanuit de ontwikkelomgeving tot productie-diensten, wat Privacyproblemen en datalekken kan veroorzaken.
  • Documenteer wat dynamisch kan worden ingesteld en beschrijf het back-upgedrag als het systeem voor configuratiedistributie niet beschikbaar is.

Releasebeheer

  • Documenteer het releaseproces in detail. Beschrijf hoe releases invloed hebben op de SLO (bijvoorbeeld tijdelijke toename van latenties door cache misses).
  • Documenteer canary-releases.
  • Ontwikkel een plan voor het analyseren van canary-releases en, waar mogelijk, mechanismen voor automatische rollback.
  • Zorg ervoor dat rollbacks dezelfde processen kunnen gebruiken als de uitrol.

Geschiktheid voor monitoring (Observability)

  • Zorg ervoor dat er een set metingen wordt verzameld die nodig zijn voor de SLO.
  • Zorg ervoor dat onderscheid kan worden gemaakt tussen klant- en servergegevens. Dit is belangrijk voor het opsporen van de oorzaak van storingen.
  • Stel waarschuwingen in om de werklast te verminderen. Verwijder bijvoorbeeld waarschuwingen die door routinematige activiteiten worden veroorzaakt.
  • Als u Stackdriver gebruikt, activeer dan de GCP-platformstatistieken in uw dashboards. Stel waarschuwingen in voor GCP-afhankelijkheden.
  • Verspreid altijd de inkomende trace. Zelfs als u niet deelneemt aan de tracing, stelt dit niedrigere diensten in staat om problemen in productie op te lossen.

Bescherming en veiligheid

  • Zorg ervoor dat alle externe verbindingen zijn versleuteld.
  • Zorg ervoor dat uw productiesystemen correct zijn ingesteld met IAM.
  • Gebruik netwerken om groepen van virtuele machine-instanties te isoleren.
  • Gebruik een VPN voor een veilige verbinding met externe netwerken.
  • Documenteer en monitor de toegang van gebruikers tot gegevens. Zorg ervoor dat alle toegang van gebruikers tot gegevens wordt gecontroleerd en gelogd.
  • Zorg ervoor dat endpoints voor debugging beperkt zijn met ACL.
  • Sanitize gebruikersinvoer. Stel limieten in voor de grootte van de payload voor gebruikersinvoer.
  • Zorg ervoor dat uw service selectief inkomend verkeer voor individuele gebruikers kan blokkeren. Dit stelt u in staat om overtredingen te blokkeren zonder andere gebruikers te beïnvloeden.
  • Vermijd externe endpoints die een groot aantal interne bewerkingen initiëren.

Capaciteitsplanning

  • Documenteer hoe uw service schaalt. Bijvoorbeeld: aantal gebruikers, grootte van de inkomende payload, aantal inkomende berichten.
  • Documenteer de vereisten voor de middelen van uw service. Bijvoorbeeld: aantal toegewezen virtuele machine-instanties, aantal Spanner-instanties, speciale hardware zoals GPU of TPU.
  • Documenteer de beperkingen van middelen: type middel, regio, enz.
  • Documenteer de quota-limieten voor het aanmaken van nieuwe middelen. Bijvoorbeeld, het limiet van aantal aanvragen voor de GCE API, als u de API gebruikt om nieuwe instanties te maken.
  • Overweeg het uitvoeren van belastingtests om prestatieverminderingen te analyseren.

Dat is alles. Tot ziens in de lessen!

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster