1) In 2011, eZ Systems faced limitations with their legacy PHP framework and wanted to adopt a new framework to allow for future scalability and cloud infrastructure needs.
2) They considered options like continuing with their own components, using Zend or Symfony, or moving to another platform like Java/Spring.
3) They ultimately chose Symfony due to its growing community, native HTTP approach and caching capabilities, which allowed them to shift their focus from the application framework to their core content management activities.
4) The transition to Symfony proved to be a good decision both technically and for community engagement, and Symfony's features like Composer, Twig and configuration
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
How we ditched our legacy framework for Symfony
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
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
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