Voici un récap’ des présentations faites par Clément Denis (CTO AODocs) et Jean-Marc Leoni (CTO Akur8) lors de notre dernier Mobitalks Java !
Clément Denis : Java sans serveur avec Google Cloud Platform. Qu’est-ce que Serverless signifie vraiment ?
Clément ne mâche pas ses mots : gérer des serveurs, physiques, virtuels ou en containers, c’est un casse-tête. Si quelqu’un d’autre peut prendre cette corvée, pourquoi hésiter ?
Jusqu’où peut-on pousser l’abstraction côté infrastructure ?
Le serverless ne se limite pas à la production
Développer directement dans le Cloud, ça change tout
Quand vos instances démarrent en un claquement de doigts, travailler sur votre machine locale n’a plus grand intérêt la plupart du temps. Le Cloud devient le terrain de jeu par défaut.
Adopter le “sans serveur” pour l’ensemble de la chaîne, outils compris
L’ensemble des outils courants existe aujourd’hui en version Cloud. Quelques exemples :
- Code : Github, Gitlab, Bitbucket
- Intégration continue : Travis, Gitlab CI, pipelines S3
- Gestion de tickets : Jira Cloud, Gitlab
- IDE : Gitpod
Gardez toujours un œil sur la localisation des données clients
Contrôler les données n’est jamais négociable. Le RGPD ne se résume pas à de la paperasse : chaque sous-traitant impose une vérification attentive. Idéalement, centralisez vos données pour éviter les mauvaises surprises.
Serverless : gains et limites
Moins d’opérations, plus vite, moins cher
Lancer une startup sans équipe DevOps : le “serverless” accélère le produit, pas besoin de renforcer les effectifs tout de suite.
Scalabilité sans plafond
Adopter le modèle serverless impose de tout rendre adaptable à la demande, à l’horizontale. Cela change la façon de concevoir les applications, mais c’est souvent payant.
Mises à jour et sécurité : les géants du cloud veillent
Une faille critique ? Google, Amazon ou Microsoft s’en occupent plus vite que vous ne pourriez le faire en interne, et ça enlève bien du stress.
Le vrai métier, c’est l’application, pas l’infrastructure
Allégé du poids des serveurs, l’énergie est de nouveau consacrée à ce qui compte : la valeur ajoutée pour l’utilisateur.
Performances au rendez-vous… mais gardez un œil sur la facture
La souplesse est bien là, mais la montée en charge peut entraîner quelques surprises sur la ligne budgétaire.
La conception se complexifie
Impossible de faire l’impasse : il faut anticiper la scalabilité dès les premiers schémas, dire adieu aux traitements séquentiels lourds sur un unique thread.
Moins de contrôle sur l’environnement
On ne pilote plus tous les paramètres : parfois, il faut patienter avant de bénéficier d’une nouvelle version de Java.
Dépendance accrue au fournisseur
Migrer une application d’un cloud à l’autre ? L’opération devient vite un vrai parcours du combattant.
Comment fonctionne AODocs ?
Un système de gestion documentaire taillé pour Google Drive
5 millions d’utilisateurs
L’intégration avec G Suite est totale, appuyée par une extension Chrome pour Google Drive et une installation directe sur le domaine. Rien n’échappe à cet écosystème.
Des centaines de millions de fichiers gérés sur Google Drive
L’accélération est impressionnante : la barre du milliard de documents ne tardera pas à tomber.
Une architecture Cloud pensée pour le SaaS
Une application SaaS multi-tenant pour des milliers de clients
Dès le départ, tout a été conçu pour le Cloud : pas de bricolages, pas de réinterprétations. Du vrai SaaS natif.
Des dizaines de millions de requêtes entrantes et sortantes chaque jour
Le système s’ajuste en temps réel, passant de quelques instances à plusieurs centaines suivant le besoin.
Principalement Java 8, mais l’exploration continue
L’application mise sur Java 8, mais certains microservices évoluent vers Java 11 ou Kotlin.
Des choix techniques clairs et assumés
L’architecture repose notamment sur :
- Servlet 3.1 et App Engine SDK
- Objectifier pour l’ORM (conçu pour Datastore, basé sur les annotations)
- REST diffusé via Cloud Endpoints
- API Google (google-api-services-* et google-cloud-*)
- Guava, Lombok, Jackson, et autres librairies
Java sur GCP : panorama des possibilités
App Engine : le guichet unique du serverless
Des services et des versions multiples
Déployer plusieurs versions d’un même service ? Chaque version dispose de sa propre URL, le routage du trafic s’ajuste à la demande et les bascules s’effectuent sans rupture.
Infrastructure de service flexible
Customisation des domaines, HTTPS natif, gestion du trafic pour les phases de tests ou les déploiements progressifs : il y a de la marge pour ajuster.
Une base de données NoSQL réellement scalable
Datastore et son ORM Java maison, Objectifier, font le travail.
Memcache
Accès ultra-rapide, parfait pour booster Datastore avec un cache de second niveau.
Recherche texte intégral
Sans maintenance, sans prise de tête : le moteur de recherche gère les volumes, peu importe l’échelle.
Tâches planifiées et crons
Découper les traitements ou planifier des actions de routine, tout est nativement prévu.
App Engine pour Java : deux générations, deux philosophies
Comparer les runtimes Java sur App Engine : première vs deuxième génération
Encore un aperçu de ces différences
Java sur GCP : retour sur les options
Surveiller les applications Java : comment s’y prendre ?
Stackdriver et BigQuery : une alliance efficace
Graphiques et alertes Stackdriver : le trio ELK peut rester de côté
Logs et rapports d’erreur : Stackdriver assure
Le choix du framework de logs est ouvert
Que vous préfériez SLF4J, Commons Logging ou Lombok, tout aboutit sur java.util.logging. La collecte ne dépend pas des goûts de chacun.
Stockage et analyse des logs : cap sur BigQuery
Stackdriver ne conserve les logs que 30 jours, mais une exportation dans BigQuery permet d’aller plus loin : analyse au long cours, recherche de latence, ou investigation poussée des incidents passés.
Détection automatique d’anomalies
Les stacktraces sont triées et regroupées, ce qui a permis d’attraper des bugs particulièrement discrets.
Stackdriver Trace : pour scruter la performance
Latence par chemin de requête
Repérer une anomalie ou un couac dans l’application devient immédiat.
Suivi automatisé pour App Engine
L’application bénéficie de métriques détaillées sans effort de développement supplémentaire.
Possibilité d’ajouter ses propres spans
L’écosystème s’appuie sur OpenCensus pour enrichir le diagnostic.
Comparer les distributions de latence entre versions
Les rapports, automatiques ou à la demande, affûtent l’analyse des performances d’une version à l’autre.
Stackdriver Profiler : creuser toujours plus loin
Déboguer avec Stackdriver
Placer un “point d’arrêt” en production
Directement depuis IntelliJ ou en ligne, sans impacter réellement les performances, tout en ayant accès aux variables d’exécution au bon moment.
Ajouter un log ponctuel précisément où il faut
Le système sait où et quand le faire, plus besoin d’hésiter avant d’ajouter un point de contrôle temporaire.
Une expérience agréable, même si l’usage reste ponctuel
Il faut l’avouer, cet outil impressionne mais sert surtout de corde de rappel lors de cas spécifiques.
Jean-Marc Leoni : le “serverless” vu depuis AWS, en combinant Spring et AWS Batch pour les traitements longs et asynchrones dans Java.
Serverless appliqué au traitement batch
Dans certains cas, la fonction-as-a-service (FaaS) s’avère utile pour :
- Traiter les données une à une pour l’enrichissement ou le nettoyage
- Piloter sans effort des volumes modestes
D’autres contextes exposent ses limites :
- Impossible quand toutes les données doivent tenir en mémoire
- Inadéquat si le traitement ne se distribue pas
AWS Batch
AWS Batch orchestre les traitements massifs de longue haleine. Il s’appuie sur plusieurs piliers :
- Job Definition : image Docker, commandes associées, dimensionement CPU/mémoire
- Job : tâche concrète, lancée sur un Compute Environment
- Queue : file d’attente des traitements
- Compute Environment : réserve de machines provisionnées automatiquement, à la taille voulue
Et Spring dans tout ça ?
Spring Batch accélère la création de pipelines de traitement, rendant les étapes plus claires :
- Définition naturellement découpée des phases
- Connexion native avec JDBC/JPA
Spring Cloud, de son côté, simplifie l’intégration aux environnements cloud :
- Base de données managée
- Déploiement microservices facilité
Pour terminer, Jean-Marc Leoni a partagé un projet de référence sur Github lors du meetup. L’avancée du cloud continue de transformer la façon d’imaginer, développer et exécuter les traitements, jusqu’à rendre la technique presque invisible derrière chaque brique applicative, chaque calcul expédié vers le nuage.


















