Aller au contenu principal

Développement

Objectifs

  • Connaître les twelve-factor app
  • Créer un environnement de développement avec Docker Compose

Cours

Développement

DevOps

The twelve-factor app

  • 12factor.net

  • Pour concevoir des applications

    • Facile à déployer sur le cloud

    • Portables entre les environnements

    • Scalables sans changement d'architecture

  • Pour le cloud, mais compatible DevOps

I. Base de code

https://12factor.net/fr/codebase

  • Plusieurs déploiements, un même code versionné

  • Factorisation du code en dépendance externe

II. Dépendances

  • Déclaration explicite des dépendances externes avec leur version

  • Utilisation d'un gestionnaire de dépendances

III. Configuration

  • Séparation de la configuration de l'application

  • Paramétrage par des variables d'environnement

  • Même code en production et en développement, mais configuration différente

IV. Services

  • Les ressources externes sont des services remplaçables

    • Base de données, serveur mail, cache, etc.

  • Connexion aux services par des variables d'environnement

V. Assemblez, publiez, exécutez (Build, release, run)

https://12factor.net/fr/build-release-run

  • Séparation des trois étapes

VI. Processus

  • L'application est sans état (stateless)

  • Les états sont stockées dans des services externes (base de données, cache, etc.)

VII. Associations de ports

  • L'application est accessible uniquement par des ports

  • Peut devenir un service externe d'une autre application

VIII. Concurrence

https://12factor.net/fr/concurrency

  • Scalabilité par duplication des processus indépendants

IX. Jetable

  • Démarrage et arrêt rapide

  • Redémarrage sans perte de données

X. Parité dev/prod

  • Proximité des environnements de développement et de production

  • Temporelle : dernière version rapidement déployée

  • Humaine : même équipe pour les deux environnements

  • Technique : mêmes outils/technologies/versions (OS, DB, etc.)

XI. Logs

  • Logs traités comme des flux d'événements (pas de fichiers)

  • Logs envoyés à la sortie standard (stdout)

  • Logs agrégés et indexés par un service externe

XII. Processus d’administration

  • Exécution des commandes d'administration/maintenance dans un processus ponctuel

  • Par exemple : migration de la base de données

  • Livrées avec le code de l'application

Environnement local

  • Déployer l'application sur sa machine

  • similaire à la production

  • Docker : virtualise une machine

  • Docker Compose : virtualise un réseau de machines (avec des sous-réseaux)

Docker Compose

  • Définition des services dans un fichier YAML compose.yml

  • Actions groupées

    • docker compose up, docker compose down, etc.

  • Préconfiguration des containers

    • variables d'environnement, ports, volumes, réseaux, etc.

Docker Compose : Exemple


services:
db:
  image: postgres
  environment:
    POSTGRES_PASSWORD: password
web:
  build: .
  command: python serve.py
  environment:
    DATABASE_URL: "postgres://postgres:password@db/postgres"
  ports:
    - "8000:8000"

Docker Compose : Utilisation

  • environment de développement (local)

  • tests d'intégration

  • poc (proof of concept) avec des réseaux

F pour passer en plein écran ou O pour afficher la vue d'ensemble.
Versions sans animation, plein écran, imprimable.

Références