Créer un bureau HTML5 pour le cloud (Romain Huet) - Sud Web 2011
-
0:04 - 0:05Bien, bonjour à tous !
-
0:07 - 0:09Oui, tu voulais dire quelque chose, Thomas ?
-
0:10 - 0:14Très bien. Donc bonjour à tous, je m'appelle Romain.
-
0:14 - 0:19Comme l'a dit Rudy, je vais vous présenter un petit peu les solutions qu'on a élaborées
-
0:19 - 0:21dans le cadre de JoliCloud.
-
0:21 - 0:23dont je suis confondateur et CTO
-
0:23 - 0:26On a fait un usage intensif d'HTML5
-
0:26 - 0:28Donc ma mission va être de vous maintenir eveillés
-
0:28 - 0:31après cette pause déjeuner
-
0:31 - 0:34Alors juste pour resituer un petit peu le contexte
-
0:34 - 0:37pour bien comprendre les choix qu'on a fait et comment on a progressé
-
0:37 - 0:39On est parti d'un constat qui est que le Cloud remet vraiment en question
-
0:39 - 0:42les fondamentaux de l'informatique puisque
-
0:42 - 0:44on l'a vu encore ce matin avec Cloud9
-
0:44 - 0:48On utilise beaucoup plus d'applications en ligne maintenant
-
0:48 - 0:52que ce soit pour le traitement d'emails ou la gestion de documents
-
0:52 - 0:55et même maintenant avec Cloud9, l'édition de code dans le cloud
-
0:55 - 0:59Et de la même manière, toutes nos données sont aussi plus dans le cloud qu'auparavant
-
0:59 - 1:03c'est à dire qu'on a très peu de données localement sur nos machines
-
1:03 - 1:06Et en même temps les systèmes qu'on utilisent aujourd'hui sont encore relativement anciens
-
1:06 - 1:11axés sur la gestion du file system local d'un ordinateur
-
1:11 - 1:15Et alors avec l'arrivée des ordinateurs ultra-portables, les netbooks
-
1:15 - 1:19on voyait que l'usage des gens était vraiment lié à internet finalement
-
1:19 - 1:23c'était vraiment clef 3G, on se connecte dans un café, dans un train
-
1:23 - 1:28On se disait pourquoi finalement ne pas essayer de réinventer un peu l'usage de nos systèmes
-
1:28 - 1:32en utilisant la plateforme web qui est en fait la plateforme universelle pour ça
-
1:32 - 1:35Et c'était aussi pour nous une manière de dire
-
1:35 - 1:38on va essayer de proposer la meilleure expérience utilisateur possible
-
1:39 - 1:44et HTML5 et l'essor de la famille de toutes les technologies gravitant autour
-
1:44 - 1:48était pour nous la meilleure solution pour arriver à ça
-
1:49 - 1:54Donc la mission qu'on s'était fixée avec Jolicould avec Tariq Krim quand on a lancé ce projet
-
1:54 - 1:59C'est vraiment de dire on va rendre le cloud plus ouvert, plus simple, plus accessible à tous
-
1:59 - 2:04et proposer des solutions qui finalement vous aider les gens à accèder à internet
-
2:04 - 2:06et à gérer leur cloud plus aisément
-
2:06 - 2:08Donc on a développé plusieurs choses
-
2:08 - 2:15On a développé d'abord un Operating System essentiellement basé sur des technos web
-
2:15 - 2:19On a même été un peu fou puiqu'on a été jusqu'à commercialiser ça
-
2:19 - 2:20c'est un jolibook, donc on commercialisé
-
2:20 - 2:25c'est un objet un peu collector puisqu'il a été vendu exclusivment sur le marché anglais
-
2:25 - 2:27Et plus récemment une application Jolicloud
-
2:27 - 2:30qui est disponible pour tous les navigateurs modernes
-
2:30 - 2:34Mais ce dont on va vraiment s'intéresser aujourd'hui c'est le point commun à tous ces produits
-
2:34 - 2:42qui est le bureau HTML5 qui permet de finalement contrôler la machine
-
2:42 - 2:45et même d'aller un peu plus loin comme on le verra
-
2:45 - 2:48Alors tout d'abord je vais juste donner quelques fondamentaux
-
2:48 - 2:52sur la base de l'application HTML5 qu'on a faite
-
2:52 - 2:55Donc le web en 1997, c'était quand même ça ce qu'on pouvait faire de mieux
-
2:55 - 3:00donc on a quand même parcouru un long chemin sur le web
-
3:00 - 3:04Une application web avancée, qu'est ce que c'est finalement aujourd'hui ?
-
3:04 - 3:07C'est avant tout un client riche autonome
-
3:07 - 3:09Avant on avait un échange de pages avec le serveur
-
3:09 - 3:11ça va être maintenant quelque chose de très complexe
-
3:11 - 3:13qui va embarquer de la logique applicative
-
3:13 - 3:15on parlait avant de templating
-
3:15 - 3:18on va beaucoup être maintenant dans la programmation DOM
-
3:18 - 3:23au niveau des échanges avec le serveur, ça va être maintenant de la synchronisation de données
-
3:23 - 3:26et on parle aussi de persistence de l'état de l'application
-
3:26 - 3:29et même de mode déconnecté
-
3:29 - 3:33Donc là c'est un aperçu de l'application Jolicloud
-
3:33 - 3:38qui est le bureau de l'operating system
-
3:38 - 3:40Et on s'est dit d'abord
-
3:40 - 3:42Comment on va pouvoir implémenter cette application
-
3:42 - 3:45avec des technos modernes
-
3:45 - 3:46sans avoir justement à
-
3:46 - 3:52penser aux navigateurs anciens comme Internet Explorer
-
3:52 - 3:55qui évolue un peu moins vite que les navigateurs modernes
-
3:55 - 4:00Donc pour la structure, très succintement on a utilisé du flexible box model partout
-
4:00 - 4:02alors son support est encore expérimental
-
4:02 - 4:04ce qui fait qu'on a eu quelques petits soucis
-
4:04 - 4:06parfois de performances notamment
-
4:06 - 4:12sur les périphériques un peu... un peu comme les netbooks finalement
-
4:12 - 4:16beaucoup de media queries aussi pour gérer les différentes tailles d'écrans
-
4:16 - 4:20parce qu'il y a vraiment une grande diversité à ce niveau là
-
4:20 - 4:22et au niveau des composants de l'interface
-
4:22 - 4:25tout ce que vous pouvez voir sur cette interface
-
4:25 - 4:29va être uniquement des CSS en fait, il y a très très peu d'images
-
4:29 - 4:31donc au niveau des effets de la même façon
-
4:31 - 4:34c'est uniquement des transitions et des animations CSS
-
4:34 - 4:38parfois du canvas quand il s'agit de manipuler les images
-
4:38 - 4:41alors il y a deux choses qu'on a observé qui sont importantes à retenir
-
4:41 - 4:44si vous êtes amenés à utiliser des transitions ou des animations CSS
-
4:44 - 4:46c'est d'éviter quand même les animations infinies
-
4:46 - 4:49parce que sur des périphériques un peu low-spec comme des netbooks
-
4:49 - 4:52vous alllez avoir tendance à utiliser beaucoup de CPU
-
4:52 - 4:57et aussi ne jamais baser la logique applicative sur des callbacks de fin d'animation
-
4:57 - 5:00vous savez comme des webkit animation end ou des moz animation end
-
5:00 - 5:02parce que d'une part ils peuvent ne pas être supportés par le navigateur
-
5:02 - 5:04que vous êtes en train de 'targeter'
-
5:04 - 5:10bon voilà c'est une meilleure pratique d'avoir toujours la logique applicative séparée
-
5:10 - 5:12des effets purement graphiques
-
5:12 - 5:15Et rapidement au niveau du fonctionnement de l'application
-
5:15 - 5:22donc l'application consiste en une seule page HTML qui finalement est très très succinte
-
5:22 - 5:26c'est un mécanisme de chargement des scripts et des styles dynamiquement
-
5:26 - 5:30et puis quelque chose qu'il faut bien retenir dans le cadre de vos développements
-
5:30 - 5:32pour des applications un peu riches en HTML5
-
5:32 - 5:34c'est vraiment avoir une logique MVC
-
5:34 - 5:38c'est à dire qu'on est plus en train de dire on va modifier le DOM à la volée
-
5:38 - 5:40pour modifier tel ou tel élément
-
5:40 - 5:42c'est vraiment important d'avoir une vraie structure en place
-
5:42 - 5:46pour pouvoir dire : OK je vais avoir des modèles pour représenter mes données
-
5:46 - 5:51des vues qui vont me permettre justement de gérer la représentation de ces données à l'écran
-
5:51 - 5:54et puis des controleurs qui maintiendront l'état de l'application
-
5:54 - 5:57D'ailleurs y'a un excellent projet qui s'appelle Backbone.js que vous connaissez peut-être
-
5:57 - 6:01qui permet justement d'avoir une très bonne base pour ce genre de chose
-
6:03 - 6:08Donc là dans ce slide j'ai "embedder" l'application
-
6:08 - 6:11donc le bureau de JoliCloud
-
6:11 - 6:15donc tout ça c'est en CSS3
-
6:17 - 6:21donc là idem pour tout ce qui est animation
-
6:21 - 6:24la partie drag-n-drop par contre n'étant pas tout à fait finalisée
-
6:24 - 6:26dans HTML5
-
6:26 - 6:30elle est écrite un peu en javascript avec à la fois
-
6:30 - 6:32des petites choses HTML5 mais aussi
-
6:32 - 6:35des petites choses qui permettent d'avoir la compatibilité
-
6:37 - 6:39Alors maintenant on va rentrer un peu dans le vif du sujet
-
6:39 - 6:41parce que là on a quoi ? On a une application en HTML5
-
6:41 - 6:43qui se connecte au cloud
-
6:43 - 6:45qui finalement récupère des données
-
6:45 - 6:47les affiche à l'écran
-
6:47 - 6:48et ça fonctionne bien, ça se synchronise
-
6:48 - 6:51le problème maintenant c'est que quand on veut faire un operating system avec ça
-
6:51 - 6:53évidemment on va se retrouver dans des contextes où il faut absolument
-
6:53 - 6:55que l'application fonctionne hors-ligne
-
6:55 - 7:00Quand vous démarrez votre netbook ... ou votre ordinateur dans un train par exemple
-
7:00 - 7:02vous n'avez pas forcément de connexion avec vous
-
7:02 - 7:04donc il faut que ça marche hors-ligne
-
7:04 - 7:08Alors d'abord pour ce qui est des ressources de l'application
-
7:08 - 7:11c'est à dire faire que l'application va être fonctionnelle offline
-
7:11 - 7:17on a utilisé appcache, la technologie qui permet justement de lister
-
7:17 - 7:21l'ensemble des ressources que vous voulez mettre en cache dans le navigateur
-
7:21 - 7:24on l'a utilisé uniquement pour du javascript et du CSS finalement
-
7:24 - 7:28on a fait le choix de dire, l'ensemble des images
-
7:28 - 7:31qui sert au fonctionnement de l'application
-
7:31 - 7:36est converti en base64 et inliner dans les CSS
-
7:36 - 7:41c'est quelque chose qu'on a testé et qu'on a vraiment bien apprécié
-
7:41 - 7:43dans les tests qu'on a pu faire puisque
-
7:43 - 7:48même si cette conversion peut avoir un petit overhead en terme de taille
-
7:48 - 7:52vous allez avoir beaucoup moins de ressources à charger
-
7:52 - 7:56et donc en terme de latence réseau notamment avec des clefs 3G
-
7:56 - 7:59c'est quelque chose qui va vraiment améliorer les performances
-
7:59 - 8:04donc là si on prend l'exemple ici de cette image
-
8:04 - 8:08tous les navigateurs modernes sont capables d'afficher des images à partir de data
-
8:08 - 8:10de data URI
-
8:10 - 8:13donc maintenant l'application fonctionne en ligne
-
8:13 - 8:15le problème c'est qu'elle a pas encore de données pour l'utilisateur
-
8:15 - 8:18donc comment on va faire pour stocker les données de l'utilisateur
-
8:18 - 8:21et les rendre fonctionnelles hors-ligne ?
-
8:21 - 8:25Alors d'abord ce qu'on a fait, c'est une sorte d'abstraction de notre API
-
8:25 - 8:25qui se connecte au cloud
-
8:25 - 8:27de sorte que à chaque fois qu'on fait une requête
-
8:27 - 8:30pour aller chercher des données sur le cloud
-
8:30 - 8:32on va stocker l'ensemble de ces réponses JSON
-
8:32 - 8:34dans localstorage
-
8:34 - 8:41et en plus lorsque l'on récupère ces données localstorage pour le mode hors-ligne
-
8:41 - 8:44on va pouvoir avoir le même fonctionnement que lorsque l'application est en ligne
-
8:44 - 8:47autre avantage
-
8:47 - 8:50lorsque les données sont très récentes dans localstorage
-
8:50 - 8:52y compris lorsque vous êtes en ligne
-
8:52 - 8:55inutile de refaire cette requête, je viens de la faire
-
8:55 - 8:59de toute façon les données sont récentes, autant les exploiter
-
8:59 - 9:01ce qu'on a fait en plus encore une fois
-
9:01 - 9:04l'ensemble des images qui sont liées au bureau de l'utilisateur
-
9:04 - 9:07ou qui sont par exemples des avatars des utilisateurs
-
9:07 - 9:10sont également converties en base 64
-
9:10 - 9:11mises dans localstorage
-
9:11 - 9:13Alors il y a des technologies qui arrivent
-
9:13 - 9:15notamment FileSytem APIs
-
9:15 - 9:18le problème c'est qu'elle sont pas encore très répandues
-
9:18 - 9:21Elles sont encore au stade expérimental dans Chrome notamment
-
9:21 - 9:26donc on fait le choix de reprendre cette technique de LocalStorage qui fonctionne très bien
-
9:26 - 9:29Et donc bien sur il y a à gérer la synchronisation
-
9:29 - 9:31lorsqu'on revient online
-
9:31 - 9:36Alors maintenant c'est bien on a une application qui est capable de fonctionner hors-ligne
-
9:36 - 9:41mais comment on passe du mode hors-ligne au mode connecté ?
-
9:41 - 9:43et c'est finalement une problématique assez intéressante
-
9:43 - 9:46parce que dans les navigateurs y'a la propriété navigator.online
-
9:46 - 9:49mais elle est pas vraiment utile, elle est pas vraiment helpful pour ça
-
9:49 - 9:50puique finalement
-
9:50 - 9:54elle va être liée au fait que vous soyez connectés ou non au réseau
-
9:54 - 9:58et d'ailleurs elle est encore très peu implémentée dans les navigateurs
-
9:58 - 10:00Alors la solution qu'on a mise en place pour ça c'est de dire
-
10:00 - 10:03on va faire un test périodique de la connexion
-
10:03 - 10:06avec un appel XMLHTTPRequest au serveur
-
10:06 - 10:08l'avantage c'est que ça teste directement
-
10:08 - 10:10la possibilité d'atteindre votre serveur sur le réseau
-
10:10 - 10:13et donc de voir si vous êtes en ligne
-
10:13 - 10:17donc ça peut être une requête très très simple de type head par exemple
-
10:17 - 10:21et une stratégie qu'on a mis en place en supplément
-
10:21 - 10:25c'est de dire ben finalement si j'essaye d'accèder à ne ressource sur une API REST
-
10:25 - 10:27et qu'à ce moment précis, elle échoue
-
10:27 - 10:30dans ce cas je peux en déduire et signifier à l'utilisateur
-
10:30 - 10:32qu'il est passé en mode déconnecté
-
10:32 - 10:34et autre chose aussi
-
10:34 - 10:38supposons que vous soyez dans un train en train d'utiliser l'application en mode hors-ligne
-
10:38 - 10:40vous fermez votre ordinateur, vous revenez
-
10:40 - 10:43vous êtes dans un endroit maintenant connecté
-
10:43 - 10:47il serait quand même intéressant et judicieux de signifier immédiatement à l'utilisateur
-
10:47 - 10:48qu'il est maintenant en mode connecté
-
10:48 - 10:50donc on procdède à une détection pour savoir
-
10:50 - 10:54si l'utilisateur est actif, par exemple en regardant l'évènement mousemove
-
10:54 - 10:58mais ça peut être également en regardant un touch par exemple sur le mobile
-
10:58 - 11:02donc on va faire ici une rapide démo
-
11:02 - 11:05donc là on est en mode connecté sur l'application
-
11:05 - 11:09et je vais essayer de couper le réseau
-
11:09 - 11:12alors là je pourrais attendre un test périodique qui va arriver
-
11:12 - 11:15mais je vais immédiatement essayer d'accèder à une ressource
-
11:15 - 11:19donc là on constate que ... comment dire ?
-
11:19 - 11:21L'application est passée immédiatement en mode hors-ligne
-
11:21 - 11:24désactivant donc certaines des fonctionnalités
-
11:24 - 11:27parce qu'évidemment lorsque vous revenez en mode déconnecté
-
11:27 - 11:30l'utilisateur s'attend à ce que toutes ses données soient synchronisées
-
11:30 - 11:31dans le même état qu'il les a laissées
-
11:31 - 11:34donc y'a certaines choses pour lesquelles ça a du sens, d'autres moins
-
11:34 - 11:37et donc là je vais passer en mode connecté maintenant
-
11:40 - 11:42voilà
-
11:42 - 11:44et je vais immédiatement redevenir actif sur l'application
-
11:44 - 11:50donc le navigateur a détecté qu'ici je suis repassé en mode en ligne
-
11:50 - 11:52et l'application est de nouveau fonctionnelle
-
11:52 -avec l'ensemble de ses fonctionnalités
- Title:
- Créer un bureau HTML5 pour le cloud (Romain Huet) - Sud Web 2011
- Description:
-
HTML5 et les technologies Open Web constituent la plate-forme applicative universelle. Y compris pour bâtir un système d'exploitation.
Jolicloud construit l'interface portable du Cloud et propose l'un des exemples les plus avancés de l'utilisation de la plate-forme Web dans un contexte de production. En plus d'être un bureau en ligne, Jolicloud est aussi l'interface de Joli OS, un système d'exploitation permettant d'aller au-delà des possibilités offertes par le navigateur.
Cette conférence présentera l'architecture d'une telle application HTML5 et comment aborder les différentes problématiques telles que la gestion du mode hors-ligne ou encore l'échange de données en temps réel.
Nous évoquerons les principaux challenges liés au déploiement d'applications HTML5 et comment tirer parti de ces technologies dès aujourd'hui.
- Video Language:
- French
- Duration:
- 31:11
Frank Taillandier edited French subtitles for Créer un bureau HTML5 pour le cloud (Romain Huet) - Sud Web 2011 | ||
Frank Taillandier edited French subtitles for Créer un bureau HTML5 pour le cloud (Romain Huet) - Sud Web 2011 | ||
Frank Taillandier edited French subtitles for Créer un bureau HTML5 pour le cloud (Romain Huet) - Sud Web 2011 | ||
rudyrigot added a translation |