SlideShare une entreprise Scribd logo
1  sur  23
Télécharger pour lire hors ligne
Where Content Means Business
Symfony PHP NYC meetup
Why we ditched our legacy framework for Symfony
- a journey to Symfony2 (full stack)
Roland Benedetti - Product @ezsystems
An Open Source PHP CMS Pioneer
2
• Coming from Norway and Europe, but now designed in Brooklyn
• Creators of eZ Publish platform, an Open Source CMS pioneer, still alive and kicking!
• 40k+ members in the community
• More than 5M downloads (stopped counting…)
• 2.55M lines of code :-(
• Commercial Open Source (GPL) CMS offering for Enterprise
• but also fathers of eZ Components, who turned into Apache Zeta Components
Back in spring 2011
3
In 2011, eZ Publish 4.x codebase has 8 years, is rock solid, went through PHP4 and PHP5,
very well accepted but shows some limitations. Our challenge back then:
• To redevelop the core business logic - the content repository and its APIs to allow future
scalability and cloud infrastructure needs.
• To adopt a real layered architecture and rely on a framework technology used by many and
not just us - moving from in-house fwk to a one shared with a wider community.
Our options
4
• Our own eZ Components / Zeta components libraries
• Zend (slightly loosing traction, and quite heavy)
• Symfony 2 (gaining traction)
• Moving to another platform (Java / Spring)
And we went for…
5
What made us tick:
• Native HTTP approach for cache, promising nice perspectives on use of ESI (Edge Side
Include) and ability to implement very smart caching.
• The very vibrant and growing community (especially in Europe and France)
Our major concern:
• The performance of Symfony without Cache.
Retrospectively
6
A very good move, 1st for non-technical reasons:
• Shifting focus to our core activity: the content management, not the app. fwk
• Cross pollination between communities (the Symfony community but also other
communities using Symfony, like Sylius, Oro, Drupal…)
• Fostering contributions in our ecosystem
• Making it easier to customize
Retrospectively
7
Technically, also a very good move very well adopted in the community.
Top 5 of the perks asking developers:
#1 Composer
8
A top-notch dependency mgmt tool, PHP is much better than you think :-)
Reinvent the way we deploy PHP apps (and eZ Publish)
#2 Twig
9
Bye bye home-brewed TPL engine, we loved your fetch-functions but
now we can really clearly separate view from business logic!
#3 Semantic Configuration
10
Because it’s so much better in YML…
#4 Packaging your own App
11
One single app. to rule them all
Example:
Sylius (http://sylius.org/) + eZ
= full Content+Commerce solution (forget connectors)
#5 The cache approach, and fit with Varnish
12
We loved the initial cache approach, but we even more love how we
were able to extend it to be context aware and smart
https://doc.ez.no/display/EZP/Context+aware+HTTP+cache
https://github.com/FriendsOfSymfony/FOSHttpCacheBundle
Where Content Means Business
How we did it?
Symfony as components or as a fwk? We wanted a Fwk!
14
15
Symfony as components or as a fwk? We wanted a Fwk!
A progressive move with as little BC breaks
16
5.25.1 5.35.0 5.4
legacy
New	
  Stacklegacy
eZ Publish eZ Publish Platform eZ Platform
Targeted architecture
17
Storage
eZ	
  Pla,orm	
  Business	
  Logic
Persistence	
  &	
  IO	
  SPI
Public	
  API
Symfony2	
  Web	
  Framework
REST	
  API
Twig	
  Template	
  Engine
Website	
  /	
  Demo	
  site
CMS	
  	
  
User	
  	
  
Interface	
  
End	
  Users	
  
(Website	
  users)
Editor,	
  	
  
Marketer,	
  	
  
Admin	
  
(CMS	
  users)
Web	
  Service
User	
  Interface
APIs
Web	
  Framework	
  &	
  dev
Kernel(s)
Content	
  &	
  Data
Current architecture (5.x)
…
18Storage
legacy	
  kernel:

eZ	
  Publish	
  Legacy	
  
Business	
  Locic	
  (LS)	
   eZ	
  Pla,orm	
  kernel:	
  
eZ	
  Pla,orm	
  Business	
  Logic
Persistence	
  &	
  IO	
  SPI
Public	
  API
Symfony2	
  Full	
  Stack
REST	
  API
Twig	
  Template	
  Engine
eZ	
  &	
  custom	
  controllers
eZ	
  Template	
  Engine	
  (LS)
Legacy	
  modules
Website	
  /	
  Demo	
  siteCMS	
  UI	
  (LS)
End	
  Users	
  
(Website	
  users)
Editor,	
  Marketer,	
  	
  
Admin	
  
(CMS	
  users)
Web	
  Service	
  
IntegraRon
User	
  Interface
APIs
Web	
  Framework	
  &	
  dev
Kernel(s)
Content	
  &	
  Data
New	
  kernel	
  &	
  legacy	
  kernel	
  
Interoperability
New architecture (eZ Platform)
Storage
eZ	
  Pla,orm	
  Business	
  Logic
Persistence	
  &	
  IO	
  SPI
Public	
  API
Symfony2	
  Web	
  Framework
REST	
  API
Twig	
  Template	
  Engine
Website	
  /	
  Demo	
  site
eZ	
  Pla,orm	
  U.I.
End	
  Users	
  
(Website	
  users)
Editor,	
  	
  
Marketer,	
  	
  
Admin	
  
(CMS	
  users)
Web	
  Service
User	
  Interface
APIs
Web	
  Framework	
  &	
  dev
Kernel(s)
Content	
  &	
  Data
eZ	
  Studio
legacy	
  
kernel	
  
(opRonal	
  	
  
non	
  supported	
  bundle)
old	
  UI
New architecture (eZ Platform)
Rich	
  Internet	
  ApplicaRon	
  
• javaScript	
  Based	
  
• relying	
  	
  heavily	
  on	
  eZ	
  REST	
  API	
  
• YUI	
  as	
  a	
  basis	
  for	
  the	
  JS	
  framework
Storage	
  System
Web	
  Browser	
  
JS	
  ApplicaRon
Web	
  Server	
  
eZ	
  Pla,orm	
  Kernel	
  
PAPI
eZ	
  
JS	
  
REST	
  
Client
REST	
  
API Business	
  	
  
Logic
ApplicaRon	
  	
  
Logic
JS	
  Framework	
  
(YUI)
Content	
  	
  
Repository
PresentaRon	
  
Logic
Technical Debt
21
Wanna check it out?
http://doc.ez.no http://share.ez.no
http://www.sitepoint.com/getting-started-ez-platform-vagrant/
22
Where Content Means Business
Thanks! Symfony rocks!
roland.benedetti@ez.no - @rolandbenedetti

Contenu connexe

Tendances

ASP.NET on zLinux: A New Workload
ASP.NET on zLinux: A New WorkloadASP.NET on zLinux: A New Workload
ASP.NET on zLinux: A New Workload
Novell
 
OSGi made simple - Fuse Application Bundles
OSGi made simple - Fuse Application BundlesOSGi made simple - Fuse Application Bundles
OSGi made simple - Fuse Application Bundles
Rob Davies
 

Tendances (6)

ASP.NET on zLinux: A New Workload
ASP.NET on zLinux: A New WorkloadASP.NET on zLinux: A New Workload
ASP.NET on zLinux: A New Workload
 
OSGi made simple - Fuse Application Bundles
OSGi made simple - Fuse Application BundlesOSGi made simple - Fuse Application Bundles
OSGi made simple - Fuse Application Bundles
 
OSGi & Java EE: A hybrid approach to Enterprise Java Application Development,...
OSGi & Java EE: A hybrid approach to Enterprise Java Application Development,...OSGi & Java EE: A hybrid approach to Enterprise Java Application Development,...
OSGi & Java EE: A hybrid approach to Enterprise Java Application Development,...
 
MuleSoft Surat Virtual Meetup#33 - Unleash the power of Anypoint MQ and DLQ
MuleSoft Surat Virtual Meetup#33 - Unleash the power of Anypoint MQ and DLQ MuleSoft Surat Virtual Meetup#33 - Unleash the power of Anypoint MQ and DLQ
MuleSoft Surat Virtual Meetup#33 - Unleash the power of Anypoint MQ and DLQ
 
Rich Ajax Platform - theEdge 2012 conference presentation
Rich Ajax Platform - theEdge 2012 conference presentationRich Ajax Platform - theEdge 2012 conference presentation
Rich Ajax Platform - theEdge 2012 conference presentation
 
Building Agile and Resilient Schema Transformations using Apache Kafka and ESB's
Building Agile and Resilient Schema Transformations using Apache Kafka and ESB'sBuilding Agile and Resilient Schema Transformations using Apache Kafka and ESB's
Building Agile and Resilient Schema Transformations using Apache Kafka and ESB's
 

Similaire à Ny symfony meetup may 2015

eZ Publish Norwegian Public User Group
eZ Publish Norwegian Public User GroupeZ Publish Norwegian Public User Group
eZ Publish Norwegian Public User Group
Roland Benedetti
 
Introducing eZ Publish Platform 5.1 - webinar
Introducing eZ Publish Platform 5.1 - webinarIntroducing eZ Publish Platform 5.1 - webinar
Introducing eZ Publish Platform 5.1 - webinar
Roland Benedetti
 
POCO C++ Libraries Intro and Overview
POCO C++ Libraries Intro and OverviewPOCO C++ Libraries Intro and Overview
POCO C++ Libraries Intro and Overview
Günter Obiltschnig
 

Similaire à Ny symfony meetup may 2015 (20)

Unleash your Symfony projects with eZ Platform
Unleash your Symfony projects with eZ PlatformUnleash your Symfony projects with eZ Platform
Unleash your Symfony projects with eZ Platform
 
eZ Publish Norwegian Public User Group
eZ Publish Norwegian Public User GroupeZ Publish Norwegian Public User Group
eZ Publish Norwegian Public User Group
 
Top PHP Frameworks in 2024 That Developer Must Know
Top PHP Frameworks in 2024 That Developer Must KnowTop PHP Frameworks in 2024 That Developer Must Know
Top PHP Frameworks in 2024 That Developer Must Know
 
Introducing symfony
Introducing symfonyIntroducing symfony
Introducing symfony
 
Content Management Systems and Refactoring - Drupal, WordPress and eZ Publish
Content Management Systems and Refactoring - Drupal, WordPress and eZ PublishContent Management Systems and Refactoring - Drupal, WordPress and eZ Publish
Content Management Systems and Refactoring - Drupal, WordPress and eZ Publish
 
Top 6 php framework
Top 6 php frameworkTop 6 php framework
Top 6 php framework
 
eZ UnConference#2 - eZ Publish 5 basics Philippe Vincent-Royol & Florent Huck
eZ UnConference#2 - eZ Publish 5 basics Philippe Vincent-Royol & Florent HuckeZ UnConference#2 - eZ Publish 5 basics Philippe Vincent-Royol & Florent Huck
eZ UnConference#2 - eZ Publish 5 basics Philippe Vincent-Royol & Florent Huck
 
The distinct advantages of using PHP-Symfony Framework
The distinct advantages of using PHP-Symfony FrameworkThe distinct advantages of using PHP-Symfony Framework
The distinct advantages of using PHP-Symfony Framework
 
Ria Applications And PHP
Ria Applications And PHPRia Applications And PHP
Ria Applications And PHP
 
Introducing eZ Publish Platform 5.1 - webinar
Introducing eZ Publish Platform 5.1 - webinarIntroducing eZ Publish Platform 5.1 - webinar
Introducing eZ Publish Platform 5.1 - webinar
 
Introduction to eZ Publish Platform 5.3, the Ventoux release, public webinar
Introduction to eZ Publish Platform 5.3, the Ventoux release, public webinarIntroduction to eZ Publish Platform 5.3, the Ventoux release, public webinar
Introduction to eZ Publish Platform 5.3, the Ventoux release, public webinar
 
Lamp Zend Security
Lamp Zend SecurityLamp Zend Security
Lamp Zend Security
 
BEdita, a development platform
BEdita, a development platformBEdita, a development platform
BEdita, a development platform
 
Symfony framework-An overview and usability for web development
Symfony framework-An overview and usability for web developmentSymfony framework-An overview and usability for web development
Symfony framework-An overview and usability for web development
 
POCO C++ Libraries Intro and Overview
POCO C++ Libraries Intro and OverviewPOCO C++ Libraries Intro and Overview
POCO C++ Libraries Intro and Overview
 
ERTS 2008 - Using Linux for industrial projects
ERTS 2008 - Using Linux for industrial projectsERTS 2008 - Using Linux for industrial projects
ERTS 2008 - Using Linux for industrial projects
 
A Tale of Two Toolkits
A Tale of Two ToolkitsA Tale of Two Toolkits
A Tale of Two Toolkits
 
Redfish and python-redfish for Software Defined Infrastructure
Redfish and python-redfish for Software Defined InfrastructureRedfish and python-redfish for Software Defined Infrastructure
Redfish and python-redfish for Software Defined Infrastructure
 
A high profile project with Symfony and API Platform: beIN SPORTS
A high profile project with Symfony and API Platform: beIN SPORTSA high profile project with Symfony and API Platform: beIN SPORTS
A high profile project with Symfony and API Platform: beIN SPORTS
 
Workshop Trends In Open Source Tech 1 20 10
Workshop Trends In Open Source Tech 1 20 10Workshop Trends In Open Source Tech 1 20 10
Workshop Trends In Open Source Tech 1 20 10
 

Plus de Roland Benedetti

eZ Publish Platform 5.2 - Webinaire d'introduction
eZ Publish Platform 5.2 - Webinaire d'introductioneZ Publish Platform 5.2 - Webinaire d'introduction
eZ Publish Platform 5.2 - Webinaire d'introduction
Roland Benedetti
 
Story 2-search & create container
Story 2-search & create containerStory 2-search & create container
Story 2-search & create container
Roland Benedetti
 

Plus de Roland Benedetti (16)

Decoupled days, headless and decoupled content management, the value for the ...
Decoupled days, headless and decoupled content management, the value for the ...Decoupled days, headless and decoupled content management, the value for the ...
Decoupled days, headless and decoupled content management, the value for the ...
 
eZ Platform 2.1: product update
eZ Platform 2.1: product updateeZ Platform 2.1: product update
eZ Platform 2.1: product update
 
eZ Publish Platform 5.4 public webinar
eZ Publish Platform 5.4 public webinareZ Publish Platform 5.4 public webinar
eZ Publish Platform 5.4 public webinar
 
eZ Summer Camp 2014: interactive dive into ez product backlog
eZ Summer Camp 2014:  interactive dive into ez product backlogeZ Summer Camp 2014:  interactive dive into ez product backlog
eZ Summer Camp 2014: interactive dive into ez product backlog
 
Adaptive, context aware content management in eZ Platform - part 2
Adaptive, context aware content management in eZ Platform - part 2Adaptive, context aware content management in eZ Platform - part 2
Adaptive, context aware content management in eZ Platform - part 2
 
Introduction à eZ Publish Platform 5.3
Introduction à eZ Publish Platform 5.3 Introduction à eZ Publish Platform 5.3
Introduction à eZ Publish Platform 5.3
 
Think product workshop at J. Boye 14, awaken the Steve Jobs in you
Think product workshop at J. Boye 14, awaken the Steve Jobs in youThink product workshop at J. Boye 14, awaken the Steve Jobs in you
Think product workshop at J. Boye 14, awaken the Steve Jobs in you
 
User Experience? What is it?
User Experience? What is it?User Experience? What is it?
User Experience? What is it?
 
eZ Publish Platform 5.2 - Webinaire d'introduction
eZ Publish Platform 5.2 - Webinaire d'introductioneZ Publish Platform 5.2 - Webinaire d'introduction
eZ Publish Platform 5.2 - Webinaire d'introduction
 
eZ Publish Platform 5.2 and roadmap
eZ Publish Platform 5.2 and roadmapeZ Publish Platform 5.2 and roadmap
eZ Publish Platform 5.2 and roadmap
 
eZ unconference rolandbenedetti
eZ unconference rolandbenedettieZ unconference rolandbenedetti
eZ unconference rolandbenedetti
 
Story 1.1-basic-edit -sub-items
Story 1.1-basic-edit -sub-itemsStory 1.1-basic-edit -sub-items
Story 1.1-basic-edit -sub-items
 
Story 4 frontpage
Story 4 frontpageStory 4 frontpage
Story 4 frontpage
 
Story 3-landing page with form wall
Story 3-landing page with form wallStory 3-landing page with form wall
Story 3-landing page with form wall
 
Story 2-search & create container
Story 2-search & create containerStory 2-search & create container
Story 2-search & create container
 
Story 1
Story 1Story 1
Story 1
 

Dernier

CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
anilsa9823
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
anilsa9823
 

Dernier (20)

call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 

Ny symfony meetup may 2015

  • 1. Where Content Means Business Symfony PHP NYC meetup Why we ditched our legacy framework for Symfony - a journey to Symfony2 (full stack) Roland Benedetti - Product @ezsystems
  • 2. An Open Source PHP CMS Pioneer 2 • Coming from Norway and Europe, but now designed in Brooklyn • Creators of eZ Publish platform, an Open Source CMS pioneer, still alive and kicking! • 40k+ members in the community • More than 5M downloads (stopped counting…) • 2.55M lines of code :-( • Commercial Open Source (GPL) CMS offering for Enterprise • but also fathers of eZ Components, who turned into Apache Zeta Components
  • 3. Back in spring 2011 3 In 2011, eZ Publish 4.x codebase has 8 years, is rock solid, went through PHP4 and PHP5, very well accepted but shows some limitations. Our challenge back then: • To redevelop the core business logic - the content repository and its APIs to allow future scalability and cloud infrastructure needs. • To adopt a real layered architecture and rely on a framework technology used by many and not just us - moving from in-house fwk to a one shared with a wider community.
  • 4. Our options 4 • Our own eZ Components / Zeta components libraries • Zend (slightly loosing traction, and quite heavy) • Symfony 2 (gaining traction) • Moving to another platform (Java / Spring)
  • 5. And we went for… 5 What made us tick: • Native HTTP approach for cache, promising nice perspectives on use of ESI (Edge Side Include) and ability to implement very smart caching. • The very vibrant and growing community (especially in Europe and France) Our major concern: • The performance of Symfony without Cache.
  • 6. Retrospectively 6 A very good move, 1st for non-technical reasons: • Shifting focus to our core activity: the content management, not the app. fwk • Cross pollination between communities (the Symfony community but also other communities using Symfony, like Sylius, Oro, Drupal…) • Fostering contributions in our ecosystem • Making it easier to customize
  • 7. Retrospectively 7 Technically, also a very good move very well adopted in the community. Top 5 of the perks asking developers:
  • 8. #1 Composer 8 A top-notch dependency mgmt tool, PHP is much better than you think :-) Reinvent the way we deploy PHP apps (and eZ Publish)
  • 9. #2 Twig 9 Bye bye home-brewed TPL engine, we loved your fetch-functions but now we can really clearly separate view from business logic!
  • 10. #3 Semantic Configuration 10 Because it’s so much better in YML…
  • 11. #4 Packaging your own App 11 One single app. to rule them all Example: Sylius (http://sylius.org/) + eZ = full Content+Commerce solution (forget connectors)
  • 12. #5 The cache approach, and fit with Varnish 12 We loved the initial cache approach, but we even more love how we were able to extend it to be context aware and smart https://doc.ez.no/display/EZP/Context+aware+HTTP+cache https://github.com/FriendsOfSymfony/FOSHttpCacheBundle
  • 13. Where Content Means Business How we did it?
  • 14. Symfony as components or as a fwk? We wanted a Fwk! 14
  • 15. 15 Symfony as components or as a fwk? We wanted a Fwk!
  • 16. A progressive move with as little BC breaks 16 5.25.1 5.35.0 5.4 legacy New  Stacklegacy eZ Publish eZ Publish Platform eZ Platform
  • 17. Targeted architecture 17 Storage eZ  Pla,orm  Business  Logic Persistence  &  IO  SPI Public  API Symfony2  Web  Framework REST  API Twig  Template  Engine Website  /  Demo  site CMS     User     Interface   End  Users   (Website  users) Editor,     Marketer,     Admin   (CMS  users) Web  Service User  Interface APIs Web  Framework  &  dev Kernel(s) Content  &  Data
  • 18. Current architecture (5.x) … 18Storage legacy  kernel:
 eZ  Publish  Legacy   Business  Locic  (LS)   eZ  Pla,orm  kernel:   eZ  Pla,orm  Business  Logic Persistence  &  IO  SPI Public  API Symfony2  Full  Stack REST  API Twig  Template  Engine eZ  &  custom  controllers eZ  Template  Engine  (LS) Legacy  modules Website  /  Demo  siteCMS  UI  (LS) End  Users   (Website  users) Editor,  Marketer,     Admin   (CMS  users) Web  Service   IntegraRon User  Interface APIs Web  Framework  &  dev Kernel(s) Content  &  Data New  kernel  &  legacy  kernel   Interoperability
  • 19. New architecture (eZ Platform) Storage eZ  Pla,orm  Business  Logic Persistence  &  IO  SPI Public  API Symfony2  Web  Framework REST  API Twig  Template  Engine Website  /  Demo  site eZ  Pla,orm  U.I. End  Users   (Website  users) Editor,     Marketer,     Admin   (CMS  users) Web  Service User  Interface APIs Web  Framework  &  dev Kernel(s) Content  &  Data eZ  Studio legacy   kernel   (opRonal     non  supported  bundle) old  UI
  • 20. New architecture (eZ Platform) Rich  Internet  ApplicaRon   • javaScript  Based   • relying    heavily  on  eZ  REST  API   • YUI  as  a  basis  for  the  JS  framework Storage  System Web  Browser   JS  ApplicaRon Web  Server   eZ  Pla,orm  Kernel   PAPI eZ   JS   REST   Client REST   API Business     Logic ApplicaRon     Logic JS  Framework   (YUI) Content     Repository PresentaRon   Logic
  • 22. Wanna check it out? http://doc.ez.no http://share.ez.no http://www.sitepoint.com/getting-started-ez-platform-vagrant/ 22
  • 23. Where Content Means Business Thanks! Symfony rocks! roland.benedetti@ez.no - @rolandbenedetti