Les services de "Container as a Service" permettent de se rapprocher du "Serverless" sans fondamentalement impacter la façon dont vous organisez ou développez vos applications.
Aujourd'hui la plupart des Cloud Providers proposent une offre CaaS (e.g. CloudRun sur GCP, AWS Lambda/ECS sur AWS, ACS sur Azure). Celle-ci est adaptée aux équipes ne nécessitant pas une customisation importante. Elle permet un gain important en coûts de maintenance et d'hébergement de par certaines de leurs features (e.g. le scale à 0).
Utiliser un service CaaS aujourd'hui peut être une première grande étape dans la modernisation de vos applications ou la création d'une nouvelle application.
Le CaaS apparaît comme une vraie alternative à :
- Kubernetes, de par sa complexité de mise en place et de maintenance
- Serverless, de par la transformation architecturale qu'il implique
Un autre avantage du CaaS est qu'il est par définition moins vendor-lock que d'autres services d'hébergement. Votre application est ainsi packagée via un standard du marché (une image OCI) et peut potentiellement être déployée sur n'importe quel service supportant ces images OCI, comme un futur cluster Kubernetes.
Nous avons pu observer plusieurs comportements via l'utilisation de ces services : soit ils sont complètement adoptés et conviennent parfaitement aux besoins de nos clients, soit ils manquent de customisation et ceux-ci sont naturellement poussés vers l'utilisation de Kubernetes. Ce n’est plus une problématique aujourd’hui, mais il y a de cela 1 an, Cloud Run ne supportait pas le fait que le CPU soit “always allocated” et nous ne pouvions pas l’utiliser pour des applications ayant des processus en background.
Ces services sont devenus incontournables et nous les recommandons. Si l'utilisation d'un Cloud Provider n'est pas une option, il est toujours possible de construire votre propre CaaS en utilisant des technologies open source comme Knative.