44
Symfony Live – 11 et 12 juin 2009 Clever Age | Xavier Lacot Construire un réseau social avec Symfony Xavier Lacot – Clever Age

Construire un réseau social avec Symfony - lacot.org · En 6 ans, 10 millions d’Européens (1/4 du total) Symfony Live – 11 et 12 juin 2009 5 Clever Age | Xavier Lacot Sur le

  • Upload
    voanh

  • View
    213

  • Download
    0

Embed Size (px)

Citation preview

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)

5 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot

Sur le Web...

0,50cm0,50cm

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

14 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot

Page de profil

0,50cm

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

40 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot

En résumé...

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 »

42 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot

Questions?

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/

[email protected]

[email protected]