Professional Cloud DevOps Engineer

Description du poste

Un Professional Cloud DevOps Engineer est responsable du bon déroulement des opérations de développement qui peuvent avoir un impact sur la fiabilité du service et les délais de livraison. Il utilise Google Cloud Platform pour créer des pipelines de distribution de logiciels, déployer et piloter des services, ainsi que gérer les incidents et en tirer des enseignements.

Guide de l'examen de certification

1. Appliquer les principes d'ingénierie en fiabilité des sites à un service

    1.1 Équilibrer les modifications, la vélocité et la fiabilité du service :

    • Découvrir les SLI (disponibilité, latence, etc.)
    • Définir des SLO et comprendre les contrats de niveau de service
    • Accepter les conséquences si la marge d'erreur n'est pas respectée
    • Construire des boucles de rétroaction pour déterminer les futures conceptions
    • Automatiser les tâches laborieuses

    1.2 Gérer le cycle de vie du service :

    • Gérer un service (ex. : lancer, déployer, entretenir et supprimer un service)
    • Planifier la capacité (ex. : gestion des quotas et des limites)

    1.3 Assurer une communication et une collaboration de qualité pour les opérations :

    • Prévenir le surmenage (ex. : mettre en place des processus automatisés pour éviter ce type de situation)
    • Entretenir une culture de l'apprentissage
    • Entretenir une culture de l'irréprochabilité

2. Créer et mettre en œuvre des pipelines CI/CD pour un service

    2.1 Concevoir des pipelines CI/CD :

    • Artefacts immuables avec Container Registry
    • Dépôts d'artefacts avec Container Registry
    • Stratégies de déploiement avec Cloud Build, Spinnaker
    • Déploiement dans des environnements hybrides et multicloud avec Anthos, Spinnaker, Kubernetes
    • Stratégie de gestion des versions d'artefacts avec Cloud Build, Container Registry
    • Déclencheurs de pipelines CI/CD avec Cloud Source Repositories, l'application GitHub Cloud Build, Cloud Pub/Sub
    • Test d'une nouvelle version avec Spinnaker
    • Configuration de processus de déploiement (ex. : workflows d'approbation)

    2.2 Mettre en œuvre des pipelines CI/CD :

    • CI avec Cloud Build
    • CD avec Cloud Build
    • Outils Open Source (ex. : Jenkins, Spinnaker, GitLab, Concourse)
    • Audit et traçage de déploiements (ex. : requête de signature de certificat, Cloud Build, journaux d'audit Cloud)

    2.3 Gérer la configuration et les secrets :

    • Méthodes de stockage sécurisées
    • Rotation des secrets et modifications des configurations

    2.4 Gérer l'infrastructure en tant que code :

    • Terraform/Cloud Deployment Manager
    • Gestion des versions du code de l'infrastructure
    • Sécurisation des modifications de l'infrastructure
    • Architecture immuable

    2.5 Déployer des outils CI/CD :

    • Outils centralisés et outils multiples (uniques et mutualisés)
    • Sécurité des outils CI/CD

    2.6 Gérer différents environnements de développement (ex. : préproduction, production, etc.) :

    • Déterminer un nombre d'environnements et leur but
    • Créer des environnements de manière dynamique par branche de fonctionnalité avec GKE, Cloud Deployment Manager
    • Environnements de développement locaux avec Docker, Cloud Code, Skaffold

    2.7 Sécuriser le pipeline de déploiement :

    • Analyse de faille avec Container Registry
    • Autorisation binaire
    • Stratégies IAM par environnement

3. Mettre en œuvre des stratégies de surveillance du service

    3.1 Gérer les journaux d'application :

    • Collecter des journaux depuis Compute Engine, GKE avec Stackdriver Logging, Fluentd
    • Collecter des journaux tiers et structurés avec Stackdriver Logging, Fluentd
    • Envoyer des journaux d'application directement à l'API Stackdriver avec Stackdriver Logging

    3.2 Gérer les métriques d'application avec Stackdriver Monitoring :

    • Collecter des métriques depuis Compute Engine
    • Collecter des métriques GKE/Kubernetes
    • Utiliser l'explorateur de métriques pour une analyse ad hoc des métriques

    3.3 Gérer la plate-forme Stackdriver Monitoring :

    • Créer un tableau de bord de surveillance
    • Filtrer et partager des tableaux de bord
    • Configurer des alertes tierces dans Stackdriver Monitoring (ex. : PagerDuty, Slack, etc.)
    • Définir des règles d'alerte basées sur les SLI avec Stackdriver Monitoring
    • Automatiser la définition de règles d'alerte avec Cloud DM ou Terraform
    • Mettre en œuvre la surveillance des SLO et les alertes avec Stackdriver Monitoring
    • Comprendre les intégrations Stackdriver Monitoring (ex. : Grafana, BigQuery)
    • Utiliser des outils SIEM pour analyser les journaux d'audit et de flux (ex. : Splunk, Datadog)
    • Concevoir une stratégie d'espace de travail Stackdriver

    3.4 Gérer la plate-forme Stackdriver Logging :

    • Activer les journaux d'accès aux données (ex. : journaux d'audit Cloud)
    • Activer les journaux de flux VPC
    • Consulter les journaux à partir de la console GCP
    • Utiliser les filtres de journaux basiques et avancés
    • Mettre en œuvre des métriques basées sur les journaux
    • Comprendre l'exclusion de journaux et l'exportation de journaux
    • Sélectionner les options pour exporter des journaux
    • Mettre en œuvre une exportation au niveau du projet/de l'organisation
    • Afficher des journaux d'exportation dans Cloud Storage et BigQuery
    • Envoyer des journaux vers une plate-forme de journalisation externe

    3.5 Mettre en œuvre la journalisation et surveiller les contrôles d'accès :

    • Configurer une LCA pour restreindre l'accès aux journaux d'audit avec IAM, Stackdriver Logging
    • Configurer une LCA pour restreindre la configuration de l'exportation avec IAM, Stackdriver Logging
    • Configurer une LCA pour autoriser l'écriture de métriques pour les métriques personnalisées avec IAM, Stackdriver Monitoring

4. Optimiser les performances du service

    4.1 Identifier les problèmes de performances du service :

    • Évaluer et comprendre les répercussions sur l'utilisateur (Stackdriver Service Monitoring pour App Engine, Istio)
    • Utiliser Stackdriver pour identifier l'utilisation des ressources cloud
    • Utiliser Stackdriver Trace/Profiler pour profiler les caractéristiques des performances
    • Interpréter la télémétrie du maillage de services
    • Résoudre des problèmes d'image/OS
    • Résoudre des problèmes de réseau (ex. : journaux de flux VPC, journaux de pare-feu, latence, affichage des détails du réseau)

    4.2 Déboguer le code d'application :

    • Instrumentation d'applications
    • Stackdriver Debugger
    • Stackdriver Logging
    • Stackdriver Trace
    • Débogage d'applications distribuées
    • Serveur de développement local App Engine
    • Stackdriver Error Reporting
    • Stackdriver Profiler

    4.3 Optimiser l'utilisation des ressources :

    • Identifier les coûts des ressources
    • Identifier les niveaux d'utilisation des ressources
    • Développer un plan pour optimiser les ressources qui coûtent le plus cher ou sont le moins utilisées
    • Gérer les VM préemptives
    • Travailler avec des remises sur engagement d'utilisation
    • Prendre en compte le coût total de possession
    • Réfléchir au prix du réseau

5. Gérer les incidents de service

    5.1 Coordonner les rôles et mettre en œuvre des canaux de communication pendant un incident de service :

    • Définir les rôles (chargé d'incidents, responsable des communications, responsable des opérations)
    • Traiter les requêtes pour l'évaluation des répercussions
    • Faire régulièrement le point, en interne et en externe
    • Enregistrer les modifications majeures dans l'état d'incident (à quel moment des mesures d'atténuation ont été prises, à quel moment le problème a été résolu, etc.)
    • Établir des canaux de communication (e-mail, IRC, Hangouts, Slack, téléphone, etc.)
    • Adapter la taille de l'équipe d'intervention et les tâches déléguées
    • Éviter la fatigue/le surmenage
    • Confier des rôles et les faire tourner
    • Gérer les relations avec les différentes personnes impliquées

    5.2 Examiner les symptômes des incidents qui ont des répercussions sur les utilisateurs :

    • Identifier les causes probables de l'échec du service
    • Évaluer les symptômes et les causes probables ; classer les causes par probabilité en fonction des comportements observés
    • Mener une enquête pour isoler la cause la plus probable
    • Identifier les alternatives pour limiter le problème

    5.3 Limiter les répercussions de l'incident sur les utilisateurs :

    • Effectuer un rollback de la release
    • Drainer/Rediriger le trafic
    • Désactiver l'expérience
    • Ajouter de la capacité

    5.4 Résoudre les problèmes (ex. : Cloud Build, Jenkins) :

    • Modifier le code/Réparer les bugs
    • Vérifier la réparation
    • Annoncer la résolution du problème

    5.5 Documenter le problème dans une analyse post-mortem :

    • Documenter les causes premières
    • Définir des actions et les classer par priorité
    • Communiquer les analyses post-mortem aux personnes concernées