DevOps

Philosophie DevOps

Anti Patterns

Best Practices

Site Reliability Engineer (SRE)


Terminologie

Toolbox DevOps

  1. Versionnement
    Converser un historique clair des modifications de code effectuées
    Git:
    git checkout -b feature/new-user-interface
    
  2. Provisionnement
    Créer et gérer l’infrastructure avec la même précision et suivi que le code de l’application
    Terraform:
    resource "aws_instance" "web" {
      ami = "ami-a1b2c3d4"
        instance_type = "t2.micro"
    }
    
  3. Containerisation
    Créer des containers léger et portables garantissant la reproductibilité des environnements de développement, éliminant le problème du “ça marche sur ma machine”
    Docker:
    FROM node:14
    
    WORKDIR /app
    COPY . .
    RUN npm install
    
    CMD ["npm", "start"]
    
  4. Orchestration
    Gérer et mettre à échelle les applications containerisées
    Kubernetes:
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: web-app
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: web
      template:
        metadata:
          labels:
            app: web
        spec:
          containers:
          - name: web
            image: web-app:latest
    
  5. CI/CD
    Automatiser les processus de test et de déploiement
    GitHub Actions
    name: Node.js CI
    on: [push]
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v2
        - name: Use Node.js
          uses: actions/setup-node@v1
          with:
            node-version: '14'
        - run: npm install
        - run: npm test
    
  6. Monitoring
    Mettre en oeuvre une surveillance des performances et de l’état de santé des machines
    Grafana et Prometheus

  7. Logging
    Garder une traces des événements qui se sont produits, peut être à différents fins allant de l’audit au troubleshooting

    Sentry, ELK stack

[](https://xmind.app/m/yJ2FFi/)

Magenta: les plus courants, en maîtriser au moins un,
Rouge: moins courant, en connaître le fonctionnement
Jaune: peu rencontrés, connaître de nom

Infrastructure as Code

L’IaC (Infrastructure as Code) consiste à utiliser des outils pour créer des ressources de manière programmatique.

Les outils d’IaC peuvent être classifiés en 3 groupes principaux: