Orchestrez vos projets Symfony
sans fausses notes
28/10/2015
@xgorse
Xavier Gorse
Contexte
Elao
• Agence Web qui fait du dev web sur mesure depuis 10 ans

• 25 personnes avec 3 tribus (Lyon, Paris, Montpellier)

• +200 projets symfony initiés depuis 2006

• Partenaire officiel SensioLabs
But
• Maximiser la valeur ajoutée du dev.

• Limiter la dette technique

• Remontée rapide et simple sur le projet

• Facilitation reprise d'existant par un tiers

• Laisser un projet comme on aimerait le trouver
Env de dev
• Homogène : 100% Mac / OSX

• Performant : SSD avec pas mal de RAM

• Virtualisation complète avec Vagrant et Virtualbox
Infra
• Provisioning avec Ansible

• Gestion des envs iso ( dev, demo, prod…)

• Base linux ( Debian / CentOs)

• Socle hétérogène 

• Dev : Virtualbox/Vagrant

• CI : Docker pour les tests avec Jenkins

• Prod : OpenVz
Architecture Applicative
Architecture Applicative
• Approche DDD : Orienté Domain / Métier

• Découplage du code métier du framework au maximum 

• Plus facile à tester 

• Plus serein lors des mises à jour du framework

• Event - CommandBus
Architecture Applicative
Bundles
• Les plus léger et autonomes possible

• Orchestration entre le Domain et le framework

• De la glue entre interface et metier
Elao Symfony Standard
Elao Symfony Standard
• Base de tous les nouveaux projets symfony

• Basée sur une 2.7.x avec une arbo "Symfony 3"

• Image Vagrant sur Debian Wheezy

• Open et dispo sur Github : https://github.com/Elao/symfony-standard
Elao Symfony Standard
Vagrant
• Partage NFS

• Récup des configs Git du l'hôte

• Récup des infos auth composer de l'hôte

• Forward Agent SSH
Elao Symfony Standard
Ansible
• Même rôle que les envs de demo et prod

• Que des rôles maisons 

• Open Source et dispo sur github sur l’organisation ElaoInfra
Elao Symfony Standard
Tools
• Mailcatcher

• Supervisor

• Log.io mais bascule sur Heka/rtail prévue

• PhpMyAdmin
Elao Symfony Standard
Test 

• PHPUnit 

• Behat
Elao Symfony Standard
Make : Homogénéisation de l'interface projet
• make setup

• make test

• make deploy@demo

• make deploy@prod
Elao Symfony Standard
Au final c’est aussi simple que cela 

• composer create-project elao/symfony-standard 

• ou git clone

• puis make setup
Conventions
Conventions
• Make

• Workflow git basé sur le Github Flow

• Documentation 

• Technique dans le dépôt en markdown

• Fonctionnelle dans Confluence
Conventions
• CodeReview systématique

• CodingStandard

• PSR-2

• hook de commits

• SensioLabs Insight
Deploy
• Depuis hôte avec Capifony/Capistrano

• On se penche sur la création de build par la stack CI
Conclusion
Conclusion
• Pas mal de souci avec vagrant/virtualbox (DNS, NFS)

• Beaucoup d'énergie sur la couche infra

• Ne pas tout changer en même temps
🙀
Conclusion
• Objectif atteint

• Montée en compétences rapide et cadrées sur les projets

• Stack infra carrée -> Offre Hosting Elao

• Qualité augmentée sans impact pour le projet
😺
Conclusion
• Les technos vont plus vite que les projets

• Résister aux sirènes des nouvelles techno, mais pas trop

• Pragmatisme, se focus sur ce qui apporte le plus de valeur ajoutée
⚠
Merci
Stand Espace de networking
www.lazerdrive.io
Ce soir à 18h10 dans l’amphi

Orchestrez vos projets Symfony sans fausses notes

  • 1.
    Orchestrez vos projetsSymfony sans fausses notes 28/10/2015 @xgorse Xavier Gorse
  • 2.
    Contexte Elao • Agence Webqui fait du dev web sur mesure depuis 10 ans • 25 personnes avec 3 tribus (Lyon, Paris, Montpellier) • +200 projets symfony initiés depuis 2006 • Partenaire officiel SensioLabs
  • 3.
    But • Maximiser lavaleur ajoutée du dev. • Limiter la dette technique • Remontée rapide et simple sur le projet • Facilitation reprise d'existant par un tiers • Laisser un projet comme on aimerait le trouver
  • 4.
    Env de dev •Homogène : 100% Mac / OSX • Performant : SSD avec pas mal de RAM • Virtualisation complète avec Vagrant et Virtualbox
  • 5.
    Infra • Provisioning avecAnsible • Gestion des envs iso ( dev, demo, prod…) • Base linux ( Debian / CentOs) • Socle hétérogène • Dev : Virtualbox/Vagrant • CI : Docker pour les tests avec Jenkins • Prod : OpenVz
  • 6.
  • 7.
    Architecture Applicative • ApprocheDDD : Orienté Domain / Métier • Découplage du code métier du framework au maximum • Plus facile à tester • Plus serein lors des mises à jour du framework • Event - CommandBus
  • 8.
    Architecture Applicative Bundles • Lesplus léger et autonomes possible • Orchestration entre le Domain et le framework • De la glue entre interface et metier
  • 9.
  • 10.
    Elao Symfony Standard •Base de tous les nouveaux projets symfony • Basée sur une 2.7.x avec une arbo "Symfony 3" • Image Vagrant sur Debian Wheezy • Open et dispo sur Github : https://github.com/Elao/symfony-standard
  • 11.
    Elao Symfony Standard Vagrant •Partage NFS • Récup des configs Git du l'hôte • Récup des infos auth composer de l'hôte • Forward Agent SSH
  • 12.
    Elao Symfony Standard Ansible •Même rôle que les envs de demo et prod • Que des rôles maisons • Open Source et dispo sur github sur l’organisation ElaoInfra
  • 13.
    Elao Symfony Standard Tools •Mailcatcher • Supervisor • Log.io mais bascule sur Heka/rtail prévue • PhpMyAdmin
  • 14.
    Elao Symfony Standard Test • PHPUnit • Behat
  • 15.
    Elao Symfony Standard Make: Homogénéisation de l'interface projet • make setup • make test • make deploy@demo • make deploy@prod
  • 16.
    Elao Symfony Standard Aufinal c’est aussi simple que cela • composer create-project elao/symfony-standard • ou git clone • puis make setup
  • 17.
  • 18.
    Conventions • Make • Workflowgit basé sur le Github Flow • Documentation • Technique dans le dépôt en markdown • Fonctionnelle dans Confluence
  • 19.
    Conventions • CodeReview systématique •CodingStandard • PSR-2 • hook de commits • SensioLabs Insight
  • 20.
    Deploy • Depuis hôteavec Capifony/Capistrano • On se penche sur la création de build par la stack CI
  • 21.
  • 22.
    Conclusion • Pas malde souci avec vagrant/virtualbox (DNS, NFS) • Beaucoup d'énergie sur la couche infra • Ne pas tout changer en même temps 🙀
  • 23.
    Conclusion • Objectif atteint •Montée en compétences rapide et cadrées sur les projets • Stack infra carrée -> Offre Hosting Elao • Qualité augmentée sans impact pour le projet 😺
  • 24.
    Conclusion • Les technosvont plus vite que les projets • Résister aux sirènes des nouvelles techno, mais pas trop • Pragmatisme, se focus sur ce qui apporte le plus de valeur ajoutée ⚠
  • 25.
  • 26.
    Stand Espace denetworking www.lazerdrive.io Ce soir à 18h10 dans l’amphi