Return to Video

Developing collaborative applications in the cloud (Ruben Daniëls, Lieke Arends) - Sud Web 2011

  • 0:07 - 0:10
    Ok, bienvenue à tous !
  • 0:10 - 0:13
    Je suis ici aujourd'hui avec Lieke pour vous parler de Cloud9,
  • 0:13 - 0:19
    un IDE dans le cloud, avec lequel vous pouvez accéder à votre code de n'importe où, n'importe quand.
  • 0:20 - 0:26
    Je suis Ruben Daniels, co-fondateur et directeur de Ajax.org, et Cloud9.
  • 0:26 - 0:32
    Je développe en Javascript depuis 1999.
  • 0:32 - 0:36
    Ça fait un moment, et javascript a beaucoup évolué.
  • 0:36 - 0:45
    Je suis l'auteur et le créateur de la plateforme Ajax.org, qui est une librairie d'interface qu'on utilise dans Cloud9.
  • 0:45 - 0:52
    Notre compagnie comprend 20 personnes, et on essaie de révolutionner le développement
  • 0:52 - 0:55
    de code, dans le cloud.
  • 0:55 - 1:01
    Bonjour, je m'appelle Lieke, je parle français, mais je ne fais pas cette présentation en français,
  • 1:01 - 1:06
    parce que Ruben ne parle pas, et moi je ne parle pas "tant" bien.
  • 1:06 - 1:13
    Donc, il y a de la traduction, mais je m'intéresse : combien de gens peuvent entendre l'anglais ?
  • 1:13 - 1:17
    C'est presque toute la salle.
  • 1:17 - 1:26
    Je vais parler anglais. Je fais partie dAjax.org depuis 2009, dans les relations avec les développeurs.
  • 1:33 - 1:40
    Donc, ce dont on va parler aujourd'hui : premièrement, une réponse à la question "Pourquoi le cloud ?"
  • 1:40 - 1:44
    Ou plutôt, "Pourquoi le cloud pour des développeurs ?"
  • 1:44 - 1:50
    Je vous ferai une démo de l'IDE Cloud9, qui est notre vision de la manière de faire,
  • 1:50 - 1:57
    et ensuite nous parlerons de collaboration, que nous imaginons dans le futur du développement dans le cloud.
  • 1:57 - 2:04
    Je vais laisser Lieke commencer, elle va vous expliquer pourquoi le cloud est important.
  • 2:05 - 2:12
    Nous pensons que le développement se fera dans le cloud, donc prenons un peu de recul.
  • 2:12 - 2:17
    Il se peut que vous vous demandiez : pourquoi travailler dans le cloud ?
  • 2:17 - 2:22
    Et d'ailleurs, c'est quoi cette chose qu'on appelle le "cloud" ?
  • 2:23 - 2:25
    Alors, jetons un oeil au cloud...
  • 2:25 - 2:34
    Le cloud, c'est l'étape qui suit la virtualisation, qui nous permet de ne plus nous soucier du matériel,
  • 2:34 - 2:43
    mais quand même toujours de quel OS tourne, comment installer et configurer des SGBD comme MySQL,
  • 2:43 - 2:49
    et il faut toujours garder un oeil sur chaque serveur, on doit s'inquiéter de leur dimensionnement.
  • 2:49 - 2:56
    Donc, il y a deux types de systèmes que l'on appelle "cloud" :
  • 2:56 - 2:59
    il y en a qui sont des constructions d'APIs sur des systèmes de gestion de virtualisation,
  • 2:59 - 3:04
    ce qui est proche de "Infrastructure as a Service" (IaaS)
  • 3:04 - 3:12
    et des systèmes où la couche remonte au-dessus de l'API, "Platform as a Service" (PaaS)
  • 3:12 - 3:19
    Pour moi, la promesse du cloud, c'est que l'intégration remonte au niveau de l'API,
  • 3:19 - 3:23
    que l'on utilise en construisant des applications au-dessus.
  • 3:23 - 3:27
    Ça inclut donc l'espace disque, la base de données, et la puissance de calcul.
  • 3:27 - 3:34
    Ce niveau de cloud est pour l'instant surtout une promesse, même si Google App Engine
  • 3:34 - 3:37
    et Heroku sont plutôt loin dans le concept.
  • 3:37 - 3:42
    Donc, regardons un exemple ; il est plutôt simple, peut-être inutile,
  • 3:42 - 3:45
    mais j'aimerais vous expliquer ce que le cloud signifie.
  • 3:45 - 3:49
    Donc, disons que vous avez une boîtes de livres ; vous devez la stocker,
  • 3:49 - 3:52
    et plus tard, vous voudrez récupérer des livres.
  • 3:52 - 4:02
    Avant la virtualisation, vous deviez construire un abri ; pour protéger vos livres, avec une porte verrouillable,
  • 4:02 - 4:07
    mais maintenant, avec la virtualisation, l'abri est déjà prêt.
  • 4:07 - 4:13
    Vous avez quand même besoin de gérer l'espace à l'intérieur, construire les étagères,
  • 4:13 - 4:17
    et stocker les livres vous-mêmes.
  • 4:17 - 4:25
    Avec le cloud, vous obtenez un gars, ou un robot, vous lui donnez votre stock de livres,
  • 4:25 - 4:30
    il les stocke pour vous, et vous pouvez les lui redemander quand vous voulez.
  • 4:30 - 4:38
    C'est un exemple simple, mais il montre bien les niveaux de pré-intégration.
  • 4:38 - 4:43
    Alors, quelle est la fonctionnalité la plus utile du cloud ?
  • 4:43 - 4:49
    Premièrement, gérer le dimensionnement des serveurs.
  • 4:49 - 4:57
    Imaginez que vous avez une application sociale, vous commencez avec quelques utilisateurs,
  • 4:57 - 5:02
    et vous le faites tourner sur une VM chez Amazon.
  • 5:02 - 5:06
    Soudainement, Justin Bieber remarque votre appli, et il tweete dessus.
  • 5:06 - 5:12
    Et hop, 8 million d'adolescentes excitées, qui embourbent soudainement sur vos serveurs !
  • 5:12 - 5:18
    Que votre business model soit construit pour ça, c'est pas la question !
  • 5:18 - 5:22
    Et du coup, vos serveurs explosent...
  • 5:22 - 5:27
    Il faut que vous puissiez gérer vos ressources back-end rapidement, donc que faire ?
  • 5:27 - 5:36
    Il faut démarrer d'autres instances, et un balanceur de charge, mais d'abord, il faut gérer le dimensionnement de votre code !
  • 5:36 - 5:41
    La plupart de vos applications avec des fonctionnalités sociales, ou des bases de données,
  • 5:41 - 5:45
    ne peuvent pas se redimensionner horizontalement, sans une étude approfondie ;
  • 5:45 - 5:47
    c'est donc un cauchemar !
  • 5:47 - 5:54
    Pas juste à cause de lui, mais à cause du coût pour architecturer et dimensionner votre application
  • 5:54 - 5:59
    sans même savoir si elle sera populaire ou non.
  • 5:59 - 6:07
    L'infrastructure dans le cloud résoud ce problème ; les APIs sont exactement construites pour le dimensionnement.
  • 6:07 - 6:13
    En utilisant cet outil de dimensionnement tout prêt, vous pouvez dimensionner d'1 utilisateur à 1 million,
  • 6:13 - 6:15
    puis redescendre à 1 utilisateur !
  • 6:15 - 6:23
    Et ceci, sans le coût de le prévoir à l'avance, ou les pertes dûes à l'échec face à la popularité soudaine !
  • 6:23 - 6:28
    En gros, le cloud sauve du temps et de l'argent,
  • 6:28 - 6:33
    et les développeurs peuvent se concentrer sur ce qu'ils aiment faire le plus : développer des applications !
  • 6:33 - 6:39
    Ils peuvent se concentrer sur les fonctionnalités demandées par les utilisateurs.
  • 6:39 - 6:43
    Je pense qu'on peut se mettre d'accord pour dire que le cloud, c'est un truc sympa.
  • 6:43 - 6:45
    Ruben ?
  • 6:45 - 6:49
    Qu'est-ce que ça veut dire pour le développement ?
  • 6:49 - 6:54
    Les plateformes cloud fournissent un SDK, que vous installez sur votre machine,
  • 6:54 - 6:59
    et vous espérez que tout marchera pareil sur votre machine et dans le cloud, mais ce n'est jamais le cas.
  • 6:59 - 7:04
    Regardons App Engine, dans Google, qui embarque Big Table.
  • 7:04 - 7:08
    Big Table est cette énorme infrastructure dans le cloud pour stocker des données ;
  • 7:08 - 7:11
    vous ne pouvez pas l'installer sur votre PC.
  • 7:11 - 7:17
    Donc, vous devez simuler ça, quand vous installez ce SDK, vous simulez l'environnement cloud.
  • 7:17 - 7:22
    Et ce n'est jamais parfait ; vous aurez toujours le cas où votre application marche localement,
  • 7:22 - 7:28
    et vous l'uploadez, et elle ne marche pas, à cause de certaines différences.
  • 7:28 - 7:39
    Donc, c'est difficile, vous ne pouvez pas tester entièrement votre application, et il faut une solution.
  • 7:39 - 7:44
    Cloud9, c'est notre vision d'une solution au problème.
  • 7:44 - 7:50
    Le code que vous développez ne vit pas sur votre machine, mais dans le cloud,
  • 7:50 - 7:59
    vous développez dans le cloud, et puisque c'est là qu'il vit, vous pouvez accéder toute l'API, dont Big Table.
  • 7:59 - 8:03
    Donc quand vous buildez l'application, il n'y a pas de problème.
  • 8:03 - 8:08
    Vous pouvez lancer et débuguer dans le même environnement aussi.
  • 8:08 - 8:12
    Un autre avantage : vous n'avez pas à télécharger et installer un SDK,
  • 8:12 - 8:21
    sur votre système, qui est sans doute différent de celui du développeur qui a créé le SDK.
  • 8:21 - 8:28
    Tous ces problèmes s'en vont, vous pouvez commencer à faire ce que vous aimez faire en tant que développeur :
  • 8:28 - 8:30
    écrire du code.
  • 8:30 - 8:38
    Maintenant, prenons ce scénario, vous êtes un nouveau développeur, vous rejoignez une compagnie,
  • 8:38 - 8:41
    qui a distribué une web-app il y a un an ;
  • 8:41 - 8:45
    les clients appellent parce qu'ils ont entendu parler d'une nouvelle technologie,
  • 8:45 - 8:49
    et ils veulent que la web-app la supporte.
  • 8:49 - 8:56
    Pour ajouter cette fonctionnalité convenablement, vous avez besoin de tout l'environnement,
  • 8:56 - 9:05
    le serveur, la base de données, scripts pour le déploiement, et d'installer tout ça.
  • 9:05 - 9:10
    Il faut que vous trouviez votre chemin dans ce système : discuter avec les administrateurs,
  • 9:10 - 9:14
    trouver les mots de passe, comprendre la procédure de déploiement...
  • 9:14 - 9:21
    Du coup, avant d'avoir créé un environnement de développement que vous pouvez utiliser
  • 9:21 - 9:28
    sans avoir à modifier du code en live, vous devez passez une éternité à faire tout ça.
  • 9:28 - 9:33
    Ce problème est une réalité pour beaucoup de développeurs.
  • 9:33 - 9:39
    Imaginez que vous tentiez d'ajouter une fonctionnalité, ou de résoudre un bug,
  • 9:39 - 9:44
    maintenant, imaginez ça : un environnement de développement qui tourne dans le cloud
  • 9:44 - 9:50
    est ce qui est utilisé pour fabriquer cette application.
  • 9:50 - 9:57
    Tout l'ensemble d'outils, d'éditeurs et de processeurs sont maintenant disponibles
  • 9:57 - 10:00
    en entrant une simple URL dans le navigateur.
  • 10:00 - 10:09
    En tant que développeur, vous pouvez démarrer immédiatement, améliorer votre application,
  • 10:09 - 10:13
    et tester sur une ferme cloud de test.
  • 10:13 - 10:18
    Quand vous avez testé le nouveau code, et avec succès,
  • 10:18 - 10:22
    vous pouvez cliquer sur "déployer en prod", et le client est content !
  • 10:22 - 10:29
    Vous n'avez pas à perdre de temps à faire l'admin système, ou à répéter vos efforts !
  • 10:29 - 10:36
    Vous pouvez avoir tout l'environnement de développement d'un projet derrière une simple URL,
  • 10:36 - 10:41
    et votre vie est soudainement bien plus heureuse !
  • 10:43 - 10:50
    Je vais vous montrer comment un IDE dans le cloud peut marcher.
  • 10:54 - 11:04
    C'est notre site web, c9.io, et vous ne le voyez pas, parce qu'on a deux écrans...
  • 11:12 - 11:20
    Donc, vous pouvez vous loguer avec votre compte GitHub ; qui en a un ?
  • 11:20 - 11:30
    GitHub est un site qui héberge votre code source, avec un aspect social.
  • 11:30 - 11:38
    Pour les gens qui ont un compte c'est facile ; sinon, vous pouvez créer un compte avec Cloud9.
  • 11:38 - 11:43
    Ici, vous avez tous vos projets ; ils vivent tous dans le cloud.
  • 11:43 - 11:52
    Vous pouvez les ouvrir, en les clonant depuis GitHub.
  • 11:52 - 11:59
    On ouvre le projet Node.JS, par exemple.
  • 11:59 - 12:04
    Comme vous voyez, vous pouvez reconnaître des éléments d'IDE habituels.
  • 12:04 - 12:11
    Un éditeur, un arbre de fichiers, et des éléments d'interface pour vous aider dans certaines tâches.
  • 12:11 - 12:21
    Nous voulons cet éditeur innovant, meilleur que les éditeurs que vous connaissez, dans Eclipse, par exemple,
  • 12:21 - 12:26
    ou dans d'autres IDEs important, ou des éditeurs de textes.
  • 12:26 - 12:36
    Quand nous l'avons construit, en septembre 2010, nous l'avons présenté à une conférence, "JS conf",
  • 12:36 - 12:41
    et immédiatement, les gars de Mozilla qui construisaient un éditeur sont venus nous voir :
  • 12:41 - 12:50
    "votre éditeur est plus rapide, on pourrait travailler ensemble, et mêler nos efforts"
  • 12:50 - 12:56
    Et donc, c'est ce qu'on a fait, on a travaillé avec Mozilla pour le rendre meilleur et plus rapide.
  • 12:56 - 13:01
    Et maintenant, on a une vraie communauté de quelques centaines de gens qui donnent du code,
  • 13:01 - 13:06
    et qui rendent l'éditeur encore meilleur, avec des raccourcis vim pour ceux qui aiment.
  • 13:06 - 13:11
    La coloration syntaxique, et toutes ces choses que vous voulez pour en faire le meilleur éditeur
  • 13:11 - 13:17
    au monde, point final, le détail étant qu'il tourne dans un navigateur.
  • 13:17 - 13:23
    Le truc cool avec cet éditeur, c'est qui se dimensionne dynamiquement,
  • 13:23 - 13:29
    même avec 100000 lignes de code, il serait toujours aussi rapide ; il ne rend que la partie que vous voyez.
  • 13:29 - 13:39
    Cloud9 utilise ACE, cet éditeur, il est open-source, sur ace.ajax.org
  • 13:39 - 13:47
    et Cloud9 y ajoute notamment des onglets pour naviguer à travers les fichiers.
  • 13:47 - 13:54
    et les fichiers vivent dans le cloud, donc vous y accéder dans le navigateur,
  • 13:54 - 14:02
    et on supporte l'offline, donc sans connexion, certains fichiers restent disponibles.
  • 14:02 - 14:06
    Dans les versions futures, il y aura un support complet de la synchronisation,
  • 14:06 - 14:09
    on en a fait une démo le mois dernier.
  • 14:09 - 14:15
    Tout votre projet se synchronise automatiquement avec votre système de fichier local.
  • 14:15 - 14:20
    Vous pouvez y accéder dans le train.
  • 14:20 - 14:25
    Créons une application de zéro.
  • 14:35 - 14:39
    Une application Hello World...
  • 15:02 - 15:09
    On commence en créant un fichier javascript.
  • 15:14 - 15:19
    On l'appelle "HelloWorld", fichier vide.
  • 15:19 - 15:27
    On crée un fichier javascript qui s'exécute côté serveur, qui tourne grâce à Node.JS.
  • 15:27 - 15:31
    Qui ici connaît Node.JS ?
  • 15:31 - 15:36
    Pour ceux qui ne connaissent pas, c'est un runtime javascript, qui utilise V8,
  • 15:36 - 15:44
    et exécute du javascript côté serveur, en étant très orienté sur les entrées/sorties asynchrones.
  • 15:44 - 15:52
    Vous utilisez un style de développement orienté "événements", comme les événements dans le navigateur,
  • 15:52 - 15:54
    sauf qu'on est dans le serveur.
  • 15:54 - 15:57
    Pour toutes les opérations qui peuvent prendre du temps, comme la lecture d'un fichier,
  • 15:57 - 16:05
    vous passez un callback, qui est retourné quand le contenu du fichier est chargé.
  • 16:05 - 16:08
    Ça vous autorise à faire beaucoup de choses en même temps,
  • 16:08 - 16:13
    et de ne pas bloquer votre thread principal.
  • 16:13 - 16:18
    Donc, créons un petit serveur HTTP.
  • 16:27 - 16:32
    On crée une classe HTTP.
  • 16:38 - 16:47
    Ça c'est le callback, et il a deux paramètres, "request" et "response".
  • 16:58 - 17:02
    On lui demande d'écouter sur le port 80.
  • 17:02 - 17:10
    Puisqu'il tourne dans le cloud, il va nous lever une erreur, parce qu'on n'a pas le droit d'écouter sur le port 80.
  • 17:10 - 17:14
    Regardons... Je clique sur "debug"...
  • 17:14 - 17:21
    La boîte de dialogue me propose d'ajouter des arguments, mais je ne veux pas.
  • 17:21 - 17:24
    Et j'obtiens mon erreur.
  • 17:24 - 17:28
    C'est exécuté dans le serveur, qui me dit que je ne peux pas accéder ce port,
  • 17:28 - 17:35
    il faut que j'utilise le port qui est dans cette variable, que l'on me fournit.
  • 17:35 - 17:39
    donc, je copie ça là.
  • 17:39 - 17:43
    On devrait faire autre chose, tiens, à la récupération de la requête.
  • 17:43 - 18:00
    Répondons, passons "200", et lançons ça.
  • 18:06 - 18:09
    J'ai oublié quelque chose ?
  • 18:09 - 18:18
    Ah, après le "200", il faut quand même que j'envoie quelque chose.
  • 18:27 - 18:40
    Et voila ; c'est un petit serveur web écrit en Node. Je peux l'accéder dans le cloud, et il me dit "HelloWorld".
  • 18:40 - 18:48
    Maintenant, un peu plus complexe ; on ajoute un compteur.
  • 19:06 - 19:10
    Regardons ce que ça fait.
  • 19:16 - 19:22
    À chaque fois que je recharge la page, il s'incrémente, mais deux fois.
  • 19:22 - 19:32
    C'est parce que le serveur requête aussi la favicône à chaque requête.
  • 19:32 - 19:39
    Pour faire en sorte que ça ne contrarie pas notre test,
  • 19:48 - 19:56
    on peut ajouter cette petite condition.
  • 20:29 - 20:33
    Désolé ?
  • 20:33 - 20:39
    Oui, c'est partiellement vrai.
  • 20:46 - 20:51
    Parce que c'est à la favicon qu'il s'intéresse...
  • 20:51 - 20:56
    Faute de frappe ?
  • 21:13 - 21:27
    Bon, aucune idée de pourquoi ça ne marche pas, mais on peut passer à autre chose.
  • 21:27 - 21:31
    On peut aussi positionner un point d'arrêt.
  • 21:31 - 21:39
    J'arrête ce process...
  • 21:39 - 21:44
    Et maintenant qu'on a lancé une requête, le breakpoint l'arrête.
  • 21:44 - 21:51
    On peut inspecter les variables, pour voir ce qui se passe.
  • 21:51 - 22:01
    On peut voir la pile d'appels ici, et la visiter.
  • 22:01 - 22:07
    Et tout ceci, ce sont les fichiers internes à Node.JS, que l'on visite.
  • 22:07 - 22:12
    On peut aussi regarder ce qu'est la variable "counter".
  • 22:18 - 22:22
    "counter" est à 1.
  • 22:22 - 22:30
    On débloque, et on relance la requête ; et maintenant, c'est 2.
  • 22:30 - 22:36
    Vous pouvez aussi changer la variable.
  • 22:49 - 22:52
    Et comme vous voyez, on a changé la variable ici.
  • 22:52 - 23:00
    Ça permet un debugging d'application auquel on est habitué dans le monde Java.
  • 23:00 - 23:03
    Mais ici c'est du javascript, et c'est dans le cloud.
  • 23:03 - 23:06
    Donc, on n'a pas d'application qui tourne localement.
  • 23:06 - 23:14
    Et c'est le type de choses qui deviennent possibles avec les navigateurs qui sont de plus en plus rapides.
  • 23:14 - 23:20
    Beaucoup plus rapides, 3000 fois plus rapides.
  • 23:20 - 23:27
    Cette application, en terme de vitesse et de temps de démarrage bat Eclipse, mais parce que c'est dans le cloud,
  • 23:27 - 23:35
    on peut faire beaucoup plus, on peut prendre l'URL, et la partager.
  • 23:35 - 23:43
    On n'a pas eu à installer quoi que ce soit, j'ai juste créé un projet, pas d'installation de Node,
  • 23:43 - 23:47
    ou de Git, ou NPM, ou quoi que ce soit.
  • 23:47 - 23:52
    Ce n'est même pas mon ordinateur que je suis en train d'utiliser.
  • 23:52 - 23:57
    Je peux prendre n'importe quel ordinateur, et j'ai toujours accès à tous mes projets.
  • 23:57 - 24:05
    Ça change beaucoup de choses, mais ce qui compte encore plus, c'est la collaboration.
  • 24:05 - 24:08
    Travailler ensemble sur du code.
  • 24:08 - 24:14
    Et c'est la partie suivante de cette présentation.
  • 24:20 - 24:30
    Il y avait un slide de plus que je voulais évoquer, sur le projet qui tourne sous Cloud9 IDE.
  • 24:30 - 24:34
    Ce sont tous des projets open source que l'on a démarrés et que l'on utilise.
  • 24:34 - 24:42
    Le plus large est APF, Ajax.org PlatForm, une librairie d'applications qui tourne dans le navigateur.
  • 24:42 - 24:50
    C'est open source, et ça vous permet de mélanger plusieurs types de composants, de manière déclarative.
  • 24:50 - 24:58
    Et il y a ACE, je vous en ai parlé, l'éditeur avec la coloration syntaxique, la complétion de code, etc.
  • 24:58 - 25:04
    Et Cloud9 IDE, qui est open source aussi ; elle est sur GitHub,
  • 25:04 - 25:09
    vous pouvez la rélécharger, et l'utiliser localement, ou sur votre serveur Web, si vous le souhaitez.
  • 25:09 - 25:18
    Il y a beaucoup d'autres projets, comme JSDav, WebFS, qui est un wrapper pour le FS offline de Chrome,
  • 25:18 - 25:20
    et aussi quelques autres librairies.
  • 25:20 - 25:28
    Donc, jetez-y un oeil, sur github.com/ajaxorg, si ça vous intéresse.
  • 25:28 - 25:35
    Donc, comme Ruben l'a dit, c'est l'étape suivante dans la collaboration.
  • 25:35 - 25:39
    Jetons un oeil à la collaboration : il y a des challenges habituels.
  • 25:39 - 25:46
    Quand vous regardez le monde, vous voyez que c'est un énorme effort de collaboration :
  • 25:46 - 25:52
    bureaux, immeubles, gouvernements, ... tout est collaboration !
  • 25:52 - 25:58
    Et la nature lui a donné une forme particulière, qui la rend efficiente et efficace !
  • 25:58 - 26:04
    Prenons un exemple simple encore : des enfants, qui construisent un château de sable.
  • 26:04 - 26:11
    Si on veut faire un truc simple, comme un gros tas de sable, tout le monde peut travailler librement,
  • 26:11 - 26:18
    ils travaillent en parallèle, et il n'y a aucun problème, ils font tous la même chose.
  • 26:18 - 26:24
    Mais une fois que la pile de sable est finie, il faut des changements dynamiques ;
  • 26:24 - 26:32
    les tâches vont être séparées : un enfant va creuser une trancher, un autre construire le château,
  • 26:32 - 26:35
    encore un autre doit construire une porte, ...
  • 26:35 - 26:41
    La collaboration parallèle vient d'être remplacée par une séparation des tâches,
  • 26:41 - 26:49
    et quand un enfant interfère avec les tâches d'un autre, il va y avoir des caprices, sous peu...
  • 26:49 - 26:53
    Je ne pense pas que cet enfant déteste les châteaux de sable ;
  • 26:53 - 27:01
    je pense qu'il ne peut juste pas séparer ses tâches convenablement avec l'autre enfant.
  • 27:01 - 27:10
    C'est une partie difficile de la collaboration ; et fondamentalement, il n'y a pas une seule manière de faire.
  • 27:10 - 27:19
    Toutes les tâches ont des paramètres différents selon la phase du process où vous êtes.
  • 27:21 - 27:28
    Avec le développement, tout le monde utilise sans doute un de ces contrôleurs de sources.
  • 27:28 - 27:35
    Et c'est la manière de collaborer du malchanceux.
  • 27:35 - 27:40
    Vous devez uploader votre code pour qu'il soit livré à un serveur, peut-être dans le cloud.
  • 27:40 - 27:43
    Et qu'il soit re-downloadé.
  • 27:43 - 27:49
    C'est très distant, vous n'avez pas une réponse immédiate, il faut que vous sachiez ce que les autres font,
  • 27:49 - 27:54
    en utilisant une autre forme de communication.
  • 27:54 - 27:58
    Vous travaillez séparément, chacun dans son silo.
  • 27:58 - 28:05
    Il y a beaucoup d'autres moyens de collaborer, et dans Cloud9, on essaie de trouver des pistes
  • 28:05 - 28:11
    pour faire en sorte que les développeurs travaillent en temps réel.
  • 28:11 - 28:17
    Avoir un IDE dans le cloud ouvre la voie à des nouveaux modes de collaboration.
  • 28:17 - 28:25
    Par exemple, les revues de code interactives : vous pouvez parcourir le code, et ajouter un commentaire.
  • 28:25 - 28:30
    Et c'est immédiatement partagé avec les autres personnes, parce que c'est dans le cloud.
  • 28:30 - 28:42
    Pensez aussi à l'entraide, à la formation, au partage de morceaux de codes, ou de l'URL de votre application.
  • 28:42 - 28:47
    On n'aura plus besoin de dépendre d'inventions comme celle-ci, pour la programmation à plusieurs.
  • 28:47 - 28:54
    Il y a une nouvelle manière de collaborer qui améliore l'expérience de développement.
  • 28:54 - 29:01
    Disons que vous avez une équipe sur un projet, je vais prendre un exemple véridique.
  • 29:01 - 29:11
    Avec Cloud9, on a la possibilité de partager notre environnement de travail.
  • 29:11 - 29:15
    Regardons un peu la situation de notre compagnie à nous :
  • 29:15 - 29:19
    on a des gens qui travaillent à distance, aux USA ou en Europe,
  • 29:19 - 29:23
    mais l'équipe centrale de développement est à Amsterdam.
  • 29:23 - 29:31
    Souvent, quelqu'un a un problème, il y a un bug à corriger, du code doit être produit,
  • 29:31 - 29:40
    ça nécessite d'y réfléchir, et d'y collaborer ; c'est pratique de travailler ensemble sur ce problème.
  • 29:40 - 29:42
    Comment faire ?
  • 29:42 - 29:47
    Avec Cloud9, tout le projet est en ligne, pas juste le code.
  • 29:47 - 29:53
    Le runtime, la base de données, tout est là derrière une unique URL.
  • 29:53 - 29:57
    Comme vous en avez l'habitude avec d'autres services en ligne,
  • 29:57 - 30:04
    avec Cloud9, vous pouver partager l'URL de votre environnement avec vos collègues de l'autre côté du monde.
  • 30:04 - 30:11
    Pour le faire, vous positionnez des permissions, lecture seule ou lecture-écriture.
  • 30:11 - 30:15
    Puis, votre ami rejoint votre projet.
  • 30:15 - 30:22
    À l'intérieur du projet, vous pourrez communiquer directement, chat, vidéo, conversations audio ;
  • 30:22 - 30:30
    mais avant tout, vous pouvez coder simultanément, de manière collaborative, comme vous le faites avec Google Docs.
  • 30:30 - 30:37
    Et non seulement ça, mais la personne qui s'est fait inviter peut lancer l'application.
  • 30:37 - 30:42
    En cliquant sur le bouton "debug", vous lancez le code dans un système identique au vôtre,
  • 30:42 - 30:45
    parce que c'est très exactement votre système.
  • 30:45 - 30:56
    Donc la personne n'a pas à simuler votre environnement, et la phrase "Ça marche chez moi" n'existe plus !
  • 30:56 - 31:00
    Donc, en résumé : les APIs dans le cloud vous aident à dimensionner,
  • 31:00 - 31:07
    et avoir votre code dans le cloud vous facilitent l'accès, la collaboration, et la maintenance sur vos applications.
  • 31:07 - 31:10
    L'intégration permet de cibler facilement des plateformes.
  • 31:10 - 31:15
    Donc, c'était un aperçu de l'avenir, merci de votre attention,
  • 31:15 - 31:22
    et si vous voulez collaborer, ou utiliser notre application, c'est en ligne sur c9.io, ou GitHub.
  • 31:22 - 31:26
    Merci beaucoup !
  • 31:34 - 31:36
    Y a-t-il des questions ?
  • 31:36 - 31:40
    C'est un vieux troll, désolé de le présenter !
  • 31:40 - 31:48
    Mais il y a un problème avec la confiance et la sécurité, et l'accessibilité, dans le cloud.
  • 31:48 - 31:55
    Je peux hacker dans le train, et pusher mes commits ; mais que se passe-t-il
  • 31:55 - 32:02
    si je possède une compagnie privée, et je ne veux pas ne plus être capable de récupérer mes données
  • 32:02 - 32:06
    parce que le service est down, ou a simplement fermé ?
  • 32:06 - 32:10
    Je ne vous souhaite pas d'avoir à fermer Cloud9, bien sûr...
  • 32:10 - 32:20
    Mais quels sont les problèmes de sécurité, de confidentialité, de confiance, et comment vous les gérez ?
  • 32:20 - 32:23
    Je pense que ce sont des soucis généralisés au le cloud ;
  • 32:23 - 32:26
    et je pense que le monde s'en rend progressivement compte,
  • 32:26 - 32:29
    de plus en plus de grosses applications tournent en ligne,
  • 32:29 - 32:35
    et les gens mettent beaucoup de leur valeur dedans, regardez Salesforce, par exemple.
  • 32:35 - 32:39
    Il y a des solutions, notamment aux problèmes de sécurité bien entendu ;
  • 32:39 - 32:44
    on pourrait même avancer qu'un fournisseur de cloud investira plus dans sa sécurité,
  • 32:44 - 32:53
    parce que c'est son "nom", et sa compagnie n'aura aucune valeur en cas de problème de sécurité.
  • 32:53 - 32:59
    Mais il y a des compagnies qui veulent pouvoir contrôler ça eux-mêmes.
  • 32:59 - 33:04
    Je pense qu'il va toujours y avoir un équilibre entre le cloud privé, et le cloud public ;
  • 33:04 - 33:10
    et ceux qui se soucient plus des coûts se pencheront vers les publics,
  • 33:10 - 33:21
    et ceux qui se soucient plus de la sécurité se pencheront vers les clouds privés.
  • 33:26 - 33:32
    Dans l'exemple, vous avez fait une application en Node.JS, et je me demande,
  • 33:32 - 33:38
    il y a plusieurs versions de Node.JS, comment vous en sortir ?
  • 33:38 - 33:42
    Chaque utilisateur installe sa propre version de Node.JS ?
  • 33:42 - 33:48
    Est-ce qu'il y a des modules spéciaux, des hacks spéciaux ?
  • 33:48 - 33:54
    Ou est-ce que vous le mettez à jour à la dernière version, mais du coup le code doit être mis à jour ?
  • 33:54 - 33:57
    Ou alors vous restez sur une version spécifique ?
  • 33:57 - 34:02
    Pour le moment, nous ne supportons qu'une version, mais on travaille dur,
  • 34:02 - 34:09
    pour gérer ce problème de versions ; et c'est dans le SDK, et dans le runtime en effet.
  • 34:09 - 34:15
    Ce que vous aurez, c'est un fichier de configuration, dans votre projet, qui déclare la version,
  • 34:15 - 34:18
    et on les supportera toutes.
  • 34:18 - 34:29
    On travaille ensemble avec Joyent pour supporter toutes ces versions de Node simultanément.
  • 34:35 - 34:39
    Bonjour, je ne vous ai jamais vu sauvegarder votre code ;
  • 34:39 - 34:43
    et comment est-ce que vous gérer le versionning, aussi ?
  • 34:43 - 34:50
    J'ai sauvegardé du code en utilisant Cmd+S, mais c'était rapide !
  • 34:50 - 34:56
    Si je ne sauvegarde pas, il sauvegardera quand je cliquerai sur le bouton "debug".
  • 34:56 - 35:02
    Pour le versionning, vous avez dû voir vers le bas l'interface en ligne de commande ;
  • 35:02 - 35:07
    et vous pouvez faire beaucoup de choses que vous feriez sur votre ordinateur, comme "ls" ou "cd",
  • 35:07 - 35:12
    ou taper "git" ; et même "git" et ce que vous voulez.
  • 35:12 - 35:17
    "git status", "git push/pull", "git commit", pour gérer vos versions.
  • 35:17 - 35:26
    On ajoute Mercurial en ce moment aussi ; Subversion n'est pas encore sûr, mais on finira probablement par l'ajouter.
  • 35:26 - 35:35
    Pardon ? inaudible Peut-être, peut-être...
  • 35:35 - 35:42
    Il demandait aussi si ça allait fonctionner avec Bazaar.
  • 35:42 - 35:52
    Bonjour, si j'ai bien compris, votre IDE Cloud9 exécute du Javascript du côté du serveur ? - Oui.
  • 35:52 - 35:57
    Du coup, est-ce qu'on devrait l'utiliser comme CDN, Content Delivery Network ?
  • 35:57 - 36:00
    Est-ce possible ?
  • 36:00 - 36:03
    Heu... non...
  • 36:03 - 36:09
    Ce sont des concepts très différents...
  • 36:09 - 36:16
    Il exécute du code, mais qui vivra uniquement sur un serveur, quelque part dans le cloud.
  • 36:16 - 36:22
    Donc ce n'est pas plus proche de certains réseaux, c'est à un seul endroit,
  • 36:22 - 36:24
    contrairement à ce que ferait un CDN.
  • 36:24 - 36:28
    Ok, donc c'est juste de l'exécution locale pour tester ?
  • 36:28 - 36:32
    Oui, l'exécution est dans le but de développer votre application ;
  • 36:32 - 36:41
    donc on vous fournit toute l'infrastructure pour développer votre appli, comme vous l'installeriez localement.
  • 36:41 - 36:51
    Juste un petit exemple : votre IDE a l'air d'utiliser MarkItUp, pour les Cmd+S et tout.
  • 36:51 - 36:57
    Si vous voulez refactoriser MarkitUp avec votre IDE, que va-t-il se passer ?
  • 36:57 - 37:02
    Je ne comprends pas vraiment la question, désolé ?
  • 37:02 - 37:08
    C'est écrit en Javascript, Cloud9? - Oui. - Il utilise des librairies, des plugs-in jQuery ?
  • 37:08 - 37:12
    Quelque chose de similaire, mais pas jQuery, oui.
  • 37:12 - 37:20
    Et si je veux refactoriser un plug-in jQuery, par exemple (désolé pour mon anglais)
  • 37:20 - 37:28
    qui est utilisé par Cloud9 IDE ? Est-ce qu'il y a des conflits entre les exécutions ?
  • 37:28 - 37:33
    Non, l'exécution de votre application est complètement séparée de Cloud9.
  • 37:33 - 37:42
    Cloud9 est juste une application qui tourne là, et quel que soit le code que vous tapez, il tourne dans une nouvelle fenêtre.
  • 37:42 - 37:46
    Donc il n'y a pas de conflits.
  • 37:46 - 37:49
    C'était ça la question que tu voulais poser ? - Ouais ouais.
  • 37:49 - 37:52
    Merci beaucoup. Juste pour savoir.
  • 37:52 - 37:57
    inaudible
  • 37:57 - 38:02
    Production ? Non, c'est juste pour du développement.
  • 38:02 - 38:06
    La question c'est : est-ce fait pour du développement, ou aussi de la production ?
  • 38:06 - 38:09
    Et on veut vraiment rester concentrés sur le développement.
  • 38:09 - 38:13
    On travaille avec d'autres compagnies qui fournissent des environnements de production,
  • 38:13 - 38:19
    donc vous pouvez publier votre application depuis Cloud9, vers l'environnement que vous voulez.
  • 38:19 - 38:23
    Vous avez montré Node.JS, mais qu'est-ce qu'il en est de Python, de Ruby, ... ?
  • 38:23 - 38:28
    On était à Google I/O le mois dernier, à démontrer un runtime Python,
  • 38:28 - 38:31
    pour pouvoir déployer dans Google App Engine.
  • 38:31 - 38:37
    On travaille sur ce type de runtimes, et on les ajoutera dans les mois qui viennent.
  • 38:37 - 38:41
    On pourrait considérer un déploiement vers Heroku, aussi ?
  • 38:41 - 38:45
    Où es... ? - Juste derrière. - Ah !
  • 38:45 - 38:53
    Désolé ? - On pourrait considérer un déploiement vers Heroku, en d'autres langages, comme PHP ?
  • 38:53 - 39:06
    Oui, on pense à Ruby aussi, et peut-être PHP, et on discute avec ces fournisseurs pour déployer vers eux.
  • 39:06 - 39:15
    Désolé pour mon anglais. Est-ce qu'il y a des services de tests automatisés dans l'outil ?
  • 39:15 - 39:19
    Vous parlez de développement, de plans, d'infrastructure, ...
  • 39:19 - 39:23
    Très bonne question. Pas encore, mais c'est sur la roadmap.
  • 39:23 - 39:29
    Et on est en train de construire une jolie interface, pour brancher n'importe quel framework
  • 39:29 - 39:33
    de test unitaire que vous souhaitez.
  • 39:33 - 39:37
    Et on va aussi ajouter des tests Selenium, pour que vous puissiez les lancer,
  • 39:37 - 39:47
    les enregistrer dans Cloud9 mais les lancer dans le cloud, pour n'importe quel navigateur.
  • 39:56 - 40:03
    Bonjour, j'aimerais en savoir plus sur votre business model, est-ce que le service est gratuit ?
  • 40:03 - 40:10
    Pourquoi devrais-je avoir confiance en un service gratuit comme le vôtre ?
  • 40:10 - 40:16
    Ok, le service est basé sur du freemium, c'est-à-dire qu'il y a une partie gratuite.
  • 40:16 - 40:21
    C'est gratuit pour une utilisation open-source ; donc si vous avez un projet open-source,
  • 40:21 - 40:24
    et que vous voulez travailler dessus dans le cloud, c'est gratuit.
  • 40:24 - 40:32
    Si c'est un projet commercial, que vous voulez avoir en privé, alors il faut payer.
  • 40:35 - 40:39
    Que se passe-t-il quand vous perdez la connexion ?
  • 40:39 - 40:44
    On peut toujours utiliser l'éditeur et écrire du code ?
  • 40:44 - 40:50
    La fonctionnalité "offline" devrait disponible dans quelques semaines ;
  • 40:50 - 40:55
    elle permettra de synchroniser tout le projet sur votre système de fichier,
  • 40:55 - 41:00
    et en utilisant le manifest HTML5, l'application est disponible aussi.
  • 41:00 - 41:05
    Donc vous pouvez faire toutes les opérations, créer des répertoires, des fichiers, etc.
  • 41:05 - 41:14
    les sauvegarder, les supprimer, et ils seront resynchronisés en se reconnectant.
  • 41:24 - 41:31
    Si vous n'êtes pas un environnement de production, comment vous gérer les déploiements ?
  • 41:31 - 41:37
    L'un de vos arguments était que vous êtes dans le cloud, donc c'est facile de déployer ;
  • 41:37 - 41:46
    mais si la configuration de l'environnement de déploiement est différent du vôtre, vous ne résolvez pas le problème ?
  • 41:46 - 41:52
    Ce qu'on fait, c'est qu'on travaille ensemble avec les PaaS, ou les fournisseurs d'infrastructure.
  • 41:52 - 41:58
    Quand vous commencez votre projet, vous pouvez choisir : je veux créer un projet Google App Engine.
  • 41:58 - 42:03
    Et votre environnement se configure pour que vous développiez sur App Engine.
  • 42:03 - 42:06
    Et quand vous déployez, il déploie sur App Engine.
  • 42:06 - 42:14
    Du coup, on génère de la liberté, parce que toutes ces organisations ré-invente comment on fait ça.
  • 42:14 - 42:24
    Nous on ne veut pas faire ça, on veut juste fournir la meilleure expérience de développement.
  • 42:24 - 42:26
    Je pense qu'on n'a plus de temps.
  • 42:26 - 42:33
    On a deux livres, qui doivent être donnés aux meilleures questions ; mais il faut que tu me donnes un coup de main.
  • 42:33 - 42:36
    J'ai trouvé la première question plutôt bonne. - Moi aussi, oui.
  • 42:36 - 42:39
    Et qui va avoir le deuxième ?
  • 42:39 - 42:43
    J'ai trouvé la question sur les tests très bonne. - Mais c'est un orateur !
  • 42:43 - 42:47
    Mais il ne peut pas l'avoir, je sais, c'est juste une remarque pour l'honneur !
  • 42:47 - 42:52
    Bon, du coup, on va le garder !
  • 42:52 - 42:53
    Je pense que...
  • 42:53 - 42:56
    La dernière ?
  • 42:56 - 43:02
    Ok, donc pour la première et la dernière question !
  • 43:02 - 43:05
    Félicitations !
  • 43:09 - 43:10
    Voila.
  • 43:10 - 43:14
    Vous pouvez poser quand même une dernière question en français si vous voulez, si c'est juste la langue qui vous retient.
  • 43:14 - 43:18
    On traduira après.
  • 43:18 - 43:21
    Si vous avez honte de votre anglais...
  • 43:21 - 43:23
    Merci beaucoup !
  • 43:23 -
    Merci !
Title:
Developing collaborative applications in the cloud (Ruben Daniëls, Lieke Arends) - Sud Web 2011
Description:

Web browsers are now full part of the « Web as a platform » motto. Cloud9IDE is one of those new Web IDE, based on Open Web technologies.

With everything moving to the Cloud, it is now time to have software development join in. JavaScript applications run online for a purpose, so why shouldn't you develop your application online too? So, to do this we are building Cloud9 IDE as a SaaS service with an open source foundation.

But what are the advantages of the cloud? In this talk we will go into the advantages that the cloud infrastructure offers to developers and how they can work faster.

A major aspect of developing in the cloud is the social aspect. We will explain the future of collaboration when moving development to the cloud. However, there are some challenges to collaboration. We will explain the subtleties of collaboration tooling and the challenges it brings.

Why for example did Google Wave get so many complaints, leading to its end. We will explain why collaboration has no single method and use a timeslider/ track changes comparison for purpose of explaining the subtlety.
Then we will go deeper into the browser. Advanced widgets need to innovate the browser platform to compete with flash/ silverlight/ java: HTML5. We will talk about HTML5 more in detail.

Then we will highlight how easy it is to develop software in the Cloud using Cloud9 IDE, and we will show how to extend the IDE. Ajax.org believes in the open web. Opening up technologies to stand on each other's shoulders, whilst creating healthy businesses. One of the key features of a great IDE is a great code editor. For this part Ajax.org developed Ace, which has recently been adopted by Mozilla as the new Bespin and future code editor for Firefox. The combined power of Mozilla and Ajax.org now makes Ace the best, and most universal code editor on the web. Everything in Cloud9 is an extension, and we are inviting people and companies to join the community to extend the IDE to their own needs and requirements.

more » « less
Video Language:
English
Duration:
43:34

French subtitles

Revisions