# Application cloud native

Il s'agit d'une application qui suit les principes et prérequis pour pouvoir être déployée sur un cloud :

* [12-factor app](https://12factor.net/fr/)
* [15 factors](https://developer.ibm.com/articles/15-factor-applications/#the-additional-factors-and-why-they-are-important1)

## Application conteneurisée

* L'application doit être livrée via des images Docker en suivant ces [recommandations internes DNUM](https://github.com/DNUM-SocialGouv/documentation/blob/main/constuire-developper-deployer/principes-de-developpement/Recommandation%20de%20créations%20d%27images%20applicatives.pdf)
* En local, l'environnement de développement complet doit utiliser [Docker Compose](https://docs.docker.com/compose/). Le lancement complet de l'environnement doit se faire par un simple `docker compose up`
  * Se référer à la page de la [checklist de projet](/ressources/developper/checklist-projet.md) pour le prérequis d'instanciation de l'environnement local.
* En intégration / préproduction / production, la priorité est donnée au déploiement sur un cluster [Kubernetes](https://kubernetes.io/fr/). À défaut, Docker Compose doit être utilisé si le déploiement se fait sur des VM

## Migrations de données réversibles

C'est indispensable pour pouvoir redéployer une ancienne version (rollback).

## Pré-requis de l'équipe technique produit

* Gestion de configuration et définition claire de la gestion des branches git (feature, intégration, preproduction)
* Les tags sont utilisés pour la production
* Validation par les pairs lors de revue de code (merge/pull request)
* Refactoring en continu pour limiter la dette technique
* Homogénéisation des pratiques au sein de l'organisation (facilite la réversibilité interne)
* Cadre de Cohérence Technique

## Ressources

* Formation Kubernetes : <https://container.training>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://dnum-ministeres-sociaux.gitbook.io/ressources/developper/principes-de-developpement/cloud-native.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
