Architecture mobile moderne John Thiriet Mobility Technical Manager @Cellenza Microsoft MVP
Jeu-concours Twitter Un pack Surface Go à gagner* ! 1 2 3 1 Prenez une photo de la session à laquelle vous participez 2 Ajoutez #experienceslive et #experiences18 à votre tweet 3 Partagez ! 2 3 *Voir toutes les conditions dans le règlement lié au jeu concours Le tweet cumulant le plus de Retweets remporte la Surface Go (1 lot/jour) #experienceslive
Nous devrions moins mettre l’accent sur la qualité de façon à pouvoir livrer plus de fonctionnalités lors de notre prochaine release Quelqu’un qui a changé de poste depuis
Quizz ! Que signifie « architecture » ?
Que signifie « architecture » ? Décisions qui doivent être prises en début de projet ? Décisions qu’on aurait aimé avoir prises en début de projet ? Tout ce qui est important, peu importe ce que c’est ? Décisions difficiles à changer plus tard ? Un peu tout ça en fait Décisions difficiles à changer ? (Par exemple langage de programmation ou Framework applicatif)
Le projet mobile idéal Ou comment chacun tire la couverture vers soi
L’application mobile idéale Du point de vue de l’utilisateur 1 1 Une application légère 2 Une application rapide 3 Une application stable 2 Une application intelligente 2 3 Intelligent signifie pro-active, qui me donne les informations les plus pertinentes au moment le plus pertinent 4
Le projet mobile idéal 1 2 3 4 Du point de vue du développeur 1 Facile à développer 2 Facile à maintenir 3 Facile à déployer 2 Facile à tester 2 3 Pas forcément les dernières nouveautés tout le temps mais c’est important 4
Le projet mobile idéal 1 2 3 4 Du point de vue du business 1 Satisfaction utilisateur 2 Bonnes métriques 3 Application sécurisée 2 Facilement scalable 2 3 Des utilisateurs qui reviennent souvent sur l’application Analytics poussé Un investissement contrôlé La possibilité de tester de se déployer sur de nouveaux marchés 4
Le projet mobile idéal Utilisateur Une application légère, rapide, stable et qui me comprend. Développeur Une application facile à créer, maintenir, deployer et tester. Business Mes utilisateurs sont satisfaits, je peux suivre la qualité de ce que je livre et réagir au mieux aux opportunités du marché.
On ne peut pas échanger la qualité pour le coût en informatique On a besoin de livrer souvent de nouvelles fonctionnalités ou des améliorations Ce qui est important ce n’est pas le nombre mais la qualité et la sécurité Le plus important c’est les utilisateurs, ils viennent de toute part (Browser, Mobile, IoT Devices) Ou alors vraiment pas longtemps
La qualité Une interface utilisateur agréable Qualité externe Peu de défauts Qualité externe Qualité interne Une bonne architecture modulaire
La qualité Une interface utilisateur agréable Peu de défauts Visible par les utilisateurs et les clients Visible par les développeurs et le business Une bonne architecture modulaire
Design Stamina Hypothesis https://martinfowler.com/bliki/DesignStaminaHypothesis.html
Une application mobile c’est quoi ? Pour remettre un peu de contexte à la qualité L’objectif est que l’ensemble fonctionne parfaitement
Comment architecturer son projet On a besoin de livrer souvent de nouvelles fonctionnalités ou des améliorations Ce qui est important ce n’est pas le nombre mais la qualité et la sécurité Ou l’histoire des trois petits cochons
L’architecture choisie dépend des objectifs Entre construire une maison et un immeuble il y a une différence. En informatique On utilise souvent des techniques de maçon classique pour construire des grattes-ciels Mais il faut toujours du béton L’architecture dépend du besoin mais il y a toujours des lignes directrices et des tendences.
DevOps Ce béton c’est le DevOps Il y a des impondérables et il faut s’entourer d’outils DevOps En mobilité, le meilleur outils DevOps c’est AppCenter
AppCenter
Démo - AppCenter 11 minutes de démo Timing de début 12 minutes Timing de fin 23 minutes Commit/Push d’un code qui fix un clic sur un bouton Démonstration du build en cours Tour dans AppCenter (Organisation, Deploiement etc...) Push notifications depuis le portail Après update finie ouverture de l’application, popup de mise à jour et téléchargement d’update
AppCenter Construit, teste, déploie et suit vos applications pour chaque plateforme. Intégration continue Supporte GitHub, VSTS ou BitBucket Supporte les applications mobiles hybrides et natives Lance des tests UI automatisés Met à disposition l’application Monitoring Crash et error reporting Analytics et live events Exporter ces données où vous le souhaitez Push notifications Simplifie l’envoi de notifications push Supporte iOS, Android et Windows Fournit des APIs Analytics : Who? What? Where? When? Why? How? AppCenter répond aux problématiques : -
Un projet mobile utilisant AppCenter Du point de vue du business Du point de vue du développeur Du point de vue de l’utilisateur 1 1 1 1 Satisfaction utilisateur 2 Bonnes métriques 3 Application sécurisée 2 Facilement scalable 1 Facile à développer 2 Facile à maintenir 3 Facile à déployer 2 Facile à tester 1 Une application légère 2 Une application rapide 3 Une application stable 2 Une application intelligente 2 2 2 3 3 3 Des utilisateurs qui reviennent souvent sur l’application Analytics poussé Un investissement contrôlé La possibilité de tester de se déployer sur de nouveaux marchés 4 4 4
Le back-end Maintenant qu’on a parlé du process et du suivi de dev on va parler un peu de ce qui permet à une application de récupérer ses informations Comme vu précédemment, une application mobile c’est également un backend
Le back-end L’accès à des données distantes implique des choix techniques Localisation de mes utilisateurs Type de connexion utilisée Présence ou non d’un mode offline Niveau de sécurité Plus de lecture ou plus d’écriture Format de données #experiences18
Les certitudes Afin de proposer des applications performantes et sécurisées certains choix font consensus Communication JSON est le format d’échange privilégié Pour charger un écran il ne faut pas plus d’un appel réseau Plus le serveur est prêt de l’utilisateur, mieux c’est OpenID/OAuth (authentification et l’autorisation) Données Le mobile déporte sa logique métier au serveur. Le mode offline est compliqué à gérer Tout ce dont l’application n’a pas besoin ne doit pas être chargé Il n’y a pas que SQL pour stocker des données Chaque plateforme propose des facilités de stockage Une bonne application est Async et secure by design et ça nécessite un backend compatible JSON vs Protobuf etc... SSL is not enough mais la base Moins le mobile est intelligent, plus l’application est facile à mettre à jour Sécurité => Ce que je n’ai pas, tu ne peux pas me le voler
Les certitudes Afin de proposer des applications performantes et sécurisées certains choix font consensus Cloud On a de moins en moins besoin d’administrer des machines Avènement des microservices et du serverless Interconnexion entre systèmes facilitée API Management pour exposer à tous vos APIs existantes Sécurité La sécurité des données est au cœur des esprits SSL est un strict minimum Toute donnée non persistée sur le mobile est moins vulnérable Contraintes légales et géographiques Utiliser les fonctionnalités de chiffrement des plateformes Une bonne application est Async et secure by design et ça nécessite un backend compatible JSON vs Protobuf etc... SSL is not enough mais la base Moins le mobile est intelligent, plus l’application est facile à mettre à jour Sécurité => Ce que je n’ai pas, tu ne peux pas me le voler
Démo – Backend moderne 10 minutes de démo Timing de début 30 minutes Timing de fin 40 minutes Démo LogicApp (création d’une logic app, explication de la version finie) Démo Azure Function (voir le code dans VS2017) expliquer le concept etc...
API Management Api Management
Intelligence artificielle Cognitive Services dans le cloud Mais utiliser les fonctionnalités d’IA dans le mobile directement : - CoreML - TensorFlow
Le future des architectures pour le mobile Le temps où on déployait manuellement nos propres machines s’éloigne plus que jamais grâce à Azure Besoin d’un serveur ? Non, besoin d’API Voire juste de fonctions Utiliser Cosmos Db pour le stockage de données Besoin de tout réécrire ? API Management pour exposer toutes vos APIs de manière propre Logic Apps pour définir tous vos workflows Besoin d’intégrer de l’IA Azure propose tout ce qu’il faut pour démarrer Les plateformes mobiles elles-mêmes intégrent des capacités IA
Un projet mobile utilisant AppCenter et Azure Du point de vue du business Du point de vue du développeur Du point de vue de l’utilisateur 1 1 1 1 Satisfaction utilisateur 2 Bonnes métriques 3 Application sécurisée 2 Facilement scalable 1 Facile à développer 2 Facile à maintenir 3 Facile à déployer 2 Facile à tester 1 Une application légère 2 Une application rapide 3 Une application stable 2 Une application intelligente 2 2 2 3 3 3 On a coché pas mal de cases, il ne vous reste qu’à coder l’app 4 4 4
Quelle techno mobile ? Xamarin
Notez maintenant cette session Rendez-vous sur la fiche de la session sur http://experiences18.microsoft.fr Cliquez sur le bouton « Evaluer » #experienceslive
Merci. @johnthiriet