627 shaares
Méthodologie pour construire des applications faites pour une utilisation de type cloud:
- 1 application = 1 repository de code et 1 seul
- toutes les dépendances doivent-être explicites et fournies avec l'application
- la configuration doit-être gérée dans des variables d'environnements
- tous les services externes (api, database, smtp, cache, messaging...) doivent-être gérés comme des ressources accessibles via une URL
- les étapes de build (compilation + dépendances), release (application configuration) et run (lancement de l'application) doivent être strictement séparées
- l'application doit-être stateless et "share-nothing" (aucune donnée en local)
- l'application doit gérer sa couche réseau sans dépendre d'un logiciel externe (ex: webserver embarqué pour ne pas dépendre d'apache)
- l'application doit-être composés de process instanciables sur le même serveur ou sur différents serveurs (scalabilité)
- les process ne doivent pas être démarrés en taches de font (démon) par l'application. la gestion des process (arrêt/relance, gestion logs et stdout, ...) doit être délégués à un process manager (systemd, runit, foreman, ...)
- les tâches administratives (ex: migration db, ...) doivent être traitées par des process séparées (scripts) mais fournis avec le code applicatif et lancé dans le même environnement applicatif