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 !
Lire également : Les meilleures alternatives à VoirSerie pour satisfaire vos envies de binge-watching
Plan de l'article
- Clément Denis : Java sans serveur avec Google Cloud Platform. Qu’ est-ce que Serverless signifie vraiment ?
- Qu’ est-ce que AODocs fonctionne ?
- Un système de gestion de documents pour Google Drive
- Un système de gestion de documents pour Google Drive
- Java sur GCP : quelles sont mes options ?
- App Engine : le guichet unique pour serveurless
- App Engine pour Java : est disponible en deux versions
- App Engine pour Java : différences entre les runtimes de 1ère et 2ng génération
- App Engine pour Java : différences entre les runtimes de 1ère et 2ng génération
- Java sur GCP : quelles sont mes options ?
- Comment surveillons-nous notre Java applications ?
Clément Denis : Java sans serveur avec Google Cloud Platform. Qu’ est-ce que Serverless signifie vraiment ?
La devise de Clément : La maintenance des serveurs (y compris virtualisés ou conteneurisés) est difficile. Si vous pouvez demander à quelqu’un d’autre de s’occuper des serveurs pour vous, faites-le simplement.
A découvrir également : Le casino en ligne permet-il de gagner de l'argent ?
Les niveaux d’abstraction des services d’infrastructure
Serverless partout, pas seulement l’environnement de production
Les développeurs doivent se développer dans le Cloud
Comme les instances se déploient et démarrent presque instantanément, il est inutile de développer localement la plupart du temps
Aller sans serveur pour TOUT, y compris les outils de développement
Code : Github, Gitlab, Bitbucket CI : Travis, Gitlab CI, pipelines à godet Billetterie : Jira Cloud, Gitlab IDE ? ⇒ Gitpod
Mais méfiez-vous de l’emplacement des données client !
Vous devez toujours avoir le contrôle des données client RGPP n’est pas une blague, toujours vérifier les services tiers TOS Si possible, essayez de colocer tout au même endroit
Avantages et inconvénients de Serverless
Pas d’opérations signifie moins cher, aller plus vite sur le marché
Une startup qui va sans serveur pour le lancement de son produit n’aura pas à embaucher un gars ou une équipe Devops, et expédiera plus vite
Évolutivité infinie
Serverless vous fait penser d’une manière différente : votre application DOIT évoluer horizontalement, ce qui est généralement une bonne chose
La sécurité et les mises à jour sont leur problème, pas le vôtre
Google, Amazon ou Microsoft connaîtront toujours les défauts de sécurité critiques devant vous, désolé !
Concentrez-vous sur ce qui est important : votre application
Votre application est ce qui compte, pas l’infrastructure sous-jacente
La performance évolue très bien, mais elle en coûte
Serverless signifie goulets d’étranglement des performances de trading avec gestion des coûts
Plus difficile à concevoir correctement
Votre application doit être mise à l’échelle horizontale, alors oubliez les gros travaux par lots dans un thread d’arrière-plan
Moins de contrôle de l’environnement d’exécution
Vous n’êtes pas en contrôle de tout, donc vous devrez peut-être attendre cette merveilleuse nouvelle version Java
Lock-in du fournisseur
Votre application sera plus difficile à transférer vers un autre fournisseur de Cloud
Qu’ est-ce que AODocs fonctionne ?
Un système de gestion de documents pour Google Drive
5 millions d’utilisateurs
Can être installé sur un domaine G Suite S’intègre très bien à l’écosystème G Suite Une extension Chrome pour Google Drive
Des centaines de millions de fichiers gérés dans Google Drive
Et grandissant vite ! Au milliard et plus…
Un système de gestion de documents pour Google Drive
Une application SaaS multilocataire unique pour des milliers de clients
Nous faisons du cloud « réel » : l’application a été conçue dès le début pour fonctionner dans un environnement Cloud
Des dizaines de millions de demandes entrantes et sortantes par jour
Échelle presque instantanément de quelques à quelques centaines d’instances, en fonction du trafic
Principalement Java 8 (exploration de Java 11 et Kotlin)
Application principale dans Java 8, déploiement de microservices Java 11 et Kotlin
Servlet 3.1 et App Engine SDK avec quelques
cadres
ORM ⇒ Objectifier (basé sur des annotations, spécifique à la banque de données) API REST ⇒ Framework des points de terminaison cloud API Google ⇒ google-api-services-* et google-cloud-* Utils ⇒ goyave, Lombok, Jackson, etc.
Java sur GCP : quelles sont mes options ?
App Engine : le guichet unique pour serveurless
Services et versions
Plusieurs services avec plusieurs versions exécutées simultanément Une URL pour chaque version, routage basé sur l’hôte ou le chemin Zéro temps d’arrêt lors du basculement entre les versions
Infrastructure de service flexible
Domaines personnalisés avec HTTPS (Let’s Encrypt ou fourni) Fractionnement du trafic pour les tests A/B ou le déploiement progressif
Banque de données
Base de données
NoSQL Infiniment évolutif (vraiment !) Joli Java ORM framework : Objectifier
Memcache
Opérations de plage de millisecondes Accélérer la banque de données en tant que cache de niveau 2
Recherche en texte intégral
Simple mais très fiable et extrêmement évolutif Aucun entretien jamais
Tâches et crons
Répartissez vos tâches lourdes en unités de travail plus petites Planifier des opérations récurrentes
App Engine pour Java : est disponible en deux versions
App Engine pour Java : différences entre les runtimes de 1ère et 2ng génération
App Engine pour Java : différences entre les runtimes de 1ère et 2ng génération
Java sur GCP : quelles sont mes options ?
Comment surveillons-nous notre Java applications ?
Stackdriver et BigQuery : le couple parfait
Graphiques et alertes Stackdriver : oubliez ELK !
Journaux des pilotes Stackdriver et rapports d’erreurs
Utilisez votre abstraction de journalisation préférée
SLF4J, Exploitation des communes, Lombok,… Assurez-vous juste qu’il écrit sur java.util.logging
Stockage et analyse dans BigQuery
Les journaux ne sont stockés que pendant 30 jours… mais vous pouvez les exporter dans BigQuery pour toujours Analyser les tendances de latence à long terme Résoudre quelque chose qui s’est passé il y a 6 mois
Laissez Google vous dire ce qui ne va pas
Les traces de stacktraces sont analysées automatiquement et groupées Nous a aidé beaucoup à repérer les erreurs subtiles
Pilote de pile Suivi
Analyser la latence par chemin de requête
Trouvez facilement les valeurs aberrantes
Mesures automatiques pour les services App Engine
Le suivi détaillé est offert gratuitement (pas de code)
Ajoutez vos propres travées avec du code
Basé sur OpenCensus
Comparer la distribution de latence entre les versions
Rapports automatiques ou créez votre propre
Profilage des pilotes de pile
Débogueur Stackdriver
Ajouter « point d’arrêt » dans votre code de production
Depuis votre IDE (supporte IntelliJ) ou depuis un éditeur web Pas de pénalité perf, vide en fait l’état variable
Ajouter des journaux supplémentaires à des points de code spécifiques
Plus jamais : « Si je venais thought about adding some logs …”
But let’s be honest: it’s mostly a very nice toy 🙂
Only helped us a couple of times in the last few years
Références : Martin Fowler on Serverless: https://martinfowler.com/articles/serverless.html GCP Serverless solutions: https://cloud.google.com/serverless/ App Engine: https://cloud.google.com/appengine/ Serverless Framework: https://serverless.com/
Jean-Marc Leoni : “serverless” chez AWS avec Spring et AWS batch pour traitement asynchrone long dans l’univers Java.
Le serverless pour le batch processing
On peut le faire avec du FaaS (souvent):
- Processing ligne à ligne (feature engineering, data cleaning)
- Données peu volumineuses
Mais parfois on ne peut pas (machine learning):
- Toutes les données doivent résider en RAM
- On ne peut pas distribuer
AWS Batch
Permet de définir des Job Definitions et de lancer des Jobs
Job Definition : une image docker, une ligne de commande et une quantité de CPU/RAM Job : une instance d’un job Definition qui est lancée sur un Compute Environement Queue :Compute Environnement : un file pour mettre les jobs en attente un ensemble de machines qui sont lancéesà la demande et sur lesquelles les jobs s’executent (évolue en nombre de CPU)
Et spring dans tout ça ?
Spring Batch
- Pratique pour définir des pipelines de traitement
- De la connectivié JDBC/JPA
Spring cloud
- Facilite l’intégration avec les providers de cloud
- DB managées
- Microservices
Pour terminer, voici un projet Github d’exemple créé par Jean-Marc Leoni pour lemeetup.