SlideShare una empresa de Scribd logo
1 de 20
EZPUBLISH5
Re architecture, pitfalls and opportunities
From simple presentation
and content management
   to digital business
                Focus on organization’s core-
                    business and simplify
                         complexity:
                     cloud-enablement

Market-driven Innovation
The 5 pillars of
Innovation @
eZ                            eZ
                                       eZ R&D
                           Community

Community
eZ R&D
Partner conferences
Product Innovation Board
eZ Market
AGENDA
•   About: eZ & Speaker           •   Re architecture: Concepts

•   Re architecture: Why?         •   Tobias Schlitt on several
                                      central pieces of the
•   Re architecture: Prior work       architecture & testing
                                      methodology
•   Re architecture: How?
                                  •   Re architecture: Next steps
•   Re architecture: Mistakes
                                  •   ..
ABOUT EZ SYSTEMS

• Started   in 1999 in Norway

• Employ[ed]   several PHP internals/community members

• Locally present in Germany, Norway, UK, France, US,
 Italy, Spain, Finland, Japan, China

• Acquired   odoscope & yoochoose last year

• 120ish    employees and growing
ABOUT EZ PUBLISH

• Open    source CMS written in PHP

• Focus   on:

 • Generalization

 • Highly   extensible

• Lotsof contributed extensions from community &
 partners
ABOUT SPEAKER

•   https://twitter.com/#!/andrerom



•   7 years working with eZ Publish, the community &
    PHP



•   Before that: Misc html / Js / .Net / web consulting,
    Economics studies, dj’ing, military, alpine racing, basket ball
                                                                  , football, ice hockey, tennis
                                                                                               ,   *cough* boy scout
WHY?
<del>A  picture</              * NOTE: you have to provide the following attributes:
                           *    contentobject_id
                           *    contentobject_attribute_id

del><ins>Code</ins> is     *
                           * @param array $row
                           * @return object

worth a thousand           */
                         static function create( $row = array() )


words!
                         {
                              if ( !isset( $row['contentobject_id'] ) )
                                  eZDebug::writeError( 'Missing 'contentobject_id' parameter!', __METHOD__ );
WHY2?



• Align   the solution closer with target market

• Fully   take advantage of PHP 5[.3] features

• Adapt    emerging technologies

• Reduce     maintenance overhead & simplify use..

• Sync    up with the rest of the PHP ecosystem
PRIOR WORK


• 2005/6:   eZ Components

• 2007:   Prototype & planning of refactoring

• 2009:   Planning of larger refactoring to support NoSQL

• 2010/1:   Start on current eZ Publish 5 efforts
TIMELINE
•   January 2011: New technical PM starting

•   February: Meetings to get a common ground on the architecture

•   March: UML provided

•   April-Mai: Engineering rejecting the UML and starting on own interpretation of architecture

•   June-September: Implementation

•   November: Decision to reboot the process

•   December - January 2012: Re design
HOW: RE ARCHITECTURE




             SPI
HOW: RE ARCHITECTURE

• Adapt
     Separation of concern, Domain driven design and
 HMVC:

 • Dependency/Service      injection container

 • M: Repository   & Services with Model Factories

 • C: “Thin” Controllers

 • H: Clean   (V)views
CONCEPT: STRICT “DIC”

• Insteadof container awareness: Closures for lazy d. loading!
 Example: Your Router takes a list of Route’s as arguments,
 these routes has a dependency on a controller (one pr route)

• Solution: Makethe Route’s only accept is_callable() values for
 $controller, making it possible to use: closures, static call or
 array( $controller, ‘run’ ) as argument.

• Lazy
     loaded (%) closure example with a defined callback:
 [ContentLoctionItemRoute]
 arguments[uri]=content/location
 arguments[controller]=%ContentLocationController::run
GOTO QAFOO;



• Testing+REST   part of presentation on http://talks.qafoo.com/
CURRENTLY


• Public   API

• REST     API v2

• Editorial   interface

• (H)MVC      using Symfony2
NEXT STEPS


• Workflows

• NoSQL

• Re     adding Oracle and MSSQL support

• (..)
?:



• Any   questions?
‘LAST’ => ‘BUTNOTLEAST’



• We’re
      hiring in several countries, among others Cologne,
 Germany.
FIN;


• Code:             https://github.com/ezsystems/ezp-next



 http://ez.no                                 http://qafoo.com
        twitter.com/#!/andrerom
 https://                                twitter.com/#!/tobySen
                                  https://

Más contenido relacionado

Similar a eZ Publish 5, Re architecture, pitfalls and opportunities

Xcode, Basics and Beyond
Xcode, Basics and BeyondXcode, Basics and Beyond
Xcode, Basics and Beyondrsebbe
 
Introducing ASP.NET vNext – The Future of .NET on the Server | FalafelCON 2014
Introducing ASP.NET vNext – The Future of .NET on the Server | FalafelCON 2014Introducing ASP.NET vNext – The Future of .NET on the Server | FalafelCON 2014
Introducing ASP.NET vNext – The Future of .NET on the Server | FalafelCON 2014FalafelSoftware
 
Introducing ASP.NET vNext - A tour of the new ASP.NET platform
Introducing ASP.NET vNext - A tour of the new ASP.NET platformIntroducing ASP.NET vNext - A tour of the new ASP.NET platform
Introducing ASP.NET vNext - A tour of the new ASP.NET platformJeffrey T. Fritz
 
New voice, new tone, new IA: Writing for the modern developer
New voice, new tone, new IA: Writing for the modern developerNew voice, new tone, new IA: Writing for the modern developer
New voice, new tone, new IA: Writing for the modern developerKeith Boyd
 
DSpace UI prototype dsember
DSpace UI prototype dsemberDSpace UI prototype dsember
DSpace UI prototype dsemberBram Luyten
 
My personal story from azure it pro to azure dev ops
My personal story from azure it pro to azure dev opsMy personal story from azure it pro to azure dev ops
My personal story from azure it pro to azure dev opsnj-azure
 
"Project Tye to Tie .NET Microservices", Oleg Karasik
"Project Tye to Tie .NET Microservices", Oleg Karasik"Project Tye to Tie .NET Microservices", Oleg Karasik
"Project Tye to Tie .NET Microservices", Oleg KarasikFwdays
 
Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)Ivo Jansch
 
Standardizing and Managing Your Infrastructure - MOSC 2011
Standardizing and Managing Your Infrastructure - MOSC 2011Standardizing and Managing Your Infrastructure - MOSC 2011
Standardizing and Managing Your Infrastructure - MOSC 2011Brian Ritchie
 
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchAugust Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchHoward Greenberg
 
They why behind php frameworks
They why behind php frameworksThey why behind php frameworks
They why behind php frameworksKirk Madera
 
DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2Docker, Inc.
 
Untangling DevOps - A high-level overview and how we got here
Untangling DevOps -  A high-level overview and how we got hereUntangling DevOps -  A high-level overview and how we got here
Untangling DevOps - A high-level overview and how we got hereBarton George
 
Debugging with Zend Studio for Eclipse
Debugging with Zend Studio for EclipseDebugging with Zend Studio for Eclipse
Debugging with Zend Studio for EclipseOSSCube
 
NetWork - 15.10.2011 - Applied code generation in .NET
NetWork - 15.10.2011 - Applied code generation in .NET NetWork - 15.10.2011 - Applied code generation in .NET
NetWork - 15.10.2011 - Applied code generation in .NET Dmytro Mindra
 
Lean Startup with WebObjects
Lean Startup with WebObjectsLean Startup with WebObjects
Lean Startup with WebObjectsWO Community
 
Hadoop Demystified + Automation Smackdown! Austin JUG June 24 2014
Hadoop Demystified + Automation Smackdown!  Austin JUG June 24 2014Hadoop Demystified + Automation Smackdown!  Austin JUG June 24 2014
Hadoop Demystified + Automation Smackdown! Austin JUG June 24 2014datafundamentals
 
Dev ops lessons learned - Michael Collins
Dev ops lessons learned  - Michael CollinsDev ops lessons learned  - Michael Collins
Dev ops lessons learned - Michael CollinsDevopsdays
 

Similar a eZ Publish 5, Re architecture, pitfalls and opportunities (20)

Xcode, Basics and Beyond
Xcode, Basics and BeyondXcode, Basics and Beyond
Xcode, Basics and Beyond
 
Introducing ASP.NET vNext – The Future of .NET on the Server | FalafelCON 2014
Introducing ASP.NET vNext – The Future of .NET on the Server | FalafelCON 2014Introducing ASP.NET vNext – The Future of .NET on the Server | FalafelCON 2014
Introducing ASP.NET vNext – The Future of .NET on the Server | FalafelCON 2014
 
Introducing ASP.NET vNext - A tour of the new ASP.NET platform
Introducing ASP.NET vNext - A tour of the new ASP.NET platformIntroducing ASP.NET vNext - A tour of the new ASP.NET platform
Introducing ASP.NET vNext - A tour of the new ASP.NET platform
 
Stackato
StackatoStackato
Stackato
 
New voice, new tone, new IA: Writing for the modern developer
New voice, new tone, new IA: Writing for the modern developerNew voice, new tone, new IA: Writing for the modern developer
New voice, new tone, new IA: Writing for the modern developer
 
DSpace UI prototype dsember
DSpace UI prototype dsemberDSpace UI prototype dsember
DSpace UI prototype dsember
 
My personal story from azure it pro to azure dev ops
My personal story from azure it pro to azure dev opsMy personal story from azure it pro to azure dev ops
My personal story from azure it pro to azure dev ops
 
"Project Tye to Tie .NET Microservices", Oleg Karasik
"Project Tye to Tie .NET Microservices", Oleg Karasik"Project Tye to Tie .NET Microservices", Oleg Karasik
"Project Tye to Tie .NET Microservices", Oleg Karasik
 
Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)
 
Standardizing and Managing Your Infrastructure - MOSC 2011
Standardizing and Managing Your Infrastructure - MOSC 2011Standardizing and Managing Your Infrastructure - MOSC 2011
Standardizing and Managing Your Infrastructure - MOSC 2011
 
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchAugust Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
 
They why behind php frameworks
They why behind php frameworksThey why behind php frameworks
They why behind php frameworks
 
DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2
 
Untangling DevOps - A high-level overview and how we got here
Untangling DevOps -  A high-level overview and how we got hereUntangling DevOps -  A high-level overview and how we got here
Untangling DevOps - A high-level overview and how we got here
 
Debugging with Zend Studio for Eclipse
Debugging with Zend Studio for EclipseDebugging with Zend Studio for Eclipse
Debugging with Zend Studio for Eclipse
 
NetWork - 15.10.2011 - Applied code generation in .NET
NetWork - 15.10.2011 - Applied code generation in .NET NetWork - 15.10.2011 - Applied code generation in .NET
NetWork - 15.10.2011 - Applied code generation in .NET
 
Last Call Media Drupal 8 Case Study
Last Call Media Drupal 8 Case StudyLast Call Media Drupal 8 Case Study
Last Call Media Drupal 8 Case Study
 
Lean Startup with WebObjects
Lean Startup with WebObjectsLean Startup with WebObjects
Lean Startup with WebObjects
 
Hadoop Demystified + Automation Smackdown! Austin JUG June 24 2014
Hadoop Demystified + Automation Smackdown!  Austin JUG June 24 2014Hadoop Demystified + Automation Smackdown!  Austin JUG June 24 2014
Hadoop Demystified + Automation Smackdown! Austin JUG June 24 2014
 
Dev ops lessons learned - Michael Collins
Dev ops lessons learned  - Michael CollinsDev ops lessons learned  - Michael Collins
Dev ops lessons learned - Michael Collins
 

Más de André Rømcke

SymfonyCon 2019: Head first into Symfony Cache, Redis & Redis Cluster
SymfonyCon 2019:   Head first into Symfony Cache, Redis & Redis ClusterSymfonyCon 2019:   Head first into Symfony Cache, Redis & Redis Cluster
SymfonyCon 2019: Head first into Symfony Cache, Redis & Redis ClusterAndré Rømcke
 
SfDay 2019: Head first into Symfony Cache, Redis & Redis Cluster
SfDay 2019: Head first into Symfony Cache, Redis & Redis ClusterSfDay 2019: Head first into Symfony Cache, Redis & Redis Cluster
SfDay 2019: Head first into Symfony Cache, Redis & Redis ClusterAndré Rømcke
 
Symfony live London 2018 - Take your http caching to the next level with xke...
Symfony live London 2018 -  Take your http caching to the next level with xke...Symfony live London 2018 -  Take your http caching to the next level with xke...
Symfony live London 2018 - Take your http caching to the next level with xke...André Rømcke
 
PHP Benelux 2017 - Caching The Right Way
PHP Benelux 2017 -  Caching The Right WayPHP Benelux 2017 -  Caching The Right Way
PHP Benelux 2017 - Caching The Right WayAndré Rømcke
 
Look Towards 2.0 and Beyond - eZ Conference 2016
Look Towards 2.0 and Beyond -   eZ Conference 2016Look Towards 2.0 and Beyond -   eZ Conference 2016
Look Towards 2.0 and Beyond - eZ Conference 2016André Rømcke
 
Getting instantly up and running with Docker and Symfony
Getting instantly up and running with Docker and SymfonyGetting instantly up and running with Docker and Symfony
Getting instantly up and running with Docker and SymfonyAndré Rømcke
 
Dockerize your Symfony application - Symfony Live NYC 2014
Dockerize your Symfony application - Symfony Live NYC 2014Dockerize your Symfony application - Symfony Live NYC 2014
Dockerize your Symfony application - Symfony Live NYC 2014André Rømcke
 
PhpTour Lyon 2014 - Transparent caching & context aware http cache
PhpTour Lyon 2014 - Transparent caching & context aware http cachePhpTour Lyon 2014 - Transparent caching & context aware http cache
PhpTour Lyon 2014 - Transparent caching & context aware http cacheAndré Rømcke
 
eZ publish 5[-alpha1] Introduction & Architecture
eZ publish 5[-alpha1] Introduction & ArchitectureeZ publish 5[-alpha1] Introduction & Architecture
eZ publish 5[-alpha1] Introduction & ArchitectureAndré Rømcke
 

Más de André Rømcke (9)

SymfonyCon 2019: Head first into Symfony Cache, Redis & Redis Cluster
SymfonyCon 2019:   Head first into Symfony Cache, Redis & Redis ClusterSymfonyCon 2019:   Head first into Symfony Cache, Redis & Redis Cluster
SymfonyCon 2019: Head first into Symfony Cache, Redis & Redis Cluster
 
SfDay 2019: Head first into Symfony Cache, Redis & Redis Cluster
SfDay 2019: Head first into Symfony Cache, Redis & Redis ClusterSfDay 2019: Head first into Symfony Cache, Redis & Redis Cluster
SfDay 2019: Head first into Symfony Cache, Redis & Redis Cluster
 
Symfony live London 2018 - Take your http caching to the next level with xke...
Symfony live London 2018 -  Take your http caching to the next level with xke...Symfony live London 2018 -  Take your http caching to the next level with xke...
Symfony live London 2018 - Take your http caching to the next level with xke...
 
PHP Benelux 2017 - Caching The Right Way
PHP Benelux 2017 -  Caching The Right WayPHP Benelux 2017 -  Caching The Right Way
PHP Benelux 2017 - Caching The Right Way
 
Look Towards 2.0 and Beyond - eZ Conference 2016
Look Towards 2.0 and Beyond -   eZ Conference 2016Look Towards 2.0 and Beyond -   eZ Conference 2016
Look Towards 2.0 and Beyond - eZ Conference 2016
 
Getting instantly up and running with Docker and Symfony
Getting instantly up and running with Docker and SymfonyGetting instantly up and running with Docker and Symfony
Getting instantly up and running with Docker and Symfony
 
Dockerize your Symfony application - Symfony Live NYC 2014
Dockerize your Symfony application - Symfony Live NYC 2014Dockerize your Symfony application - Symfony Live NYC 2014
Dockerize your Symfony application - Symfony Live NYC 2014
 
PhpTour Lyon 2014 - Transparent caching & context aware http cache
PhpTour Lyon 2014 - Transparent caching & context aware http cachePhpTour Lyon 2014 - Transparent caching & context aware http cache
PhpTour Lyon 2014 - Transparent caching & context aware http cache
 
eZ publish 5[-alpha1] Introduction & Architecture
eZ publish 5[-alpha1] Introduction & ArchitectureeZ publish 5[-alpha1] Introduction & Architecture
eZ publish 5[-alpha1] Introduction & Architecture
 

Último

Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 

Último (20)

Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 

eZ Publish 5, Re architecture, pitfalls and opportunities

  • 2. From simple presentation and content management to digital business Focus on organization’s core- business and simplify complexity: cloud-enablement Market-driven Innovation
  • 3. The 5 pillars of Innovation @ eZ eZ eZ R&D Community Community eZ R&D Partner conferences Product Innovation Board eZ Market
  • 4. AGENDA • About: eZ & Speaker • Re architecture: Concepts • Re architecture: Why? • Tobias Schlitt on several central pieces of the • Re architecture: Prior work architecture & testing methodology • Re architecture: How? • Re architecture: Next steps • Re architecture: Mistakes • ..
  • 5. ABOUT EZ SYSTEMS • Started in 1999 in Norway • Employ[ed] several PHP internals/community members • Locally present in Germany, Norway, UK, France, US, Italy, Spain, Finland, Japan, China • Acquired odoscope & yoochoose last year • 120ish employees and growing
  • 6. ABOUT EZ PUBLISH • Open source CMS written in PHP • Focus on: • Generalization • Highly extensible • Lotsof contributed extensions from community & partners
  • 7. ABOUT SPEAKER • https://twitter.com/#!/andrerom • 7 years working with eZ Publish, the community & PHP • Before that: Misc html / Js / .Net / web consulting, Economics studies, dj’ing, military, alpine racing, basket ball , football, ice hockey, tennis , *cough* boy scout
  • 8. WHY? <del>A picture</ * NOTE: you have to provide the following attributes: * contentobject_id * contentobject_attribute_id del><ins>Code</ins> is * * @param array $row * @return object worth a thousand */ static function create( $row = array() ) words! { if ( !isset( $row['contentobject_id'] ) ) eZDebug::writeError( 'Missing 'contentobject_id' parameter!', __METHOD__ );
  • 9. WHY2? • Align the solution closer with target market • Fully take advantage of PHP 5[.3] features • Adapt emerging technologies • Reduce maintenance overhead & simplify use.. • Sync up with the rest of the PHP ecosystem
  • 10. PRIOR WORK • 2005/6: eZ Components • 2007: Prototype & planning of refactoring • 2009: Planning of larger refactoring to support NoSQL • 2010/1: Start on current eZ Publish 5 efforts
  • 11. TIMELINE • January 2011: New technical PM starting • February: Meetings to get a common ground on the architecture • March: UML provided • April-Mai: Engineering rejecting the UML and starting on own interpretation of architecture • June-September: Implementation • November: Decision to reboot the process • December - January 2012: Re design
  • 13. HOW: RE ARCHITECTURE • Adapt Separation of concern, Domain driven design and HMVC: • Dependency/Service injection container • M: Repository & Services with Model Factories • C: “Thin” Controllers • H: Clean (V)views
  • 14. CONCEPT: STRICT “DIC” • Insteadof container awareness: Closures for lazy d. loading! Example: Your Router takes a list of Route’s as arguments, these routes has a dependency on a controller (one pr route) • Solution: Makethe Route’s only accept is_callable() values for $controller, making it possible to use: closures, static call or array( $controller, ‘run’ ) as argument. • Lazy loaded (%) closure example with a defined callback: [ContentLoctionItemRoute] arguments[uri]=content/location arguments[controller]=%ContentLocationController::run
  • 15. GOTO QAFOO; • Testing+REST part of presentation on http://talks.qafoo.com/
  • 16. CURRENTLY • Public API • REST API v2 • Editorial interface • (H)MVC using Symfony2
  • 17. NEXT STEPS • Workflows • NoSQL • Re adding Oracle and MSSQL support • (..)
  • 18. ?: • Any questions?
  • 19. ‘LAST’ => ‘BUTNOTLEAST’ • We’re hiring in several countries, among others Cologne, Germany.
  • 20. FIN; • Code: https://github.com/ezsystems/ezp-next http://ez.no http://qafoo.com twitter.com/#!/andrerom https:// twitter.com/#!/tobySen https://

Notas del editor

  1. [background image curtsy of public-domain-image.com]\n
  2. Original community speaker notes (skipped for time during presentation): \nThe grand narrative of our innovation strategy is simply that of our wider company development strategy: market-driven, leading organizations must adapt to the constantly changing environment and our role is to empower them to create their own, and their communities&amp;#x2019; online services experience.\n \nAn online presence &amp; the display of web content has evolved from simple screen-based presentations and the management of content, towards a set of more systematic and integrated digital business processes. The environment has evolved from generally performing analogue processes with digital technology, to an era of true digitization.\n\nIn most cases management of digital services can now be outsourced which benefits an increased focus on the organization&amp;#x2019;s core-business. Further, cloud-based platform offerings add simplicity, cost-control, and highly manageable complexity. By &amp;#x201C;platform&amp;#x201D; eZ means a closed-loop management capability from content gathering, to systematic optimization of any digital presence and business.\n
  3. Original community speaker notes (skipped for time during presentation):Innovation at eZ lays on 5 pillars. The Community is by nature a strong influencer and important contributor, tightly collaborating with our R&amp;D and Engineering team. Our professional community is one bridge to the market, as is our partner network, which, through regular meetings and conferences, as well as through participation in eZ&amp;#x2019;s Product Innovation Board, brings valuable insight and vision to eZ&amp;#x2019;s Platform. eZ Market, extensions market place, completes the picture.\n\nHere is how we translate this into technology(then continue over to the heart of the presentation).\n
  4. \n
  5. - eZ has had the pleasure of employing PHP people like Derick Rethans, Sebastian Bergmann, Kore Nordmann, Tobias Schlitt, and Patrick Allaert (Last 3 currently working with eZ)\n- Originally pure PHP shop, but now with a diverse engineering team in Cologne after acquisition of osc and ych with competence in C++, .NET and JAVA.\n
  6. - Generalization: makes eZ Publish a fitting solution in a lot of verticals (markets)\n- ext: To avoid need for hacking the solution and hence make it hard to upgrade\n\nFact: eZ Publish was for many years used as an OOP example for software engineering students because of it&amp;#x2019;s extensive use of OOP which was not normal in PHP.\n\n
  7. \n
  8. [Technically]\ntop: Errors don&amp;#x2019;t throw, they give errors often ignored which causes often big [performance|consistency] problems later for implementers, or in worst case the customer.\nleft: Business, persistence and db layer is one and the same causing lots of duplicated code and 0 possibility of NoSQL migration\nbottom: This is considered a &amp;#x201C;clean template&amp;#x201D; in eZ Publish terms, but templates have much more business logic then they should, this leads to issues long term, much more template code to maintain, is difficult to test and impossible to get html knowledgeable designers/hackers to help out on.\n
  9. [Business/Market]\n- As eZ is and has for some year been focusing on the Enterprise market, re factor the product to better serve this market today and in the future\n- Use PHP 5 and 5.3 features from day one, also being able to removing features that can now be handled by PHP or other parts of the stack\n- Start to use patterns and technologies that have been getting foothold in PHP over the last 3+ years\n- Much higher focus on testing up front in form of Unit tests, integration tests and function testing, + layered architecture with separation of concern; reducing code duplication dramatically\n- Adoption of some PSR standards, use of composer, use of Symfony, ...\n
  10. Most notable prior work on refactoring eZ Publish:\n- 2005/6: eZ Components was a rewrite of libraries in eZ Publish on PHP 5.0, intention was to rewrite/refactor eZ Publish on top of these in 2006/7\n- 2007: eZ Publish 4.0 was planned to have bigger changes then it got, but market demand for a PHP 5 version of eZ Publish was to strong so plans changed to release PHP 5 version early\n- 2008: Plans to gradually replace parts of eZ Publish with eZ Components. Archive, SystemInformation, Feed, Mail, SignalSlot and WebDav introduced over the following years\n- 2009: First plans for large refactoring to be able to take advantage of NoSQL databases\n- 2010/1: Start on working on what we currently refer to as eZ Publish 5 \n\n
  11. Zoom in on 2011- Present: How the projects started, surrounding project roles and the different backgrounds of the first 3 involved, goals and timelines.\n- Lack of specifications, or the fact that what was created was not followed by engineers.\n- TPM was not defined as architect, and Engineers where told they where free to take own direction and TPM was only there to help.\n- In the original implementation we relayed a lot on magic because we where first and foremost focusing on making the api as easy to use as possible, hence $content-&gt;location[0]-&gt;parent-&gt;content-&gt;section-&gt;name would work, but it lead to high levels of complexity and need for things like proxy classes for almost all classes and impossible to use things like var_[dump|export] in php and also lots of circular references. Now: Pure value objects with no knowledge of Repository, more verbose but also much more explicit API, hence making it for instance very obvious when something will trigger database access and not.\n- Take out: Defining your roles in your team, especially who is the Architect and make everyone agree on / believe in the high and mid level view of the architecture. This is especially important when having team members in countries with a culture where employees are used to having a say in decisions\n\n
  12. [High level]\nPublic API that is fully documented, and related to earlier remark on giving errors, gives you exceptions early if you do something wrong, handles permissions for you and deals with sql dialects deep down in the storage engine (PDO)\nGreen arrow shows the currently aimed migration / integrations between &amp;#x201C;legacy kernel&amp;#x201D; and new architecture.\n
  13. - DIC: Handles your dependencies so objects don&amp;#x2019;t have to know anything but interfaces, this leads to lot of less init code (factory calls, singeltons and other things that makes testing harder).- Model: Public API\n- Controllers: Given API deals with SQL abstractions, BL, and permissions, far less works needs to be done in controllers, hence &amp;#x201C;thin&amp;#x201D;.\n- Hierarchical + Views: By adapting hierarchical structure, far less logic needs to be in templates. Makes it easier to unit test your site, and for designers to dare working on your templates.\n - As we have decided to use Symfony Framework for our H + V layers, the proper term is actually request / response, but effect is the same in regards to getting BL out of views.\n
  14. - d.: Dependency\n- Reason why you some time want to lazy load dependencies is most obvious in cases like above (controllers), as they can have a range of dependencies of their own and hence end up loading all services in the systems. Another would be field types in eZ Publish, &amp;#x201C;Content[Type]Service&amp;#x201D; needs to know about these, but loading them all with all their potential dependencies would be overkill.\n
  15. \n
  16. Public API: more field types &amp; permissions, and additional API&amp;#x2019;s (url alias + object state + ..)\nREST API v2: Hateoas REST interface on top of Public API as shown by Tobias\nEditorial interface: Concept work, wire framing, early design work and prototyping.\nSymfony: As frameworks comes and goes, and new breaking versions will always appear when enough new features in the PHP language warrants it, so we will create our own interfaces that cover the most common use cases to extension/plugin writers for future proofing. On top of using Symfony2 we are currently evaluating using some Symfony CMF parts as well.\n\n \n
  17. NoSQL: We plan to do a prototype of a NoSQL implementation of our persistence API in the late summer/ early fall, to make sure our Public API / Persistence SPI interfaces actually works on it.\n
  18. - Sum outtakes: Define your team roles, embrace SOC DDD and other &amp;#x201C;Java patterns&amp;#x201D;, avoid magic (especially if it breaks SOC), this means keeping your dependencies highly de coupled, which again means use of interfaces and absolutely no use of globals including singletons; look into how [D|S] Injection containers work and you&amp;#x2019;ll see the light ;)\n
  19. - As mentioned in the intro, this is a great possibility to work in a diverse team with knowledge from highly scalable cloud infrastructure in java to optimized c++ and algorithms.\n
  20. - git repo includes simple steps for how to checkout and setup the project to run on inmemory implementation, this is still in very active development but expect stabilization by the end of the summer and move to /ezpublish repo.\n