SlideShare una empresa de Scribd logo
1 de 35
Alt. Content DeliveryAlan Runyan Plone Symposium East State College, Pennsylvania 5/29/09
Overview Review modes of content delivery Why and what purpose  Existing solutions for Plone Strengths and Weakness ContentMirror in detail Conclusion
What is it Two modes in-band & out-of-band Plone Default is “in band” Req to Plone; Plone computes Resp e.g. XDV, mod_wsgi, mod_proxy, varnish Atypical usage of Plone, “out of band” Plone emits content into intermediary storage Plone is not involved in responding to Req No other FOSS CMS has such feature
How Others Do It Render pages to filesystem + sync Custom programming to iterate over repository rendering views to disk Provide an API into repository for web-tier application to source content Promote the database schema as API
Out of Band Static Delivery Generates static assets from Plone Assets transferred to web server Statically rendered content served Dynamic Delivery Plone pushes content into 3rd party data store Separate web application to display content
Why? Static Delivery Constraints in delivery mode of website Security requires no moving parts e.g. Kiosk, updated every X hours Dynamic Delivery Web application is vastly different than CMS Different organizational / skill-sets being used e.g. existing website is .NET; want new section to be driven by Plone
Current Options Static Delivery CMFDeployment enpraxis.staticsite Dynamic Delivery Entransit ContentMirror
Plone Approach Render pages to filesystem + sync CMFDeployment, enpraxis.staticsite Promote the database schema as API Entransit, contentmirror Provide API into the Repository wsapi4plone.parfait
CMFDeployment Static delivery Strengths Various large projects have used it Very flexible configuration modes Supports transport Weakness Flexibility brings complexity / lacks testing Last release 2006
In the Wild
enpraxis.staticsite Static delivery Strengths Very simple and approachable Serializes Plone to file system Weakness Requires programming & deployment Lack of documentation and testing
In the Wild
Entransit Dynamic Delivery Strengths Supports staging of entire changesets Conceptually simple Weakness Requires too much programming Documentation and testing is lacking Too many moving parts Does not have connection to CMS during load into data store.  Significantly complicates state mgmt
In the Wild
ContentMirror Dynamic delivery Strengths Simple, Extensible, and Fast Tight coupling with Plone event model Weakness Evolving data store & Plone models requires discipline Data model currently exposes impl details
In the Wild
Wrap Up Alt delivery is atypical use case for Plone Systems with multiple ORG actors Static Delivery vs. Dynamic Delivery Building up is more approachable Documentation / Testing critical Dynamic delivery: CM is best bet. Entransit 2 plans on layering staging on CM Now lets go into details of ContentMirror
ContentMirror Pitch  Sync Serialize content from Plone RDBMS Just Works™ Small code base < 1k LOC; 99% coverage Let SQLAlchemy do heavy lifting RDBMS query-ability of content attributes Well tested, 99% coverage + mocked
Evaluate Today Buildout: Plone, ContentMirror, and SOLREstimate: 30 minutes Configuration of Relational DatabaseEstimate: 20 minutes Bootstrap database with ddl.pyEstimate: 5 minutes Have real time Plone Content (RDBMS) and Search (SOLR); Now pick frontend.
Usages Business reports based on content repository (i.e. Crystal Reports, iReport) Provide richer queries (using SQL) Store data in multiple back ends RDBMS Google App Engine
You already know If you do not customize Plone heavily; it migrates really well. Plone lots of neat features: WebDAV (Enfold Desktop;), LDAP, Content Types, Cache Fu (Enfold Proxy;), etc. So the authoring experience is flexible, configurable, and enjoyable You can have multiple “sub-sites”
Observations Presentation tiers have different requirements than content repository Simplicity is key.  Maintaining presentation tiers have to be simple; few abstractions PHP or Django have few abstractions to display dynamic data on web page Isolate complexity; never will go away Plone seen as self-licking ice cream cone
The Story Big university has 200 IT staff; all busy managing HR, ERP, printers, etc. Individual departments are independent and have transient staff who manage web Departments need way to use transient staff to maintain web presence; if CMS exists.  Transient staff can use PHP. PHP, Django, .NET developers are cheap
More Story There is no way IT can: Manage all department changes centrally Maintain system that has software changing daily or hourly Allow people to make a change that impacts campus wide system Noam in Linguistics should not be able write code which DoS the campus CMS IT does best with focus: keep systems up.
Even More Story? IT offer primitives: LDAP (users), RDBMS (content), SOLR (search).  Commodity services Departments implement however they like ContentMirror is a lightweight step towards decoupling the CMS from presentation Make presentation as flexible as possible
Installation Buildout the recipe.cfg Put SQLAlchemy URI in .zcml or ENV bin/instance run ddl.py $DB > out.ddl Execute out.ddl Start Zope Create Plone site and add content Query your RDBMS
Features Auto-generate DDL for registered types All default Plone content types work Currently focused on Archetypes; z3 easy Bulk import of Plone content into RDBMS Re-entrant (run multiple times) Schema available in JSON (vocabularies) Fast. Serialized 100k content + references in < 20m
Your content type Create new zcml that is included <configure xmlns="http://namespaces.zope.org/zope" xmlns:ore="http://namespaces.objectrealms.net/mirror">   <ore:engineurl="mysql://user:passwd@host/database"              name="mirror-db"              encoding='utf8'              echo="False"/>          <ore:mirror content="Products.AudioholicsContent.AHHomePage.AHHomePage"/> </ore:engine> </configure> Re-run ddl.py; execute ddl.py in RDBMS All default Plone content types work OOTB
Field not available? ore.contentmirror/transform.zcmlcontains adapters for how AT Fields are mapped to SQLAlchemy ore.contentmirror/transform.pycontains the adapter source code  <adapter      for=".interfaces.ITextField .interfaces.ISchemaTransformer"      provides=".interfaces.IFieldTransformer"      factory=".transform.TextTransform"      />
Escape Hatch If you don’t want field level serialization Write custom transformer for your class You take full responsibility for Copying state from instance to RDBMS May also have to do some extra work
Of Interest ore.contentmirror/operation.py Provide buffer to filter out duplicate operations Simple pattern for transaction integration ore.contentmirror/jsonschema.py Serializes AT schemas into RDBMS via a JSON structure Presentation can easily find out what the original schema (including vocabularies) Not used by default
Dynamism What about PloneFormGen or interaction? ContentMirror would serialize the Form elements as database rows; FE has to draw and validate forms Collage would generate data representing rows, columns pointing to content UID Presentation tier does re-implement common functionality (RSS, Login, etc)
Conclusion Significant experience in community Starting simple is more approachable Static vs. Dynamic CM has a great experience OOTB rc2 has minor OOTB issue; all fixed in trunk Staging not implemented across multiplecontent types. DEV, STAGE, PROD Alt delivery is a minority use case.
Conclusion You would never know that Plone fits these use cases Little visibility in broader community Hard to separate the add-on pile collective simply has too much activity Costly to maintain; advocate Without formal support in Plone support expensive KapilThangavelu wrote ContentMirror & CMFDeployment – awesome software designer!
Fin Content Mirror (ore.contentmirror) http://code.google.com/p/contentmirror/ SOLR (collective.solr)http://lucene.apache.org/solr/ Enfold Systemshttp://www.enfoldsystems.com/ My email addressalan@enfoldsystems.com

Más contenido relacionado

La actualidad más candente

JNUC 2017: Open Distribution Server
JNUC 2017: Open Distribution ServerJNUC 2017: Open Distribution Server
JNUC 2017: Open Distribution ServerBryson Tyrrell
 
Succeding with the Apache SOA stack
Succeding with the Apache SOA stackSucceding with the Apache SOA stack
Succeding with the Apache SOA stackJohan Edstrom
 
ScalabilityAvailability
ScalabilityAvailabilityScalabilityAvailability
ScalabilityAvailabilitywebuploader
 
Using IBM's Cast Iron with SugarCRM to Integrate Customer Data | SugarCon 2011
Using IBM's Cast Iron with SugarCRM to Integrate Customer Data | SugarCon 2011Using IBM's Cast Iron with SugarCRM to Integrate Customer Data | SugarCon 2011
Using IBM's Cast Iron with SugarCRM to Integrate Customer Data | SugarCon 2011SugarCRM
 
Web Server/App Server Connectivity
Web Server/App Server ConnectivityWeb Server/App Server Connectivity
Web Server/App Server Connectivitywebhostingguy
 
Service Oriented Integration With ServiceMix
Service Oriented Integration With ServiceMixService Oriented Integration With ServiceMix
Service Oriented Integration With ServiceMixBruce Snyder
 
JUDCon 2010 - Innovative ideas for Integration Solutions through JBoss ESB
JUDCon 2010 - Innovative ideas for Integration Solutions through JBoss ESBJUDCon 2010 - Innovative ideas for Integration Solutions through JBoss ESB
JUDCon 2010 - Innovative ideas for Integration Solutions through JBoss ESBEdgar Silva
 
Building A Simple Web Service With CXF
Building A Simple Web Service With CXFBuilding A Simple Web Service With CXF
Building A Simple Web Service With CXFCarl Lu
 

La actualidad más candente (9)

JNUC 2017: Open Distribution Server
JNUC 2017: Open Distribution ServerJNUC 2017: Open Distribution Server
JNUC 2017: Open Distribution Server
 
Succeding with the Apache SOA stack
Succeding with the Apache SOA stackSucceding with the Apache SOA stack
Succeding with the Apache SOA stack
 
ScalabilityAvailability
ScalabilityAvailabilityScalabilityAvailability
ScalabilityAvailability
 
Presemtation Tier Optimizations
Presemtation Tier OptimizationsPresemtation Tier Optimizations
Presemtation Tier Optimizations
 
Using IBM's Cast Iron with SugarCRM to Integrate Customer Data | SugarCon 2011
Using IBM's Cast Iron with SugarCRM to Integrate Customer Data | SugarCon 2011Using IBM's Cast Iron with SugarCRM to Integrate Customer Data | SugarCon 2011
Using IBM's Cast Iron with SugarCRM to Integrate Customer Data | SugarCon 2011
 
Web Server/App Server Connectivity
Web Server/App Server ConnectivityWeb Server/App Server Connectivity
Web Server/App Server Connectivity
 
Service Oriented Integration With ServiceMix
Service Oriented Integration With ServiceMixService Oriented Integration With ServiceMix
Service Oriented Integration With ServiceMix
 
JUDCon 2010 - Innovative ideas for Integration Solutions through JBoss ESB
JUDCon 2010 - Innovative ideas for Integration Solutions through JBoss ESBJUDCon 2010 - Innovative ideas for Integration Solutions through JBoss ESB
JUDCon 2010 - Innovative ideas for Integration Solutions through JBoss ESB
 
Building A Simple Web Service With CXF
Building A Simple Web Service With CXFBuilding A Simple Web Service With CXF
Building A Simple Web Service With CXF
 

Destacado

David Convent - Theme It Yourself
David Convent - Theme It YourselfDavid Convent - Theme It Yourself
David Convent - Theme It Yourselfdavconvent
 
Enterprise search in plone using solr
Enterprise search in plone using solrEnterprise search in plone using solr
Enterprise search in plone using solrCalvin Hendryx-Parker
 
Lennart Regebro What Zope Did Wrong (And What To Do Instead)
Lennart Regebro   What Zope Did Wrong (And What To Do Instead)Lennart Regebro   What Zope Did Wrong (And What To Do Instead)
Lennart Regebro What Zope Did Wrong (And What To Do Instead)Vincenzo Barone
 
David Rey Lessons Learned Updating Content Licensing To Be Plone 3 Compat...
David Rey   Lessons Learned   Updating Content Licensing To Be Plone 3 Compat...David Rey   Lessons Learned   Updating Content Licensing To Be Plone 3 Compat...
David Rey Lessons Learned Updating Content Licensing To Be Plone 3 Compat...Vincenzo Barone
 
Where's the source, Luke? : How to find and debug the code behind Plone
Where's the source, Luke? : How to find and debug the code behind PloneWhere's the source, Luke? : How to find and debug the code behind Plone
Where's the source, Luke? : How to find and debug the code behind PloneVincenzo Barone
 
How to market Plone the Web2.0 way
How to market Plone the Web2.0 wayHow to market Plone the Web2.0 way
How to market Plone the Web2.0 wayVincenzo Barone
 
Plone I18n Tutorial - Hanno Schlichting
Plone I18n Tutorial - Hanno SchlichtingPlone I18n Tutorial - Hanno Schlichting
Plone I18n Tutorial - Hanno SchlichtingJeffrey Clark
 

Destacado (7)

David Convent - Theme It Yourself
David Convent - Theme It YourselfDavid Convent - Theme It Yourself
David Convent - Theme It Yourself
 
Enterprise search in plone using solr
Enterprise search in plone using solrEnterprise search in plone using solr
Enterprise search in plone using solr
 
Lennart Regebro What Zope Did Wrong (And What To Do Instead)
Lennart Regebro   What Zope Did Wrong (And What To Do Instead)Lennart Regebro   What Zope Did Wrong (And What To Do Instead)
Lennart Regebro What Zope Did Wrong (And What To Do Instead)
 
David Rey Lessons Learned Updating Content Licensing To Be Plone 3 Compat...
David Rey   Lessons Learned   Updating Content Licensing To Be Plone 3 Compat...David Rey   Lessons Learned   Updating Content Licensing To Be Plone 3 Compat...
David Rey Lessons Learned Updating Content Licensing To Be Plone 3 Compat...
 
Where's the source, Luke? : How to find and debug the code behind Plone
Where's the source, Luke? : How to find and debug the code behind PloneWhere's the source, Luke? : How to find and debug the code behind Plone
Where's the source, Luke? : How to find and debug the code behind Plone
 
How to market Plone the Web2.0 way
How to market Plone the Web2.0 wayHow to market Plone the Web2.0 way
How to market Plone the Web2.0 way
 
Plone I18n Tutorial - Hanno Schlichting
Plone I18n Tutorial - Hanno SchlichtingPlone I18n Tutorial - Hanno Schlichting
Plone I18n Tutorial - Hanno Schlichting
 

Similar a Content delivery Plone Symposium East 2010

A winning combination: Plone as CMS and your favorite Python web framework as...
A winning combination: Plone as CMS and your favorite Python web framework as...A winning combination: Plone as CMS and your favorite Python web framework as...
A winning combination: Plone as CMS and your favorite Python web framework as...Carlos de la Guardia
 
Near real-time anomaly detection at Lyft
Near real-time anomaly detection at LyftNear real-time anomaly detection at Lyft
Near real-time anomaly detection at Lyftmarkgrover
 
Everything comes in 3's
Everything comes in 3'sEverything comes in 3's
Everything comes in 3'sdelagoya
 
Automating Oracle Database deployment with Amazon Web Services, fabric, and boto
Automating Oracle Database deployment with Amazon Web Services, fabric, and botoAutomating Oracle Database deployment with Amazon Web Services, fabric, and boto
Automating Oracle Database deployment with Amazon Web Services, fabric, and botomjbommar
 
Normalizing x pages web development
Normalizing x pages web development Normalizing x pages web development
Normalizing x pages web development Shean McManus
 
Taking Your FDM Application to the Next Level with Advanced Scripting
Taking Your FDM Application to the Next Level with Advanced ScriptingTaking Your FDM Application to the Next Level with Advanced Scripting
Taking Your FDM Application to the Next Level with Advanced ScriptingAlithya
 
MY NEWEST RESUME
MY NEWEST RESUMEMY NEWEST RESUME
MY NEWEST RESUMEHan Yan
 
Spca2014 share point azure_the_best_of_friends_moneypenny
Spca2014 share point  azure_the_best_of_friends_moneypennySpca2014 share point  azure_the_best_of_friends_moneypenny
Spca2014 share point azure_the_best_of_friends_moneypennyNCCOMMS
 
Voldemort & Hadoop @ Linkedin, Hadoop User Group Jan 2010
Voldemort & Hadoop @ Linkedin, Hadoop User Group Jan 2010Voldemort & Hadoop @ Linkedin, Hadoop User Group Jan 2010
Voldemort & Hadoop @ Linkedin, Hadoop User Group Jan 2010Bhupesh Bansal
 
Hadoop and Voldemort @ LinkedIn
Hadoop and Voldemort @ LinkedInHadoop and Voldemort @ LinkedIn
Hadoop and Voldemort @ LinkedInHadoop User Group
 
Build Python CMS The Plone Way
Build Python CMS The Plone WayBuild Python CMS The Plone Way
Build Python CMS The Plone WayTsungWei Hu
 
Puppet overview
Puppet overviewPuppet overview
Puppet overviewjoshbeard
 
Mainframe Architecture & Product Overview
Mainframe Architecture & Product OverviewMainframe Architecture & Product Overview
Mainframe Architecture & Product Overviewabhi1112
 
Switch to Alfresco with Seed in Australia and New Zealand
Switch to Alfresco with Seed in Australia and New ZealandSwitch to Alfresco with Seed in Australia and New Zealand
Switch to Alfresco with Seed in Australia and New ZealandAlfresco Software
 
Splunk Conf 2014 - Getting the message
Splunk Conf 2014 - Getting the messageSplunk Conf 2014 - Getting the message
Splunk Conf 2014 - Getting the messageDamien Dallimore
 
Super Sizing Youtube with Python
Super Sizing Youtube with PythonSuper Sizing Youtube with Python
Super Sizing Youtube with Pythondidip
 
System Architecture at DDVE
System Architecture at DDVESystem Architecture at DDVE
System Architecture at DDVEAlvar Lumberg
 
Php Frameworks
Php FrameworksPhp Frameworks
Php FrameworksRyan Davis
 

Similar a Content delivery Plone Symposium East 2010 (20)

A winning combination: Plone as CMS and your favorite Python web framework as...
A winning combination: Plone as CMS and your favorite Python web framework as...A winning combination: Plone as CMS and your favorite Python web framework as...
A winning combination: Plone as CMS and your favorite Python web framework as...
 
Near real-time anomaly detection at Lyft
Near real-time anomaly detection at LyftNear real-time anomaly detection at Lyft
Near real-time anomaly detection at Lyft
 
Everything comes in 3's
Everything comes in 3'sEverything comes in 3's
Everything comes in 3's
 
Automating Oracle Database deployment with Amazon Web Services, fabric, and boto
Automating Oracle Database deployment with Amazon Web Services, fabric, and botoAutomating Oracle Database deployment with Amazon Web Services, fabric, and boto
Automating Oracle Database deployment with Amazon Web Services, fabric, and boto
 
Normalizing x pages web development
Normalizing x pages web development Normalizing x pages web development
Normalizing x pages web development
 
Taking Your FDM Application to the Next Level with Advanced Scripting
Taking Your FDM Application to the Next Level with Advanced ScriptingTaking Your FDM Application to the Next Level with Advanced Scripting
Taking Your FDM Application to the Next Level with Advanced Scripting
 
MY NEWEST RESUME
MY NEWEST RESUMEMY NEWEST RESUME
MY NEWEST RESUME
 
Top 8 WCM Trends 2010
Top 8 WCM Trends 2010Top 8 WCM Trends 2010
Top 8 WCM Trends 2010
 
Spca2014 share point azure_the_best_of_friends_moneypenny
Spca2014 share point  azure_the_best_of_friends_moneypennySpca2014 share point  azure_the_best_of_friends_moneypenny
Spca2014 share point azure_the_best_of_friends_moneypenny
 
Voldemort & Hadoop @ Linkedin, Hadoop User Group Jan 2010
Voldemort & Hadoop @ Linkedin, Hadoop User Group Jan 2010Voldemort & Hadoop @ Linkedin, Hadoop User Group Jan 2010
Voldemort & Hadoop @ Linkedin, Hadoop User Group Jan 2010
 
Hadoop and Voldemort @ LinkedIn
Hadoop and Voldemort @ LinkedInHadoop and Voldemort @ LinkedIn
Hadoop and Voldemort @ LinkedIn
 
Build Python CMS The Plone Way
Build Python CMS The Plone WayBuild Python CMS The Plone Way
Build Python CMS The Plone Way
 
Puppet overview
Puppet overviewPuppet overview
Puppet overview
 
Mainframe Architecture & Product Overview
Mainframe Architecture & Product OverviewMainframe Architecture & Product Overview
Mainframe Architecture & Product Overview
 
Switch to Alfresco with Seed in Australia and New Zealand
Switch to Alfresco with Seed in Australia and New ZealandSwitch to Alfresco with Seed in Australia and New Zealand
Switch to Alfresco with Seed in Australia and New Zealand
 
Splunk Conf 2014 - Getting the message
Splunk Conf 2014 - Getting the messageSplunk Conf 2014 - Getting the message
Splunk Conf 2014 - Getting the message
 
Os Solomon
Os SolomonOs Solomon
Os Solomon
 
Super Sizing Youtube with Python
Super Sizing Youtube with PythonSuper Sizing Youtube with Python
Super Sizing Youtube with Python
 
System Architecture at DDVE
System Architecture at DDVESystem Architecture at DDVE
System Architecture at DDVE
 
Php Frameworks
Php FrameworksPhp Frameworks
Php Frameworks
 

Último

unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
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
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
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
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
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
 
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
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
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
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 

Último (20)

unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
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)
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
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
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
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
 
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
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
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
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 

Content delivery Plone Symposium East 2010

  • 1. Alt. Content DeliveryAlan Runyan Plone Symposium East State College, Pennsylvania 5/29/09
  • 2. Overview Review modes of content delivery Why and what purpose Existing solutions for Plone Strengths and Weakness ContentMirror in detail Conclusion
  • 3. What is it Two modes in-band & out-of-band Plone Default is “in band” Req to Plone; Plone computes Resp e.g. XDV, mod_wsgi, mod_proxy, varnish Atypical usage of Plone, “out of band” Plone emits content into intermediary storage Plone is not involved in responding to Req No other FOSS CMS has such feature
  • 4. How Others Do It Render pages to filesystem + sync Custom programming to iterate over repository rendering views to disk Provide an API into repository for web-tier application to source content Promote the database schema as API
  • 5. Out of Band Static Delivery Generates static assets from Plone Assets transferred to web server Statically rendered content served Dynamic Delivery Plone pushes content into 3rd party data store Separate web application to display content
  • 6. Why? Static Delivery Constraints in delivery mode of website Security requires no moving parts e.g. Kiosk, updated every X hours Dynamic Delivery Web application is vastly different than CMS Different organizational / skill-sets being used e.g. existing website is .NET; want new section to be driven by Plone
  • 7. Current Options Static Delivery CMFDeployment enpraxis.staticsite Dynamic Delivery Entransit ContentMirror
  • 8. Plone Approach Render pages to filesystem + sync CMFDeployment, enpraxis.staticsite Promote the database schema as API Entransit, contentmirror Provide API into the Repository wsapi4plone.parfait
  • 9. CMFDeployment Static delivery Strengths Various large projects have used it Very flexible configuration modes Supports transport Weakness Flexibility brings complexity / lacks testing Last release 2006
  • 11. enpraxis.staticsite Static delivery Strengths Very simple and approachable Serializes Plone to file system Weakness Requires programming & deployment Lack of documentation and testing
  • 13. Entransit Dynamic Delivery Strengths Supports staging of entire changesets Conceptually simple Weakness Requires too much programming Documentation and testing is lacking Too many moving parts Does not have connection to CMS during load into data store. Significantly complicates state mgmt
  • 15. ContentMirror Dynamic delivery Strengths Simple, Extensible, and Fast Tight coupling with Plone event model Weakness Evolving data store & Plone models requires discipline Data model currently exposes impl details
  • 17. Wrap Up Alt delivery is atypical use case for Plone Systems with multiple ORG actors Static Delivery vs. Dynamic Delivery Building up is more approachable Documentation / Testing critical Dynamic delivery: CM is best bet. Entransit 2 plans on layering staging on CM Now lets go into details of ContentMirror
  • 18. ContentMirror Pitch Sync Serialize content from Plone RDBMS Just Works™ Small code base < 1k LOC; 99% coverage Let SQLAlchemy do heavy lifting RDBMS query-ability of content attributes Well tested, 99% coverage + mocked
  • 19. Evaluate Today Buildout: Plone, ContentMirror, and SOLREstimate: 30 minutes Configuration of Relational DatabaseEstimate: 20 minutes Bootstrap database with ddl.pyEstimate: 5 minutes Have real time Plone Content (RDBMS) and Search (SOLR); Now pick frontend.
  • 20. Usages Business reports based on content repository (i.e. Crystal Reports, iReport) Provide richer queries (using SQL) Store data in multiple back ends RDBMS Google App Engine
  • 21. You already know If you do not customize Plone heavily; it migrates really well. Plone lots of neat features: WebDAV (Enfold Desktop;), LDAP, Content Types, Cache Fu (Enfold Proxy;), etc. So the authoring experience is flexible, configurable, and enjoyable You can have multiple “sub-sites”
  • 22. Observations Presentation tiers have different requirements than content repository Simplicity is key. Maintaining presentation tiers have to be simple; few abstractions PHP or Django have few abstractions to display dynamic data on web page Isolate complexity; never will go away Plone seen as self-licking ice cream cone
  • 23. The Story Big university has 200 IT staff; all busy managing HR, ERP, printers, etc. Individual departments are independent and have transient staff who manage web Departments need way to use transient staff to maintain web presence; if CMS exists. Transient staff can use PHP. PHP, Django, .NET developers are cheap
  • 24. More Story There is no way IT can: Manage all department changes centrally Maintain system that has software changing daily or hourly Allow people to make a change that impacts campus wide system Noam in Linguistics should not be able write code which DoS the campus CMS IT does best with focus: keep systems up.
  • 25. Even More Story? IT offer primitives: LDAP (users), RDBMS (content), SOLR (search). Commodity services Departments implement however they like ContentMirror is a lightweight step towards decoupling the CMS from presentation Make presentation as flexible as possible
  • 26. Installation Buildout the recipe.cfg Put SQLAlchemy URI in .zcml or ENV bin/instance run ddl.py $DB > out.ddl Execute out.ddl Start Zope Create Plone site and add content Query your RDBMS
  • 27. Features Auto-generate DDL for registered types All default Plone content types work Currently focused on Archetypes; z3 easy Bulk import of Plone content into RDBMS Re-entrant (run multiple times) Schema available in JSON (vocabularies) Fast. Serialized 100k content + references in < 20m
  • 28. Your content type Create new zcml that is included <configure xmlns="http://namespaces.zope.org/zope" xmlns:ore="http://namespaces.objectrealms.net/mirror"> <ore:engineurl="mysql://user:passwd@host/database" name="mirror-db" encoding='utf8' echo="False"/> <ore:mirror content="Products.AudioholicsContent.AHHomePage.AHHomePage"/> </ore:engine> </configure> Re-run ddl.py; execute ddl.py in RDBMS All default Plone content types work OOTB
  • 29. Field not available? ore.contentmirror/transform.zcmlcontains adapters for how AT Fields are mapped to SQLAlchemy ore.contentmirror/transform.pycontains the adapter source code <adapter for=".interfaces.ITextField .interfaces.ISchemaTransformer" provides=".interfaces.IFieldTransformer" factory=".transform.TextTransform" />
  • 30. Escape Hatch If you don’t want field level serialization Write custom transformer for your class You take full responsibility for Copying state from instance to RDBMS May also have to do some extra work
  • 31. Of Interest ore.contentmirror/operation.py Provide buffer to filter out duplicate operations Simple pattern for transaction integration ore.contentmirror/jsonschema.py Serializes AT schemas into RDBMS via a JSON structure Presentation can easily find out what the original schema (including vocabularies) Not used by default
  • 32. Dynamism What about PloneFormGen or interaction? ContentMirror would serialize the Form elements as database rows; FE has to draw and validate forms Collage would generate data representing rows, columns pointing to content UID Presentation tier does re-implement common functionality (RSS, Login, etc)
  • 33. Conclusion Significant experience in community Starting simple is more approachable Static vs. Dynamic CM has a great experience OOTB rc2 has minor OOTB issue; all fixed in trunk Staging not implemented across multiplecontent types. DEV, STAGE, PROD Alt delivery is a minority use case.
  • 34. Conclusion You would never know that Plone fits these use cases Little visibility in broader community Hard to separate the add-on pile collective simply has too much activity Costly to maintain; advocate Without formal support in Plone support expensive KapilThangavelu wrote ContentMirror & CMFDeployment – awesome software designer!
  • 35. Fin Content Mirror (ore.contentmirror) http://code.google.com/p/contentmirror/ SOLR (collective.solr)http://lucene.apache.org/solr/ Enfold Systemshttp://www.enfoldsystems.com/ My email addressalan@enfoldsystems.com