Stage de fin d’études – dotcloud

Post on 28-Dec-2014

182 views 4 download

description

 

Transcript of Stage de fin d’études – dotcloud

Joffrey Fuhrer – MTI2012 – du 15/02/2012 au 15/08/2012

1

Présentation de l’entreprise La team labs Travaux réalisés Conclusion

2

•Historique •Organisation

3

Fondée en France – 2008 Y-Combinator – été 2010 Financement: 800 000$ - décembre 2010

10 000 000$ - mars 2011 Beta – premier PaaS multi-langage – janvier 2011 GigaOM Structure People & Judge awards – juin 2011 Support websockets et vertical scaling – mars 2012

4

~20 employés Principales divisions : Platform

SRE (Site Reliability Engineers)

Labs (discontinuée)

Support

Finances, Marketing…

5

•Objectifs •Composition •Méthodologie

6

Produit focalisé Développeurs « full-stack » Participation à la construction

communautaire… … En fonction de ses besoins

7

Supervision :

Technique : Samuel Alba, engineering manager

Produit : Solomon Hykes, CEO

Autres membres :

Yusuf Simonson, UNC graduate

J.-R. Prévost, étudiant MTI-2012

8

Scheduling : Product meeting 1/semaine Idem sprint planning Stand-up meeting 1/jour

Travail : Expérimentations Interaction avec les utilisateurs Prise en compte des compétiteurs

9

•stack.io 0.1 •Ember.js + Racer •Stack composer •dotcloud.js

•Module db

•Synchronisation

•Considérations architecturales

•Module Twitter

•Authentification •stack.io 0.2

10

Pré-existant : Node.js Communication client-serveur et serveur-serveur Transport : redis + websockets Couche évènements, couche RPC + streaming

Réalisations : Interface EventEmitter Performance tweaks Bugfixing

11

Ember.js SproutCore pour apps web modernes (Javascript) Tom Dale & Yehuda Katz Projet open-source

Racer node.js Synchronisation de modèle client/serveur Utilisé par le framework derby

12

Objectif : librairie d’interfaçage des deux systèmes Flexible Naturelle

Résultat : projet open-source Présenté lors d’un meet-up Ember.js devant une

audience de développeurs Publié sur github

13

Objectif :

Réalisation d’un outil de composition de stack technologique

Intégration de services « processus », « database » et « services tiers »

Déploiement automatique sur dotCloud

14

Réalisations :

Modèle de base de données

Implémentation du modèle sur MongoDB

Création d’une API REST (node.js/express/mongoose)

Projet mis en hiatus :

Cible mouvante

Milestone imminente 15

Objectif : Publication d’un produit réalisable en un temps court Proof of concept d’un produit ciblé sur les

développeurs « full-stack » A l’origine, amélioration de la plateforme jsFiddle

avec services « cloud ». ▪ Développement d’une extension Chrome ▪ Déploiement automatisé

Open-source

16

Sauvegarde des données dans une base de données MongoDB

API simpliste, contraintes minimales

17

dotcloud.db.insert(‘people’, {

firstname : ‘John’,

lastname : ‘Doe’,

age : 22

}, function(err, result) {

if (!err)

console.log(‘success !’);

});

Objectifs : Synchronisation des données en

temps réel entre clients – serveur Interface doit sembler naturelle

pour le développeur Réalisation :

Module « sync » Utilisation de stack.io + MongoDB Interface « array-like »

18

var people =

dotcloud.sync.

synchronize(‘people’);

people.push({

firstname: ‘John’,

lastname: ‘Doe’,

age: 22

});

people.observe(function(type) {

if (type == ‘insert’)

console.log(‘success!’)

});

19

Mono-processus

Satellitaire

Communication avec l’API Twitter Abstraction du serveur Proof of Concept de l’intégration third party Support OAuth

20

dotcloud.twitter.timeline(function(err, res) {

if (err)

return console.log('Error: ', err);

res.forEach(function(x) {

console.log(x.user.name, ': ', x.text);

});

});

Ajout d’une notion de middleware dans stack.io 0.1 … Puis portage dans version 0.2 Création de collections privées dans sync et db

21

dotcloud.db.private.insert(‘people’, {

firstname : ‘John’,

lastname : ‘Doe’,

age : 22

}, function(err, result) {

if (!err)

console.log(‘success !’);

});

http://js.dotcloud.com

22

Basé sur ZeroRPC Node.js + Client en Python Dépendance sur Redis retirée Couche évènementielle disparaît (peut être

émulée grâce au streaming RPC) Middlewares Module d’authentification/autorisation + OAuth Meilleure stabilité mais plus complexe

23

24

Très bonne expérience Start-up dynamique

Exigence

Responsabilisation Découvertes culturelles (USA/Californie/SF) Tremplin vers une position de platform

engineer

25