Factor app” est un manifeste qui propose 12 bonnes pratiques concernant le développement d’applications web. • Ce manifeste, écrit par Adam Wiggins (co-fondateur d’Heroku), est né de ses observations et de son expérience dans le développement et le déploiement d’applications web. • Ce manifeste s’applique à tous les langages et toutes les plateformes, c’est pourquoi il se contente de décrire les décisions de conception de haut niveau sans donner de détail sur l’implémentation. • Nous allons dans cette session étudier comme appliquer cette méthodologie sur un projet à base de Kubernetes dans Azure (AKS)
Configuration 4. Services externes 5. Build / Release / Run 6. Processus 7. Association de ports 8. Concurrence 9. Jetable 10. Parité Dev / Prod 11. Logs 12. Process d’administration 12… uniquement ? ….. D’autres son disponibles….. XX - TITRE DE LA PRENTATION - 00.00.2022
Code Infra as Code : Terraform Configuration as Code : Ansible / AppConfiguration / DSC Pipeline as Code : GitHub Actions (YAML) Docs as Code : Terraform Docs Image/container as Code : Docker File / ACR XX - TITRE DE LA PRENTATION - 00.00.2022
Surveillez les bases CVE Utilisez des outils comme GitHub Advanced Security ou Cast Highlight Passez de DevOps à DevSecOps ! XX - TITRE DE LA PRENTATION - 00.00.2022
• Séparer la configuration du code • Les microservices doivent être indépendants de leur environnement d’exécution • Les microservices doivent passer d’un environnement à un autre sans modifier le code ! • Mettre en place une solution pour stocker centralement les configurations.
00.00.2022 • A l’origine les containers sont stateless (et doivent le rester). • On parle d’architecture immuable • Externaliser le stockage des données (SQL et NoSQL)
un nouveau service (ou une nouvelle version), vous devez éviter les collisions pour les ports déjà utilisés sur chaque hôte. L’isolation de conteneur vous permet d’exécuter tous les processus (y compris plusieurs versions du même microservice) sur le même port (en utilisant des espaces de noms réseau dans le noyau Linux) sur un seul hôte. L’objet Service expose ensuite le pool de microservices sur tous les hôtes et effectue un équilibrage de charge rudimentaire des demandes entrantes.
VI (Processes). Kubernetes (à partir de service stateless) permet l’autoscalling des services facilement. Autoscalling basé sur des métriques type CPU / mémoire ou métriques externes (taille d’une queue)
ISO ! Grâce à l’infra as code, avoir cette parité semble facile… jusqu’à ce que…. On parle de la partie base de données ! Pas de recette miracle, quelques outils peuvent aider comme RedGate.
maintenance comme des one-off- processes • La formation de processus est la liste des processus qui sont utilisés pour le fonctionnement normal de l’application (comme gérer les requêtes web) lorsqu’elle tourne. Les développeurs vont souvent vouloir effectuer des tâches occasionnelles d’administration ou de maintenance, comme : • Lancer les migrations de base de données. • Lancer une console (également appelée terminal REPL). • Exécuter des scripts ponctuels inclus dans le dépôt de code. • Les processus ponctuels d’administration devraient être lancés dans un environnement identique à ceux des processus standards de l’application. • Ils s’exécutent sur une release, en utilisant la même base de code et configuration que tout processus qui tourne pour cette release. • Le code d’administration doit être livré avec le code de l’application afin d’éviter les problèmes de synchronisation. Leitmotiv : Automatiser !!
▪ 2 API : ▪ API public pour communiquer avec le « monde extérieur » ▪ API privée dite admin pour administrer, paramétrer le service ▪ Deux techniques pour requêter un service : ▪ GetProfilesById ▪ GET http://myapi.looksfamiliar.com/profiles/user/id/99999 ▪ GetProfilesByLocation ▪ GET http://myapi.looksfamiliar.com/profiles?location=Massachusetts