construire un réseau social avec symfony - lacot.org · en 6 ans, 10 millions d’européens (1/4...
Post on 28-Sep-2018
213 Views
Preview:
TRANSCRIPT
Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Construire un réseau social avec SymfonyXavier Lacot – Clever Age
2 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Plan de présentation
1. Qu'est-ce qu'un réseau social ?
2. Pourquoi Symfony pour un réseau social ?
3. Architecture et protocoles
4. Mise en oeuvre basique
5. Utilisez les plugins !
6. Déploiement : pensez « Cloud »
3 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Qu'est-ce qu'un réseau social ?
0,50cm0,50cm
Qu'est-ce qu'un réseau social ?
http://www.flickr.com/photos/marmotte73/2485775993/
4 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Qu'est-ce qu'un réseau social ?
0,50cm0,50cm
9 millions d’utilisateurs français
160 millions d’utilisateurs (Monde)
100 millions d’utilisateurs connectés par jour (Monde)
1,5 millions de Tweets par jour (Monde)
Un nouveau membre par seconde
En 6 ans, 10 millions d’Européens (1/4 du total)
6 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Besoin de nouveaux réseaux sociaux ?
Besoin de nouveaux réseaux sociaux ? Oui :
Réseaux professionnels et/ou spécialisés
Pousser la standardisation des APIs / des supports
Ou pas : Déjà trop de réseaux
La plupart des domaines sont couverts (général, photos, vidéos, musique, écriture, voyages, etc.)
Difficile pour les utilisateurs de maintenir une activité décente sur chaque réseau
7 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Typologie d'un réseau social
Réseau : Noeuds du réseau :
Individus,
Organisations
Arcs du réseau : les « relations » unidirectionnelles, bi-directionnelles,
conditionnelles, modérées ?
0,50cm0,50cm
8 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Sur le Web...
Plusieurs niveaux de points de vue :
0,50cm
L'individu Ses groupes Son réseau Son réseau étendu (« les Son réseau étendu (« les amis de mes amis »)amis de mes amis »)
Le réseau social dans son ensemble
9 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Fonctionnalités générales
Le coeur : les fonctions de réseau Membre
Lien
Monde extérieur (« tribu »)
Le bonus – mais essentiel : Une API
Expliciter clairement la propriété des données
Permettre le contrôle de la diffusion
Offrir des outils d'export / de sauvegarde
10 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Fonctions de « membres »Fonctions de « membres »
Gestion du profil Observation de l'activité du réseau
Mur / Lifestream
Notification mail
Messagerie Ensemble d'interactions
Statut / Micro-Blogging / Textes
Photos / médias
Chat
Calendriers / Évènements
Applications – éventuellement externes
11 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Fonctions de « liens »Fonctions de « liens »
Gestion des demandes d'amis Relais des demandes (suggestions) Notation / Scoring / Témoignagnes Fonctions virales
Suggestions de membres / applications
Jeux viraux
Remontée d'une savoir collectif Nuages de tags
Bookmarking social
12 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Fonctions de « groupes »Fonctions de « groupes »
Administration des groupes Fonctions disponibles
Visibilité des données
Co-production de contenus Wikis
Forums
Rebond sur les ressources publiées Suivi d'événements (liste de participants)
Ajout de médias
Animation / Dynamisation : Quizz, sondages, etc.
13 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
ajout de contacts
Relations symétriques Relations asymétriques
15 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
En résumé...
Nécessité de bien définir le projet Typologie du réseau Types d'interactions possibles
Éléments caractéristiques une page de profil par individu un outil permettant de créer des relations la liste des relations un ensemble d'interactions possibles (modules)
16 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Pourquoi Symfony ?
1. Qu'est-ce qu'un réseau social ?2. Pourquoi Symfony pour un réseau social ?3. Architecture, protocoles, solutions4. Mise en oeuvre basique5. Utilisez les plugins !6. Déploiement : pensez « Cloud »
17 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Pourquoi un framework ?
Framework de développement : Gain de temps, productivité accrue Homogénéisation du code Favorise la séparation du code métier Facilite la maintenance Assurance qualité
Marché naissant, peu de produits offrant de la visibilité
Coller au mieux à « votre » réseau social ?
18 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Pourquoi Symfony ?
Un framework « toutes options »cli
mvcajaxcrud
cacheeventsrouting
+500 pluginsperformance
documentationgénérateur d'admininternationalization
ORMs (Propel et Doctrine)tests unitaires et fonctionnels
19 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
...et pourquoi pas ?
Compromis à faire : Montée en charge (compensée par le cache)
Montée en compétences (variable mais rapidement amortie)
Disponibilité des compétences (moindres que PHP en général)
Flexibilité (variable)
Risques liés à un développement spécifique vs. l'intégration d'un produit
Un bon choix évite beaucoup de déconvenues
20 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Comment choisir un framework ?
Objectif : se faciliter la vie !
Privilégier : les projets maintenus et fortement adoptés les projets fortement documentés les architectures ouvertes (plugins, modules etc.)
Éviter : Le manque de spécifications La non-utilisation du cache (sauvez vos machines !) Les outils inadaptés (i18n, version de PHP, ORM etc.) Les choix à court terme
21 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Architecture,Protocoles,
solutions
1. Qu'est-ce qu'un réseau social ?2. Pourquoi Symfony pour un réseau social ?3. Architecture, protocoles, solutions4. Mise en oeuvre basique5. Utilisez les plugins !6. Déploiement : pensez « Cloud »
22 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Objectifs de l'architecture
Permettre de nombreuses contributions
Rapidité, instantanéité
Permettre des évolutions fonctionnelles rapides
Supporter de GROS volumes
Être tolérant à la panne
Ne pas perdre de données, jamais ! (ma.gnolia inside)
23 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Protocoles et solutions
Évidemment : HTTP (/Ajax)
Authentification : OpenId / Oauth / autre ?
XML / REST
XMPP (messagerie, distribution de messages)
Tâches asynchrones (« tasks » Symfony)
Files de messages (lifestreams) : dropr, beanstalkd
24 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Authentification
OpenId, Oauth (#fail), Facebook Connect, etc. ?
identifiantmot de passe
OpenIdOauth
Utilisez et étendez sfGuard / sfDoctrineGuard
25 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Mise en oeuvre basique
1. Qu'est-ce qu'un réseau social ?2. Pourquoi Symfony pour un réseau social ?3. Architecture, protocoles, solutions4. Mise en oeuvre basique5. Utilisez les plugins !6. Déploiement : pensez « Cloud »
26 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Mise en oeuvre
Applicationexterne
lifestream
membre - membre
membre - app
app - app
auth delegation
XMPP
HTTPHTTP
Bus de messages
diffusion / réception de messages
Monitoring d'activité
27 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Mise en oeuvre
lifestream
Applicationinterne
application
idnamestripped_name...
sf_guard_user
idusername...
Utilisation des mécanismes du coeur du réseau
notation, tagging, commentaire, micro-actions
Sous forme de plugin :
cycle de vie indépendant déléguer le développement
Applications installées
28 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Utilisez les plugins !
1. Qu'est-ce qu'un réseau social ?2. Pourquoi Symfony pour un réseau social ?3. Architecture, protocoles, solutions4. Mise en oeuvre basique5. Utilisez les plugins !6. Déploiement : pensez « Cloud »
29 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Plugins
Symfony propose de très nombreux plugins Gestion des utilisateurs et authentification Performance (minifying, cache) Sécurité (ssl, filtres, etc.) Fonctionnalités (cms, blog, forum, commentaires, etc.) Gestion de médias Widgets Recherche Divers
30 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Plugins
État des lieux : Qualité variable. De l'excellent à l'anecdotique ~ 600 plugins, classés et évalués
31 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
sfPropelActAsTaggableBehaviorPlugin (ouf !)
Attachement de tags à des objets
Recherche par tag(s)
Recherche des tags liés
Génération de nuages de tags
Support des triple-tags
Passe à l'échelle
32 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
sfPropelActAsTaggableBehaviorPlugin (ouf !)
30036300
723004300
830012300
1630020300
2430028300
32300 4030044300
4830052300
5630060300
6430068300 76300
8030084300
8830092300
96300100300
104300108300
112300116300
120300124300
128300132300
136300140300
144300148300
152300156300
160300164300
168300172300
176300180300
184300188300
192300196300
0,0000
0,0020
0,0040
0,0060
0,0080
0,0100
0,0120
0,0140
0,0160
0,0180
0,0200
getTaggedWith() duration
nombre d'objets
33 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
sfPropelActAsTaggableBehaviorPlugin (ouf !)
300 29100 57900 867003900
750011100
1470018300
2190025500 32700
3630039900
4350047100
5070054300 61500
6510068700
7230075900
7950083100 90300
9390097500
101100104700
108300111900
115500119100
122700126300
129900133500
137100140700
144300147900
151500155100
158700162300
165900
0,0000
0,2000
0,4000
0,6000
0,8000
1,0000
1,2000
getPopulars() duration
34 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
sfPropelActAsTaggableBehaviorPlugin (ouf !)
30036300
723004300
830012300
1630020300
2430028300
32300 4030044300
4830052300
5630060300
6430068300 76300
8030084300
8830092300
96300100300
104300108300
112300116300
120300124300
128300132300
136300140300
144300148300
152300156300
160300164300
168300172300
176300180300
184300188300
192300196300
0,0000
0,0200
0,0400
0,0600
0,0800
0,1000
0,1200
0,1400
getRelatedTags() duration
35 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Déploiement :pensez « Cloud »
http://www.flickr.com/photos/kky/704056791/
36 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Déploiement : pensez « Cloud »
Besoin d'une infrastructure extensible Faire face au succès Réagir en cas de pic d'affluence
Plusieurs solutions envisageables : Plusieurs frontaux physiques non spécialisés Plusieurs frontaux spécialisés Une solution à base de virtualisation
37 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Déploiement : pensez « Cloud »
Les avantages du Cloud Capacité à étendre son infrastructure de manière très rapide (quelques appels à l'API d'Amazon, par exemple)
Automatiser l'ajout de nouvelles machines en cas de pic détecté
Pouvoir mettre à jour plus simplement (installation sur un seul frontal, puis duplication de la VM)
38 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Déploiement : pensez « Cloud »
<img src="http://media.clever-age.com/images/logo.png"alt="" />
DNSTTL 60s
1
3
2
= CDN
39 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Dernières optimisations envisageables
serveurs memcache sur chaque frontal
Réplication (ou MySQL cluster)
tmpfs si aucune autre solution
Travaillez sur le cache !
Certains éléments peuvent être externalisés (contenu javascript, etc.). ex. autocomplete non ajax
41 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
En résumé...
bétonnez la définition du projet Typologie du réseau
Droits d'accès aux informations
Pensez aux fonctions d'export et d'extension du réseau. Cherchez dans les standards existants.
choisissez les bons outils Symfony seul ne suffit pas
utilisez la modularité de Symfony
abusez des plugins, mais testez-les
utilisez une architecture « scalable »
43 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Comment évaluer un framework ?
Livre blanc « frameworks php pour l’entreprise » Disponible gratuitement sur
http://www.clever-age.com/
Explication détaillée des critères de choix
Comparaison de quatre frameworks PHP majeurs :
Cake PHP Code Igniter Symfony Zend framework
44 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Nous contacter
Clever Age :
Agences :
Téléphone :
Web :
Contact commercial :
Contact technique :
37, boulevard des Capucines75002 Paris
Lyon, Bordeaux
+33 1 53 34 66 10
http://www.clever-age.com/
commercial@clever-age.com
technique@clever-age.com
top related