La traduction de l'article a été préparée spécialement pour les étudiants du cours , qui commence déjà aujourd'hui !

Avez-vous déjà lancé un nouveau service en production ? Ou peut-être avez-vous assuré le suivi de ces services ? Si oui, qu'est-ce qui a guidé vos décisions ? Qu'est-ce qui est bon pour la production et qu'est-ce qui est mauvais ? Comment formez-vous les nouvelles recrues de l'équipe aux déploiements ou au suivi des services existants ?
La plupart des entreprises, en matière de pratiques d'exploitation industrielle, en viennent finalement à des approches « Far West ». Chaque équipe détermine de manière autonome, par essais et erreurs, les outils et les meilleures pratiques. Mais cela influe souvent non seulement sur le succès des projets, mais aussi sur les ingénieurs.
La méthode des essais et erreurs crée un environnement où la recherche de responsables et le transfert de responsabilités sont courants. Avec ce comportement, il devient de plus en plus difficile d'apprendre de ses erreurs et de ne pas les répéter.
Les organisations réussies :
- reconnaissent la nécessité de guides pour la production,
- étudient les meilleures pratiques,
- entament la discussion sur la préparation à la production lors du développement de nouveaux systèmes ou composants,
- assurent le respect des règles de préparation à la production.
La préparation à la production comprend un processus de « revue ». La revue peut se faire sous forme de liste de contrôle ou d'un ensemble de questions. Elle peut être réalisée manuellement, automatiquement ou de manière mixte. Au lieu de listes de exigences statiques, des modèles de listes de contrôle peuvent être créés, adaptés aux besoins spécifiques. Ainsi, les ingénieurs peuvent bénéficier d'un moyen d'acquérir des connaissances et d'une flexibilité suffisante lorsque cela est nécessaire.
Quand vérifier si le service est prêt pour la production ?
Il est utile de vérifier la préparation à la production non seulement juste avant le déploiement, mais aussi lors de la transmission à une autre équipe de support ou à un nouvel employé.
Faites la vérification lorsque :
- Vous lancez un nouveau service en production.
- Vous transmettez la gestion d'un service de production à une autre équipe, comme les SRE.
- Vous transmettez la gestion d'un service de production à de nouveaux employés.
- Vous organisez le support technique.
Liste de contrôle pour la vérification de la préparation à la production
Il y a quelque temps, en guise d'exemple, j'ai créé une liste de contrôle pour la vérification de la préparation à la production. Bien que cette liste soit née d'un travail avec des clients de Google Cloud, elle sera utile et applicable au-delà de Google Cloud.
Conception et développement
- Développez un processus de construction reproductible, sans accès à des services externes et indépendamment des pannes des systèmes externes.
- Au cours de la phase de conception et de développement, définissez et établissez des SLO pour vos services.
- Documentez les attentes concernant la disponibilité des services externes dont vous dépendez.
- Évitez les points de défaillance uniques en éliminant la dépendance à une seule ressource globale. Répliquez la ressource ou utilisez une alternative de secours lorsque la ressource est indisponible (par exemple, une valeur codée en dur).
Gestion de la configuration
- Une configuration statique, petite et non secrète peut être transmise via des paramètres de ligne de commande. Pour tout le reste, utilisez des services de stockage de configuration.
- La configuration dynamique doit avoir des paramètres de secours en cas d'indisponibilité du service de configuration.
- La configuration de l'environnement de développement ne doit pas être liée à la configuration de la production. Sinon, cela pourrait entraîner un accès de l'environnement de développement aux services de production, ce qui pourrait poser des problèmes de confidentialité et de fuite de données.
- Documentez ce qui peut être configuré dynamiquement et décrivez le comportement de secours si le système de livraison de configuration est indisponible.
Gestion des versions
- Documentez en détail le processus de publication. Décrivez comment les publications affectent les SLO (par exemple, une augmentation temporaire des latences à cause des erreurs de cache).
- Documentez les publications canari.
- Développez un plan d'analyse des publications canari et, si possible, des mécanismes de retour arrière automatiques.
- Assurez-vous que les retours arrière peuvent utiliser les mêmes processus que les déploiements.
Observabilité
- Assurez-vous qu'un ensemble de métriques nécessaires aux SLO est collecté.
- Assurez-vous de pouvoir faire la distinction entre les données client et serveur. Cela est essentiel pour identifier les causes des pannes.
- Configurez des alertes pour réduire les coûts en main-d'œuvre. Par exemple, supprimez les alertes causées par des opérations routinières.
- Si vous utilisez Stackdriver, activez les métriques de la plateforme GCP dans vos tableaux de bord. Configurez des alertes pour les dépendances GCP.
- Diffusez toujours les traces entrantes. Même si vous ne participez pas à la traçabilité, cela permettra aux services de niveau inférieur de déboguer des problèmes en production.
Protection et sécurité
- Assurez-vous que toutes les connexions externes sont chiffrées.
- Assurez-vous que vos projets de production ont la bonne configuration IAM.
- Utilisez des réseaux pour isoler les groupes d'instances de machines virtuelles.
- Utilisez un VPN pour établir une connexion sécurisée avec des réseaux distants.
- Documentez et surveillez l'accès des utilisateurs aux données. Assurez-vous que tout accès des utilisateurs aux données est vérifié et enregistré.
- Assurez-vous que les points d'extrémité pour le débogage sont limités par des ACL.
- Assainissez les entrées des utilisateurs. Configurez des limites de taille de charge utile pour les entrées des utilisateurs.
- Assurez-vous que votre service peut bloquer sélectivement le trafic entrant pour des utilisateurs spécifiques. Cela permettra de bloquer des violations sans affecter les autres utilisateurs.
- Évitez les points d'extrémité externes qui initient un grand nombre d'opérations internes.
Planification de la capacité
- Documentez comment votre service se dimensionne. Par exemple : nombre d'utilisateurs, taille de la charge utile entrante, nombre de messages entrants.
- Documentez les exigences en matière de ressources pour votre service. Par exemple : nombre d'instances de machines virtuelles allouées, nombre d'instances Spanner, matériel spécialisé comme GPU ou TPU.
- Documentez les limitations des ressources : type de ressource, région, etc.
- Documentez les limites de quota pour la création de nouvelles ressources. Par exemple, limite du nombre de requêtes de l'API GCE si vous utilisez l'API pour créer de nouvelles instances.
- Envisagez de réaliser des tests de charge pour analyser la diminution des performances.
C'est tout. À bientôt en cours !
Source : habr.com
