Stage de fin d’études – dotcloud
-
Upload
joffrey-fu-hrer -
Category
Documents
-
view
315 -
download
0
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