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



Documents pareils
THÉMATIQUES. Comprendre les frameworks productifs. Découvrir leurs usages. Synthèse

Les modules SI5 et PPE2

Dopez votre site Joomla! Les meilleures extensions pour les versions 2.5 et 3.0

Formation SharePoint Server 2013

Hébergement MMI SEMESTRE 4

Drupal, pour quel usage? Comment se positionne Drupal? Les fonctionnalités de Drupal et de son écosystème. L'architecture technique et logicielle Le

Drupal un CMS orienté mé2er. Romain JARRAUD Mathieu GROS

Package Réseau Social RSV4

PHP 5.4 Développez un site web dynamique et interactif

Présentation Alfresco

Développement d'applications Web HTML5 L'art et la manière avec Visual Studio 2015 et TFS

Les Content Delivery Network (CDN)

Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

Objectif : Passer de l analyse métier et fonctionnelle à la définition des applications qui

Les frameworks, essentiels dans l'écosystème PHP

CAS, la théorie. R. Ferrere, S. Layrisse

Le travail collaboratif et l'intelligence collective

Jeudi 17 février Nicolas Darcheville Vincent Goessens

les techniques d'extraction, les formulaires et intégration dans un site WEB

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

webmestre : conception de sites et administration de serveurs web 42 crédits Certificat professionnel CP09


PHP et le Cloud. All rights reserved. Zend Technologies, Inc.

Introduction MOSS 2007

Sommaire. La haute-disponibilité. L'offre OpenSource. Les systèmes tiers. MySQL

Hébergement PHP. Comprendre pour bien choisir son hébergement

3W Academy Programme de Formation Développeur Intégrateur web Total : 400 heures

ASP.NET MVC 4 Développement d'applications Web en C# - Concepts et bonnes pratiques

Savoir- Faire Offres mé1ers Offres technologiques

Tungsten: une implémentation du futur clustering de PostgreSQL

Gérer une forte charge avec ez Publish Obtenir la meilleure réactivité de publication. Solutions natives ez. Solution spécifique.

ContactOffice. La Messagerie collaborative pour l'éducation. Assises 2015 du CSIESR Avignon

Documentation technique

Tableau Online Sécurité dans le cloud

Fiche Technique Windows Azure

e need L un des premiers intégrateurs opérateurs Cloud Computing indépendants en France

Cloud Computing : Utiliser Stratos comme PaaS privé sur un cloud Eucalyptus

Gagner en performance avec un extranet. et mener son projet extranet?

Le Cloud Computing et le SI : Offre et différentiateurs Microsoft

Architecture et infrastructure Web

BES WEBDEVELOPER ACTIVITÉ RÔLE

Documentation de produit SAP Cloud for Customer (novembre 2013) Nouveautés de SAP Cloud for Customer pour les administrateurs

Google Apps for Business

Traitement des Données Personnelles 2012

Petite définition : Présentation :

Plateforme Applicative Zend PHP Cloud

PHP et LeMonde.fr : passé, présent et avenir Olivier Grange-Labat <grange@lemonde.fr>

LINUX - Sécurité. Déroulé de l'action. - 3 jours - Contenu de formation

Travail collaboratif. Glossaire

Joomla! Création et administration d'un site web - Version numérique

CAS, un SSO web open source. 14h35-15h25 - La Seine A

Formation en Logiciels Libres. Fiche d inscription

Projet Sécurité des SI

WordPress Référencement naturel (SEO) Optimiser. son référencement. Daniel Roch. Préface d Olivier Andrieu

Présentation Toulibre. Jabber/XMPP

DRUPAL Réalisez des développements professionnels avec PHP (2ième édition)

GOOGLE, OUTILS EN LIGNE

Exchange Server 2013 Préparation à la certification MCSE Messaging - Examen

Outils de développement collaboratif

+ = OpenStack Presentation. Raphaël Ferreira - enovance. Credits : Thanks to the OpenStack Guys 1

Déploiement de l iphone et de l ipad Gestion des appareils mobiles (MDM)

Jean-Philippe Paquette

Introduction à. Oracle Application Express

Profil. Formations Certifications. Etienne de LONGEAUX Architecte logiciel/ Lead développeur PHP5/SYMFONY2/ZEND 13 ans d expérience.

Comment optimiser votre. utilisation de POM? 23 avril 2015

SOMMAIRE. 1. Comprendre les bases - référencement, indexation et positionnement - comment fonctionne Google pour indexer et référencer un site?

Web 2.0 professionnel : Au service de votre compétitivité!

WordPress : principes et fonctionnement

ContactOffice. Le Bureau Virtuel des ENT

FAMILLE EMC VPLEX. Disponibilité continue et mobilité des données dans et entre les datacenters AVANTAGES

Déploiement d iphone et d ipad Gestion des appareils mobiles (MDM)

Formation Webmaster : Création de site Web Initiation + Approfondissement

Technologies du Web. Créer et héberger un site Web. Pierre Senellart. Page 1 / 26 Licence de droits d usage

FILIÈRE TRAVAIL COLLABORATIF

Formations. «Règles de l Art» Certilience formation N SIRET APE 6202A - N TVA Intracommunautaire FR

<Insert Picture Here>ApExposé. Cédric MYLLE 05 Février Exposé Système et Réseaux : ApEx, Application Express d Oracle

Plan de notre intervention 1. Pourquoi le test de charge? 2. Les différents types de tests de charge 1.1. Le test de performance 1.2.

! " # $ % & OPN Day Paris 14 mars 2006

MOTEUR DE WORKFLOW Mise en oeuvre d'openwfe Version septembre 2006

Hibernate vs. le Cloud Computing

Fonctions. Solution professionnelle pour le stockage de données, la synchronisation multi- plateformes et la collaboration

INGÉNIEUR - DÉVELOPPEUR EXPÉRIMENT É PHP. 27 ans - 6 ans d'expérience

La sécurité des données hébergées dans le Cloud

Cloud et SOA La présence du Cloud révolutionne-t-elle l approche SOA?

FAMILLE EMC VPLEX. Disponibilité continue et mobilité des données dans et entre les datacenters

Technologies Web. Ludovic Denoyer Sylvain Lamprier Mohamed Amine Baazizi Gabriella Contardo Narcisse Nya. Université Pierre et Marie Curie

Zimbra. S I A T. T é l : ( ) F a x : ( )

RESUME DE CARRIERE. Alice JULIENNE. 23 ans Nationalité Française Développeur Web Front-End. Compétences

Blogging et sites de contenu. Comment créer un site de contenu et l'animer

«clustering» et «load balancing» avec Zope et ZEO

WordPress, thèmes et plugins : mode d'emploi

Solution Intranet collaboratif

Extensions, Documentation, Tutoriels, Astuces

FICHE PRODUIT COREYE CACHE Architecture technique En bref Plateforme Clients Web Coreye Cache applicative Références Principe de fonctionnement

Les outils collaboratifs : bonnes pratiques, bons réflexes. Christine LOURDELET et Hélène TELLITOCCI

Démonstration Google Apps. Christophe Thuillier Avril 2010 Arrowsoft

Les grandes facettes du développement Web Nicolas Thouvenin - Stéphane Gully

Exploration des technologies web pour créer une interaction entre Mahara et les plateformes professionnelles et sociales

Les réseaux sociaux d entreprise

Transcription:

Construire un réseau social avec Symfony Xavier Lacot Clever Age

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» 2

Qu'est-ce qu'un réseausocial social?? Qu'est-ce qu'un réseau 0,50cm http://www.flickr.com/photos/marmotte73/2485775993/ 3

Qu'est-ce qu'un réseau social? 9 millions d utilisateurs français 160 millions d utilisateurs (Monde) 100 millions d utilisateurs connectés par jour (Monde) 0,50cm 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) 4

Sur le Web... 0,50cm 5

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 6

Typologie d'un réseau social Réseau : Noeuds du réseau : Individus, Organisations 0,50cm Arcs du réseau : les «relations» unidirectionnelles, bi-directionnelles, conditionnelles, modérées? 7

Sur le Web... Plusieurs niveaux de points de vue : L'individu Ses groupes Son réseau 0,50cm Son réseau étendu («les amis de mes amis») Le réseau social dans son ensemble 8

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 9

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 10

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 11

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. 12

ajout de contacts Relations symétriques Relations asymétriques 13

Page de profil 0,50cm 14

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) 15

Pourquoi Symfony? 1. 2. 3. 4. 5. 6. Qu'est-ce qu'un réseau social? Pourquoi Symfony pour un réseau social? Architecture, protocoles, solutions Mise en oeuvre basique Utilisez les plugins! Déploiement : pensez «Cloud» 16

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? 17

Pourquoi Symfony? Un framework «toutes options» cli mvc ajax crud cache events routing +500 plugins performance documentation générateur d'admin internationalization ORMs (Propel et Doctrine) tests unitaires et fonctionnels 18

...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 19

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 20

Architecture, Protocoles, solutions 1. 2. 3. 4. 5. 6. Qu'est-ce qu'un réseau social? Pourquoi Symfony pour un réseau social? Architecture, protocoles, solutions Mise en oeuvre basique Utilisez les plugins! Déploiement : pensez «Cloud» 21

Objectifs de l'architecture Permettre de nombreuses contributions Rapidité, instantanéité Permettre des évolutions fonctionnelles rapides Supporter de Être tolérant à la panne Ne pas perdre de données, jamais! GROS volumes (ma.gnolia inside) 22

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 23

Authentification OpenId, Oauth (#fail), Facebook Connect, etc.? OpenId Oauth identifiant mot de passe Utilisez et étendez sfguard / sfdoctrineguard 24

Mise en oeuvre basique 1. 2. 3. 4. 5. 6. Qu'est-ce qu'un réseau social? Pourquoi Symfony pour un réseau social? Architecture, protocoles, solutions Mise en oeuvre basique Utilisez les plugins! Déploiement : pensez «Cloud» 25

Mise en oeuvre XMPP HTTP HTTP lifestream auth delegation diffusion / réception de messages Bus de messages Application externe membre - membre membre - app Monitoring d'activité app - app 26

Mise en oeuvre Utilisation des mécanismes du coeur du réseau lifestream Application interne notation, tagging, commentaire, micro-actions Applications installées sf_guard_user application id username... id name stripped_name... Sous forme de plugin : cycle de vie indépendant déléguer le développement 27

Utilisez les plugins! 1. 2. 3. 4. 5. 6. Qu'est-ce qu'un réseau social? Pourquoi Symfony pour un réseau social? Architecture, protocoles, solutions Mise en oeuvre basique Utilisez les plugins! Déploiement : pensez «Cloud» 28

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 29

Plugins État des lieux : Qualité variable. De l'excellent à l'anecdotique ~ 600 plugins, classés et évalués 30

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 31

sfpropelactastaggablebehaviorplugin (ouf!) gettaggedwith() duration 0,0200 0,0180 0,0160 0,0140 0,0120 0,0100 0,0080 0,0060 0,0040 0,0020 0,0000 4300 12300 20300 28300 36300 44300 52300 60300 68300 76300 84300 92300 100300 108300 116300 124300 132300 140300 148300 156300 164300 172300 180300 188300 196300 300 8300 16300 24300 32300 40300 48300 56300 64300 72300 80300 88300 96300 104300 112300 120300 128300 136300 144300 152300 160300 168300 176300 184300 192300 nombre d'objets 32

sfpropelactastaggablebehaviorplugin (ouf!) getpopulars() duration 1,2000 1,0000 0,8000 0,6000 0,4000 0,2000 0,0000 3900 11100 18300 25500 32700 39900 47100 54300 61500 68700 75900 83100 90300 97500 104700 111900 119100 126300 133500 140700 147900 155100 162300 300 7500 14700 21900 29100 36300 43500 50700 57900 65100 72300 79500 86700 93900 101100 108300 115500 122700 129900 137100 144300 151500 158700 165900 33

sfpropelactastaggablebehaviorplugin (ouf!) getrelatedtags() duration 0,1400 0,1200 0,1000 0,0800 0,0600 0,0400 0,0200 0,0000 4300 12300 20300 28300 36300 44300 52300 60300 68300 76300 84300 92300 100300 108300 116300 124300 132300 140300 148300 156300 164300 172300 180300 188300 196300 300 8300 16300 24300 32300 40300 48300 56300 64300 72300 80300 88300 96300 104300 112300 120300 128300 136300 144300 152300 160300 168300 176300 184300 192300 34

http://www.flickr.com/photos/kky/704056791/ Déploiement : pensez «Cloud» 35

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 36

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) 37

Déploiement : pensez «Cloud» 1 <img src="http://media.clever-age.com/images/logo.png" alt="" /> 2 3 DNS TTL 60s = CDN 38

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 39

En résumé... 40

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» 41

Questions 42

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 43

Nous contacter Clever Age : Agences : Téléphone : 37, boulevard des Capucines 75002 Paris Lyon, Bordeaux +33 1 53 34 66 10 Web : http://www.clever-age.com/ Contact commercial : commercial@clever-age.com Contact technique : technique@clever-age.com 44