# Choix d'hébergement Agapio
Il s'agit en fait plus de lister les fonctionnalités d'un PaaS (Plateform as a Service) comme Heroku, vis à vis d'un IaaS (Infrastructure as a Service) comme AWS ou GCP.
### Heroku
Heroku est un PaaS qui s'appuie sur des machines AWS, et permet de monter des environnements au click. L'idée est que l'on a uniquement le code source à déployer et quelques fichiers de configuration à mettre en place. Cela permet de s'abstraire totalement de la plateforme.
Fonctionnalités buit-in:
- Base de donnée PostgreSQL scallable.
- Domaine custom avec SSL, certificat LetsEncript géré automatiquement.
- Review App (on monte un environnement dédié à chaque PR)
- Possibilité de dupliquer des apps pour différents environnements/événements.
- Intégration et déploiement directement intégré à Github.
- Gestion d'images Docker, ou de "buildpacks" intégrés ou customs pour faire tourner les services.
- CLI et interface web permettant de tout gérer.
Étant donné les besoins, il semblerait que pour la base de données, le plan gratuit avec 10k lignes suffira dans un premier temps (puis 9\$/mois ensuite pour 10M).
En ce qui concerne le stockage des factures, il faut prévoir de passer par un service annexe comme AWS S3, ou Google Cloud Storage (vu que Agapio a un gapps, c'est pertinent). Le service coûte aux alentours de \$0.03 par Giga-octet stocké.
Ainsi, au total on a un coût de :
- 7\$/mois par instance Heroku * 2 si on opte pour un backend Hasura.
- 9\$/mois pour la base de données
- Le stockage des fichiers.
Donc on a du prod ready pour 23€/mois, que l'équipe en place sait déployer, et maintenir, et qui ne demandra pas d'intervention de la part de Agapio.
### AWS
Pour la partie AWS, il faudrait utiliser plusieurs outils : Amazon Elastic Beanstalk qui permet de gérer des images Docker préconfigurées ou custom pour les servers, S3 pour les fichiers, Amazon RDS pour la base de données, Amazon Certificate Manager pour la configuration SSL, etc.
Tout est à construire à la main. Les images, la configuration, les certificats, la connection entre les différents services etc., et demande donc des compétences et une expérience DevOps, que l'équipe en place n'ont pas.
Sur un projet similaire passé, un de nos DevOps avait estimé le coût à un total d'environ 50 €.
On ne parle ici que de l'hébergement. Il faut donc rajouter à ça toute la couche CD (déploiements automatiques, review apps, etc) pris en charge par Heroku automatiquement, et gratuitement.
Il en va de même pour Google Cloud Plateform, et équivalents.
### Avantages et inconvénients
L'avantage de passer par Google Cloud Platform ou par AWS est de pouvoir configurer au mieux le type de machine et les ressources de l'application.
Cependant, l'application telle qu'elle est à développer et l'utilisation qui en est prévue ne nécessite pas un tel niveau de configuration, ni d'expertise.
Ainsi, le service fourni par Heroku nous semble plus adapté au besoin. Il nous permettra d'avancer bien plus rapidement sur la livraison de fonctionnalités, et d'obtenir une infrastructure et un workflow lié bien plus complet en un minimum de temps.