Développement Micronaut
Les erreurs d’assemblage se voient à la compilation
Micronaut résout les dépendances quand on construit l’application, pas quand on la lance. Ce qui casserait au démarrage casse au build — sur votre poste, pas à trois heures du matin.
- API REST, gRPC ou GraphQL
- Kotlin et ses coroutines, ou Java
- Pensé pour les services petits et nombreux
- Compilation native GraalVM prévue dès la conception
Le principe
Ce que change le moment de l’assemblage
Un défaut de câblage n’est plus une panne
Les frameworks Java classiques assemblent l’application au démarrage : ils inspectent le code, découvrent les composants et résolvent leurs dépendances au lancement. Un composant mal déclaré ne se voit donc qu’au démarrage — et si ce démarrage est celui de la production, l’erreur se manifeste au pire moment.
Micronaut fait ce travail à la compilation. Une dépendance manquante, une ambiguïté, une configuration incohérente : cela ne compile pas. L’erreur remonte sur le poste du développeur ou dans la chaîne de construction, jamais en production. Sur une application qui se déploie souvent, c’est un changement de nature du risque, pas un simple confort.
Fait pour les services petits et nombreux
Micronaut a été conçu à l’époque des architectures découpées, et cela se voit : il est léger à démarrer, sobre en mémoire, et prévu pour qu’on multiplie les services plutôt que d’en faire un gros.
C’est le bon outil quand vous avez plusieurs services à faire cohabiter et dialoguer, quand ils doivent monter et descendre en nombre selon la charge, ou quand chacun doit tenir sur peu de ressources. Un seul gros service applicatif avec beaucoup d’écrans n’est pas son terrain — c’est celui de Spring.
Kotlin, et ce qu’il ajoute
Le support des coroutines par Kotlin permet de réaliser des applications web solides, avec des API REST, gRPC ou GraphQL, capables de tenir beaucoup de traitements simultanés sans multiplier les fils d’exécution. Sa syntaxe évite d’écrire du code superflu — sur une application qui vivra des années, ce qu’on n’écrit pas est ce qu’on n’a pas à maintenir.
Java reste évidemment possible, et les deux langages cohabitent dans le même projet. Le critère décisif est ce que pratique l’équipe qui reprendra le code.
Le natif comme objectif, pas comme bricolage
Nous apprécions d’obtenir un seul livrable capable de fonctionner sur de nombreux systèmes d’exploitation, et, au besoin, la compilation native via GraalVM et Native Image produit un binaire optimisé.
La différence avec les autres frameworks JVM tient à l’intention : Micronaut a été pensé pour cette compilation dès l’origine, là où d’autres s’en accommodent au prix de contorsions. Le binaire démarre en quelques millisecondes et consomme une fraction de la mémoire d’une application Java classique.
Quand nous vous orienterons ailleurs
Micronaut a un écosystème plus étroit que celui de Spring. Si votre application doit s’intégrer à beaucoup d’outils tiers, ou repose sur des briques éprouvées de l’univers Spring — Hibernate, sources de données multiples — vous écrirez moins de code avec Spring Boot, et nous vous le dirons.
De même, si le besoin est une application de gestion classique avec ses écrans et ses formulaires, ni l’un ni l’autre n’est le meilleur rapport : PHP avec Symfony coûtera moins cher à développer comme à héberger.
Les usages
Ce que nous construisons avec
-
API REST, gRPC, GraphQL
Le terrain principal : exposer des données et des règles métier à d’autres services ou à une application front, avec un contrat clair.
-
Microservices
Des services petits, nombreux, qui montent et descendent selon la charge. C’est l’architecture pour laquelle le framework a été conçu.
-
Erreurs au build
L’assemblage se fait à la compilation : un défaut de câblage empêche de construire, au lieu de faire tomber le démarrage en production.
-
Coroutines Kotlin
Beaucoup de traitements simultanés sans multiplier les fils d’exécution — et une syntaxe qui évite d’écrire du code superflu.
-
Un livrable, natif si besoin
Un seul fichier exécutable sur de nombreux systèmes, et la compilation native GraalVM prévue dès la conception du framework.
-
Développée et hébergée ici
Serveur privé ou conteneur sur notre infrastructure nantaise, avec supervision et astreinte. Deux métiers, un interlocuteur.
Questions fréquentes
Micronaut : vos questions
Une autre question ? Le support répond directement, sans intermédiaire, de 9h à 12h et de 14h à 17h.
Micronaut ou Spring Boot ?
Spring Boot quand l’écosystème compte : beaucoup d’intégrations tierces, Hibernate, sources de données multiples — vous écrirez moins de code. Micronaut quand vous multipliez les services, que les ressources comptent, ou que la compilation native est un objectif. Nous employons les deux, et nous disons lequel convient avant le devis.
Qu’est-ce que ça change concrètement au quotidien ?
Le moment où les erreurs apparaissent. Un composant mal déclaré empêche de compiler, au lieu de faire tomber l’application au démarrage. Sur un projet qui se déploie souvent, cela déplace une catégorie entière d’incidents de la production vers le poste du développeur.
Faut-il faire du Kotlin ?
Non, Java fonctionne parfaitement et les deux langages cohabitent dans le même projet. À choix ouvert, Kotlin apporte les coroutines — utiles quand beaucoup de traitements doivent avancer en parallèle — et une syntaxe plus concise. Le critère décisif reste ce que pratique l’équipe qui reprendra le code.
Est-ce moins cher à héberger ?
Oui, sensiblement : démarrage immédiat et empreinte mémoire réduite, ce qui permet une machine plus modeste ou plusieurs services sur la même. C’est le principal argument économique du framework, et il est encore plus net en conteneur.
Et si notre besoin est une application de gestion classique ?
Alors ni Micronaut ni Spring Boot ne sont le meilleur rapport, et nous vous le dirons : une application avec ses écrans, ses formulaires et son administration coûtera moins cher en PHP avec Symfony, à développer comme à héberger.
Un gros service, ou plusieurs petits ?
Cette seule réponse sépare Spring Boot de Micronaut. Décrivez-nous l’architecture visée avant le langage.