Floci est un émulateur AWS open source conçu comme alternative à LocalStack pour simuler les services cloud Amazon en local. Présenté en 2026 comme une solution plus légère et plus fidèle aux comportements réels d'AWS, Floci attire l'attention des équipes de développement qui veulent tester leurs applications cloud sans générer de coûts ou dépendre d'une connexion internet. Voici un tour d'horizon complet de ce qu'il propose, comment il se compare à LocalStack, et pour quels cas d'usage il est pertinent.

Pourquoi émuler AWS en local ?

Les équipes travaillant avec AWS font face à un problème récurrent : chaque test en environnement réel génère des coûts, nécessite une connexion internet stable, et peut avoir des effets de bord sur les ressources de production si les configurations ne sont pas parfaitement isolées. Les tests locaux permettent de développer plus rapidement, de travailler hors ligne, et d'intégrer les tests cloud dans les pipelines CI/CD sans exposer de vraies ressources AWS.

LocalStack est depuis des années la référence dans ce domaine. Il émule une centaine de services AWS et dispose d'une large communauté. Mais il souffre de limitations : certains services en tier gratuit ne sont pas fidèles aux comportements réels, la version community manque de services critiques (certaines fonctionnalités Lambda avancées, Step Functions complexes), et la consommation mémoire peut être importante pour les projets qui émulent beaucoup de services simultanément.

L'approche de Floci : fidélité comportementale avant couverture

Floci fait un choix architectural différent de LocalStack : plutôt que d'émuler le maximum de services avec une fidélité variable, il choisit d'émuler moins de services mais avec une précision maximale. L'objectif est que le code qui fonctionne avec Floci fonctionne à l'identique sur le vrai AWS, sans ajustements.

Cette philosophie "comportement exact" se traduit par des choix techniques précis. Floci intercepte les appels AWS SDK au niveau du protocole HTTP et reproduit les réponses JSON exactes qu'AWS renverrait, y compris les messages d'erreur avec les mêmes codes et formats. Les IDs générés suivent les mêmes patterns qu'AWS (format ARN correct, IDs avec les mêmes préfixes). Les comportements de pagination, de retry, et de rate limiting sont reproduits fidèlement.

Services supportés dans Floci 1.0

La version 1.0 de Floci couvre les services AWS les plus utilisés dans les architectures serverless et microservices modernes. S3 est supporté avec une fidélité complète incluant les ACL, les versioning, les lifecycle policies, et le multipart upload. Lambda est émulé avec support des runtimes Node.js 18/20/22, Python 3.11/3.12, et Go, avec des cold starts simulés proches des temps réels.

DynamoDB est couvert avec support complet des GSI, LSI, des transactions, et des streams. SQS et SNS sont supportés avec FIFO queues et tous les attributs de message. API Gateway est présent avec support des Lambda integrations et HTTP integrations. EventBridge, IAM (pour les policies et l'évaluation de permissions), et Secrets Manager complètent le tableau.

Ce qui n'est pas encore dans la v1.0 : RDS (base de données relationnelle), ElastiCache, Cognito, AppSync, et les services de machine learning comme SageMaker. Floci prévoit d'ajouter ces services dans les versions futures, en maintenant sa priorité sur la fidélité comportementale.

Installation et prise en main

Floci est distribué comme image Docker officielle. L'installation la plus simple utilise Docker Compose. Vous définissez les services AWS que vous souhaitez activer, les régions simulées, et les configurations spécifiques comme les profils IAM initiaux. Floci expose une interface HTTP compatible avec les AWS SDK officiels sans modification de code.

La configuration se fait via un fichier floci.yaml où vous déclarez l'état initial de vos ressources : buckets S3 pré-créés, tables DynamoDB avec leurs schémas, queues SQS. Cette approche "infrastructure as code" simplifie la mise en place d'environnements de test reproductibles entre membres d'une équipe.

La compatibilité avec les SDK AWS officiels (boto3 en Python, aws-sdk en JavaScript/TypeScript, SDK Go v2) est totale. Vous changez simplement l'endpoint dans votre configuration pour pointer vers Floci au lieu d'AWS. Les AWS CLI et CDK fonctionnent également avec Floci via la variable d'environnement AWS_ENDPOINT_URL.

Floci vs LocalStack : comparatif pratique

Pour S3 et DynamoDB, les deux outils offrent une bonne couverture. Floci se distingue sur la précision des messages d'erreur (format identique à AWS) et la simulation des comportements de rate limiting. LocalStack a l'avantage sur la couverture de services (beaucoup plus de services disponibles) et une communauté plus large avec plus de ressources et d'exemples.

En termes de consommation de ressources, Floci est significativement plus léger que LocalStack pour un ensemble de services comparable. Sur une machine avec 8 Go de RAM, Floci avec les services S3+Lambda+DynamoDB+SQS utilise environ 400 Mo de RAM contre 800 Mo à 1.2 Go pour LocalStack avec les mêmes services. Cela peut faire une différence dans les environnements CI/CD avec des ressources limitées.

Cas d'usage recommandés

Floci brille particulièrement pour les équipes qui ont eu des problèmes de bugs en production liés à des différences de comportement entre leur émulateur local et le vrai AWS. Si vous avez déjà eu un bug en prod parce que votre code fonctionnait avec LocalStack mais pas sur AWS réel, Floci vaut le coup d'être évalué.

Il est aussi très adapté aux équipes qui développent des architectures event-driven complexes avec EventBridge, SQS et Lambda, où la précision des comportements (ordre des messages, dead letter queues, retry policies) est critique. Pour les équipes avec des besoins simples ou qui utilisent des services non encore supportés par Floci, LocalStack reste le choix plus pragmatique.

Open source et modèle de développement

Floci est publié sous licence Apache 2.0 sur GitHub. L'équipe derrière le projet (une startup de 5 personnes basée à Berlin) finance le développement via un modèle open core : la version communautaire est complète et gratuite, et une version entreprise payante ajoute des fonctionnalités comme le clustering multi-nœuds, un dashboard web avancé, et du support professionnel.

Le projet affiche une cadence de releases saine (une version mineure par mois) et une roadmap publique sur GitHub. Les contributions extérieures sont acceptées avec des guidelines claires. C'est un signe encourageant de durabilité pour un projet open source dans un domaine où la pérennité est importante : vous ne voulez pas dépendre d'un outil qui sera abandonné dans 6 mois.

À propos de l'auteur Maxime Aubert