Symfony live Paris 2014 - Symfony2 sur Azure

25
SYMFONY2 ET MICROSOFT AZURE L’efficacité de PHP dans le cloud Symfony Live Paris 2014 8 Avril 2014

description

Présentation utilisée en guise de support lors du Symfony Live 2014 à Paris sur comment migrer rapidement et simplement une application Symfony2 sur Azure. L'exemple se base principalement sur comment migrer son système de stockage de données et sa gestion des fichiers via la mise en place d'un Blob Storage.

Transcript of Symfony live Paris 2014 - Symfony2 sur Azure

Page 1: Symfony live Paris 2014 - Symfony2 sur Azure

SYMFONY2 ET MICROSOFT AZUREL’efficacité de PHP dans le cloud

Symfony Live Paris 20148 Avril 2014

Page 2: Symfony live Paris 2014 - Symfony2 sur Azure

2

QUI SOMMES-NOUS ?

• JÉRÔME RESPAUT– Lead Dev – Brainsonic– [email protected]

• STÉPHANE ESCANDELL– CP Technique – Brainsonic– [email protected]

@BrainsonicParis

Page 3: Symfony live Paris 2014 - Symfony2 sur Azure

3

BRAINSONICBLENDED AGENCY1.

Page 4: Symfony live Paris 2014 - Symfony2 sur Azure

4

10M

110EMPLOYEES

NOS PARTENAIRES STRATEGIQUES

DE CHIFFRE D’AFFAIRES

Page 5: Symfony live Paris 2014 - Symfony2 sur Azure

BRAINSONIC

5

CONTENU DE MARQUE

RÉSEAUX SOCIAUX

EXPÉRIENCESCONNECTÉES

EngagementUtilisateurs

PLATFORMS

– Au service de l’engagement de vos audiences

Brainsonic est une « Blended Agency » : qui combine des compétences éditoriales, créatives et techniques, via des prestations de service et des plateformes logicielles.

EQUIPE BLENDED(CREA, EDITO, DEV)

OUTILLAGE& PROCESS

DELIVERY& ROI

Page 6: Symfony live Paris 2014 - Symfony2 sur Azure

6

MICROSOFT AZURE2.

Page 7: Symfony live Paris 2014 - Symfony2 sur Azure

7

L’HÉBERGEMENT MICROSOFT AZURE

Microsoft Azure Web Sites

App Web modernesParfait si votre application se compose de code client-side, server-side et une base de données. Forte scalabilité.

Développement continueDéploiement directement depuis vos dépôts GIT ou TFS, ou encore via FTP,

Open source appsPermet d’instancier un site professionnel en quelques clics avec des CMS comme WordPress, Joomla!, Drupal, DotNetNuke et Umbraco.

Page 8: Symfony live Paris 2014 - Symfony2 sur Azure

8

L’HÉBERGEMENT MICROSOFT AZURE

Microsoft Azure Cloud Services (WebRole et WorkerRole)

Multi-tier applicationsApplications cloud, où il est important de séparer les couches métiers. (i.e. cache mémoire, processus asynchrone, etc.) utilisant à la fois les WebRole & WorkerRole.

Apps avec administration avancéeApplications nécessitant un utilisateur administrateur, un accès à distance ou des droits spécifiques.

Apps avec configuration réseau avancéeApplications nécessitant une configuration particulière ou avancée utilisant Windows Azure Connect ou Windows Azure Virtual Network.

Page 9: Symfony live Paris 2014 - Symfony2 sur Azure

9

L’HÉBERGEMENT MICROSOFT AZURE

IAAS Microsoft Azure Virtual Machines

Applications existantes d’entrepriseFaire tourner directement vos applications existantes dans le cloud, nécessitant par exemple SQL server, SharePoint server ou Active directory.

Porter des images existantesInstancier des VM en utilisant une image depuis la bibliothèque Azure ou en envoyant vos propres template VHD.

Windows ou LinuxSupporte Windows Server, mais aussi les distributions Linux. Possibilité de connecter des VM avec des Cloud Services pour exploiter au maximum les avantages du PaaS.

Page 10: Symfony live Paris 2014 - Symfony2 sur Azure

10

Web RoleWeb Sites

* Cloud apps (WebRole ou Worker Roles) peuvent utiliser ClearDB MySQL comme un service, à commander via le marketplace, non disponible via le Portail Azure classique.

Accès aux services de Cache, Service Bus, Storage, SQL Azure

Support de ASP.NET, ASP, Node.js, PHP 5.3+

Configuration et contenus partagés

GIT, FTP, TFS

Déploiement quasi instantané

MySQL disponible sous forme de service

Environnements/Préproduction

Configuration réseau avancée

Accès bureau à distance

Droits administrateurs

Start-up tasks

Frameworks ou Libraries non supportés

Service model

Windows Azure Connect/Windows Azure network.

*

Possibilités vs.

Page 11: Symfony live Paris 2014 - Symfony2 sur Azure

CLOUD SERVICES3.

11

Page 12: Symfony live Paris 2014 - Symfony2 sur Azure

12

CHOIX DU WEBRÔLE

Choix historique Besoin de Startup-tasks en admin

Installation modules PHP customs Personnalisation conf php.ini Initialisation Fwk (commandes Symfony) Préparer l’arborescence disque

Debug simplifié via RDP Installation d’applications tierces spécifiques

Page 13: Symfony live Paris 2014 - Symfony2 sur Azure

13

CHOIX DU WEBRÔLE

Maîtrise des mises en production Swap « staging »/ « prod »

Auto-scaling Programmable Modifiable à la volée

Choix historique => fonctionnalités absentes il y a 1 an

Page 14: Symfony live Paris 2014 - Symfony2 sur Azure

14

SERVICES MICROSOFT AZURE

4.

Page 15: Symfony live Paris 2014 - Symfony2 sur Azure

15

CLOUD SERVICES MAIS AUSSI…

Load balancer / endpoints LB Microsoft Azure Storage

SQL database Table storage Blob storage

Microsoft Azure Cache Mobile services Service Bus Media Services

Page 16: Symfony live Paris 2014 - Symfony2 sur Azure

16

INTÉGRATION DANS SYMFONY25.

Page 17: Symfony live Paris 2014 - Symfony2 sur Azure

17

FIL ROUGE

Application « semi-full » REST Authentification Upload image

Fonctionne en local

Migration sur Microsoft Azure

Page 18: Symfony live Paris 2014 - Symfony2 sur Azure

18

One code to rule them all…

Page 19: Symfony live Paris 2014 - Symfony2 sur Azure

19

Pour fabriquer de

la potion magique,

mieux vaut suivre la recette !

Page 20: Symfony live Paris 2014 - Symfony2 sur Azure

20

ABSTRAIRE LES SERVICES E/S

Un principe nécessaire

Interfaces de communication communes

Injection des services finaux Système de stockage de données (ajouter une

couche entre le modèle et la BDD ?) Gestionnaire de session Stockage de fichiers … tout service tiers d’E/S (messages AMQP,

Pool mails, …)

Page 21: Symfony live Paris 2014 - Symfony2 sur Azure

21

UTILISER LE BUNDLE ADAPTÉ

Brainsonic/AzureDistributionBundle (github / packagist) Fork beberlei/AzureDistributionBundle Suivi des évolutions Microsoft Azure Suivi des évolutions Symfony2

Mise à disposition de services (sf2) pour accéder aux services Microsoft Azure

Facilitateur de déploiement sur les Cloud Services

Encapsulation SDK Microsoft

Page 22: Symfony live Paris 2014 - Symfony2 sur Azure

22

Concrètement, ça donne

quoi ?

Page 23: Symfony live Paris 2014 - Symfony2 sur Azure

23

SYNTHÈSE

Bundles utilisés dans l’exemple FOS/FOSRestBundle FOS/FOSUserBundle KnpLabs/KnpGaufretteBundle Brainsonic/AzureDistributionBundle

Points d’attention Penser « modularité » Concevoir des couches intermédiaires d’abstraction des systèmes d’E/S Doctrine peu user friendly avec SQLServer, quelques améliorations possibles (éventuellement,

MySQL est disponible sous Azure via le marketplace)

Compatibilité Génération de packages Cloud Services uniquement disponibles sous Windows Préférer l’utilisation de Azure Websites (compatible Mac/Linux, déploiement simplifié via git

push)

Page 24: Symfony live Paris 2014 - Symfony2 sur Azure

24

VOUS AVEZ DES QUESTIONS…

… nous pouvons essayer d’y répondre

Page 25: Symfony live Paris 2014 - Symfony2 sur Azure

25

CONTACTEZ NOUS

– STÉPHANE ESCANDELL [email protected]

JÉRÔME [email protected]