Aseptic vs Docker Compose
Presque tout le monde commence ici, et à juste titre : un docker-compose.yml
et une commande lèvent Kafka, Redis et Postgres sans discussion. La question n'est pas
de savoir si Compose est bon —il l'est— mais ce qui se passe quand ce qu'il y a dans
le fichier compose cesse d'être de l'infrastructure et devient vos services,
ceux que vous éditez tous les jours.
En une phrase
Docker Compose déclare un ensemble de conteneurs et leur réseau dans un fichier YAML, et les démarre ensemble. Tout ce qui tourne, tourne en conteneur ; tout ce qui parle, parle par le nom du service sur ce réseau.
Aseptic utilise Docker pour l'infrastructure commune et démarre vos services comme des processus de votre machine, en résolvant chaque dépendance vers un service local, vers votre environnement cloud partagé ou vers un mock, et en réécrivant les URL entre eux au démarrage.
Le tableau
| Docker Compose | Aseptic | |
|---|---|---|
| Lève l'infrastructure commune | Oui, c'est ce qu'il fait le mieux | Oui — avec Docker, en dessous |
| Vos services | En conteneur, avec leur image | Natifs par défaut ; en conteneur si vous voulez |
| Voir un changement de code | Reconstruire l'image et recréer le conteneur | Le rechargement à chaud de votre framework |
| Débogueur attaché | Possible, en câblant ports et options | C'est un processus local : comme d'habitude |
| Où pointe chaque service | Vers le nom du service sur le réseau compose | Par dépendance : local, cloud ou mock |
| Démarrer une partie du système | up de quelques-uns ; le reste à la main | Le scénario dit qui entre, et le reste se résout seul |
| Configuration | Un YAML, en général dans un dépôt | Scénarios hors des dépôts ; manifestes autodétectés |
| Collisions de ports | À vous de les résoudre | Remappage automatique |
| Fonctionne aussi en CI | Oui | Non — c'est un outil de bureau |
| Licence | Open source | Gratuit pour un usage personnel, payant en usage commercial |
Choisissez Docker Compose si…
- Votre système est deux ou trois services stables que vous ne touchez pas tous les jours. Un fichier compose et une commande sont difficiles à battre, et vous n'installez rien de neuf.
- Vous avez besoin de la même chose sur votre machine et en CI. Aseptic est un logiciel de bureau ; Compose tourne des deux côtés avec le même fichier.
- Les services que vous levez appartiennent à d'autres et doivent seulement tourner : si vous ne les éditez jamais, les avoir en conteneur est exactement ce qu'il faut.
- Vous voulez un outil open source, sans licence à examiner.
Choisissez Aseptic si…
- Vous voulez que le service que vous éditez tourne en natif —rechargement à chaud, débogueur attaché— et que les autres soient simplement levés et tranquilles. C'est un mélange qu'un fichier compose ne sait pas exprimer : dedans, tout est un conteneur.
- Vous voulez démarrer trois des douze et faire pointer les neuf autres vers votre environnement cloud ou vers un mock, en le décidant par dépendance plutôt que par environnement.
- Vous en avez assez de changer une URL dans l'
application.ymld'un dépôt qui n'est pas le vôtre et de penser à ne pas la committer. - Vous voulez que l'environnement se partage comme un fichier, pas comme un document de quarante étapes que personne ne tient à jour.
Là où Aseptic est insuffisant
Il ne tourne pas en CI. C'est une application de bureau avec un CLI, pensée pour la boucle de travail d'une personne. Si ce qu'il vous faut, ce sont des dépendances dans un job d'intégration continue, Compose —ou Testcontainers— est la réponse, et Aseptic n'y est pas en concurrence.
Il n'est pas open source non plus, et Compose est le standard de fait depuis des années : il est sur la machine de tout le monde, il existe une réponse à chaque problème, et personne n'a besoin d'être convaincu de l'installer.
Et si votre système est petit, Aseptic est plus de machinerie qu'il n'en faut. L'avantage apparaît quand il y a assez de services pour que décider où pointe chacun devienne un travail en soi.
Ce qui finit généralement par arriver
Ils cohabitent, parce qu'ils ne se disputent pas la même couche. Le fichier compose garde ce que Compose fait bien —l'infrastructure commune— et Aseptic s'en sert d'ailleurs tel quel : vous le pointez vers le fichier que vous avez déjà. Ce qui sort du compose, ce sont vos services, là où le cycle « une image par ligne changée » fait mal.
Si vous pesez aussi Tilt, Skaffold ou un Kubernetes local, la page des alternatives à Docker Compose les met côte à côte, et le comparatif général couvre les trois approches. Et si vous vous demandez si Testcontainers résout déjà cela, il y a la comparaison avec Testcontainers.
Questions fréquentes
Aseptic remplace-t-il Docker Compose ?
Non, il l'utilise. Aseptic lève l'infrastructure commune (Kafka, Redis, PostgreSQL) avec Docker, exactement comme vous le feriez. Ce qui change, c'est ce qui arrive à vos services : au lieu de construire une image de chacun à chaque changement, il les exécute comme des processus de votre machine —ou en conteneur si vous préférez— et réécrit les URL entre eux au démarrage.
Puis-je garder mon docker-compose.yml actuel ?
Oui. Aseptic pointe vers le fichier compose que vous avez déjà pour l'infrastructure ; il n'y a rien à réécrire ni à migrer vers un autre format.
Qu'est-ce que Docker Compose fait mieux qu'Aseptic ?
Il est standard, open source, et n'importe qui l'exécute sans rien installer d'autre : si votre système est petit et stable, un fichier compose et une commande sont difficiles à battre. C'est aussi le seul des deux qui fonctionne pareil en CI et sur votre portable.
Et si je ne veux démarrer que deux de mes douze services ?
C'est exactement là que compose s'arrête : soit vous levez les dix autres aussi, soit vous éditez à la main les URL des deux que vous voulez. Dans Aseptic vous décidez par dépendance si elle se résout vers le service local, vers votre environnement cloud ou vers un mock, et c'est appliqué au démarrage sans toucher à vos dépôts.
Ai-je besoin de Docker pour utiliser Aseptic ?
Oui, pour l'infrastructure commune. Aseptic gère ces conteneurs pour vous, avec remappage automatique des ports en cas de collision.