Web

À quoi sert Le Cloud ?

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 !

A lire aussi : Plateforme éducative Oze Yvelines : numérique au service de l'enseignement

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 lire aussi : Outils collaboratifs 2023 : optimisez votre travail d'équipe en ligne

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.