2021 : Horizons Cloud pour le Web & Mobile by VISEO

Tribune d'expert

2021 : Horizons Cloud pour le Web & Mobile

L’hégémonie du cloud est belle et bien là.

 

Les grands acteurs qui étaient encore réfractaires il y a quelques années ont pour la plupart entamé leur migration vers le cloud ou posé les fondations de nouvelles infrastructures cloud natives.

 

Les applicatifs clients, entendons par là les solutions web et mobiles, voient également petit à petit le cloud bouleverser leurs usages. Firebase (1), par exemple, la plateforme de services opérée par Google et parfois qualifiée de façon réductrice de backend-as-a-service, permet une projection rapide vers ces nouveaux usages.

 

Pour autant comment un développeur web ou mobile pourrait-il se projeter dans ce nouvel univers ? Thibaud, Référent technique / Lead Tech / Practice Manager VISEO, vous répond !

Journey d’un développeur web mobile vers l’univers cloud

Appréhender le serverless comme point de départ de cette nouvelle aventure semble pertinent, ce paradigme offrant un chemin d’apprentissage plutôt abordable.

 

La convergence des langages de programmation modernes (Kotlin, Swift, TypeScript entre autres) tend à faciliter l’adaptation d’un développeur d’une plateforme à l’autre, en effet, un développeur Android, iOS ou web pourra y retrouver aisément ses repères de null-safety, d’immutabilité et ses réflexes d’implémentations fonctionnelles.

 

Qu’en est-il alors pour le cloud ? Et plus particulièrement pour le serverless ?

 

L'approche serverless permet notamment de définir des API web sous forme de code à travers la définition de fonctions devant respecter un certain formalisme suivant la plateforme cloud.

 

Une fois déployées ces fonctions sont accessibles via des endpoints que nos clients applicatifs vont pouvoir appeler afin de requêter ou pousser de la donnée.

 

A l'appel d'une fonction, le provider cloud va instancier ou réutiliser un container d'exécution disposant d'une mémoire prédéfinie (mais configurable) et souvent limitée de base, ces containers doivent donc être considérés comme des "resource-constrained systems". Les développeurs mobiles, Android et iOS, ainsi que les développeurs web soucieux des problématiques de web performances, retrouveront ici rapidement leurs réflexes d'optimisation.

 

Les plateformes exposant du serverless proposent différents runtimes pour ces containers, le plus souvent Java, Node.js ou Python.

 

Les différents rapports et benchmarks disponibles sur la toile font généralement état de meilleures performances au démarrage et, dans certains cas, à l'exécution pour les runtimes basés sur des langages interprétés - choix d’ailleurs recommandé par AWS pour des cas d’utilisation à latence minimale et trafic variable (2).

 

Ainsi, le Swift n'étant globalement pas supporté pour le moment et visant les performances les plus optimales, nous tendrons à nous orienter vers le TypeScript et les moteurs d'exécution Node.js.

 

Comme évoqué précédemment dans ce billet, le choix de TypeScript comme "langage cloud" facilitera la transition des développeurs mobiles vers ce nouvel univers, les développeurs web, quant à eux, pourront se passer de cette appréhension, tant TypeScript est désormais une référence dans cet éco-système.

Vers une stratégie web mobile cloud-centric

L’objectif d’une telle stratégie est évidemment de s’appuyer au mieux sur les possibilités et les capacités offertes par un tel environnement.

 

La première idée qui pourrait nous venir en tête serait de centraliser au maximum la logique métier dans le cloud, se dessine alors une notion nouvelle de "business logic gateway".

 

On retrouve également à travers cette idée le design de backend-for-frontend, où il est question de définir pour les clients un interlocuteur pouvant fournir une réponse adaptée à leur demande et sous un format optimisé à leur besoin.

 

Cette gateway trouve tout son sens pour des applications connectées dont le fonctionnement principal ne peut se passer d’une connexion internet. Dans une telle situation, pourquoi ne pas envisager de capitaliser la logique métier dans une brique centralisée au niveau cloud plutôt que de la dupliquer sur n plateformes clientes ?

 

Un bénéfice inhérent serait la capacité d’appliquer des mises à jour de comportements métiers sans avoir à republier les applications mobiles, avec toute la cérémonie et les contraintes qu’elles peuvent occasionner.

 

Ici, nous tendons à atteindre un objectif de capitalisation qui par transitivité nous fera gagner en productivité.

 

Notre deuxième idée serait de s’appuyer sur la puissance des sdk web et mobiles mis à disposition par les providers cloud et de leur déléguer des tâches complexes et récurrentes.

 

Combien de temps avons-nous déjà passé - pourrait-on même dire perdu ? - à implémenter les fonctionnalités suivantes sur de nombreux projets :

 

- Persistance et gestion de données offline

- Réception et traitement de données temps-réel

- Synchronisation de données client/serveur

 

Aujourd’hui, dans la grande majorité des cas, nous pourrons déléguer l’implémentation et la gestion de ces problématiques à ces sdk, nous apportant gain de productivité et sûreté de fonctionnement.

 

Évidemment cela implique que nos données soient sauvegardées dans le cloud et que leur modélisation se prête au mode de stockage choisi (arbre JSON ou base de données NoSQL dans le cadre de Firebase uniquement).

 

L’application de ces 2 premiers préceptes permettrait déjà d’alléger grandement l’implémentation des applications web et mobiles compatibles avec cette approche cloud-centric. Et leur mise en œuvre constituerait le premier cap du journey entrepris.

 

Bien d’autres concepts à appréhender, et autant de défis resteraient évidemment à entreprendre.

 

La suite dans un deuxième billet à venir prochainement.

 

Références :

1) https://firebase.google.com/

 

2) https://docs.aws.amazon.com/whitepapers/latest/serverless-architectures-lambda/language-runtime-performance.html