SlideShare a Scribd company logo
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

More Related Content

What's hot

JNUC 2017: Open Distribution Server
JNUC 2017: Open Distribution ServerJNUC 2017: Open Distribution Server
JNUC 2017: Open Distribution Server
Bryson Tyrrell
 
Succeding with the Apache SOA stack
Succeding with the Apache SOA stackSucceding with the Apache SOA stack
Succeding with the Apache SOA stack
Johan Edstrom
 
ScalabilityAvailability
ScalabilityAvailabilityScalabilityAvailability
ScalabilityAvailability
webuploader
 
Presemtation Tier Optimizations
Presemtation Tier OptimizationsPresemtation Tier Optimizations
Presemtation Tier Optimizations
Anup Hariharan Nair
 
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
SugarCRM
 
Web Server/App Server Connectivity
Web Server/App Server ConnectivityWeb Server/App Server Connectivity
Web Server/App Server Connectivity
webhostingguy
 
Service Oriented Integration With ServiceMix
Service Oriented Integration With ServiceMixService Oriented Integration With ServiceMix
Service Oriented Integration With ServiceMix
Bruce 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 ESB
Edgar 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 CXF
Carl Lu
 

What's hot (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
 

Viewers also liked

David Convent - Theme It Yourself
David Convent - Theme It YourselfDavid Convent - Theme It Yourself
David Convent - Theme It Yourself
davconvent
 
Enterprise search in plone using solr
Enterprise search in plone using solrEnterprise search in plone using solr
Enterprise search in plone using solr
Calvin 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 Plone
Vincenzo 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 way
Vincenzo Barone
 
Plone I18n Tutorial - Hanno Schlichting
Plone I18n Tutorial - Hanno SchlichtingPlone I18n Tutorial - Hanno Schlichting
Plone I18n Tutorial - Hanno Schlichting
Jeffrey Clark
 

Viewers also liked (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 to 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 Lyft
markgrover
 
Everything comes in 3's
Everything comes in 3'sEverything comes in 3's
Everything comes in 3's
delagoya
 
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
mjbommar
 
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 Scripting
Alithya
 
MY NEWEST RESUME
MY NEWEST RESUMEMY NEWEST RESUME
MY NEWEST RESUME
Han Yan
 
Top 8 WCM Trends 2010
Top 8 WCM Trends 2010Top 8 WCM Trends 2010
Top 8 WCM Trends 2010
David Nuescheler
 
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
NCCOMMS
 
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
Bhupesh Bansal
 
Hadoop and Voldemort @ LinkedIn
Hadoop and Voldemort @ LinkedInHadoop and Voldemort @ LinkedIn
Hadoop and Voldemort @ LinkedIn
Hadoop User Group
 
Build Python CMS The Plone Way
Build Python CMS The Plone WayBuild Python CMS The Plone Way
Build Python CMS The Plone Way
TsungWei Hu
 
Puppet overview
Puppet overviewPuppet overview
Puppet overview
joshbeard
 
Mainframe Architecture & Product Overview
Mainframe Architecture & Product OverviewMainframe Architecture & Product Overview
Mainframe Architecture & Product Overview
abhi1112
 
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
Alfresco Software
 
Splunk Conf 2014 - Getting the message
Splunk Conf 2014 - Getting the messageSplunk Conf 2014 - Getting the message
Splunk Conf 2014 - Getting the message
Damien Dallimore
 
Super Sizing Youtube with Python
Super Sizing Youtube with PythonSuper Sizing Youtube with Python
Super Sizing Youtube with Python
didip
 
Os Solomon
Os SolomonOs Solomon
Os Solomon
oscon2007
 
System Architecture at DDVE
System Architecture at DDVESystem Architecture at DDVE
System Architecture at DDVE
Alvar Lumberg
 
Php Frameworks
Php FrameworksPhp Frameworks
Php Frameworks
Ryan Davis
 

Similar to 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
 
Super Sizing Youtube with Python
Super Sizing Youtube with PythonSuper Sizing Youtube with Python
Super Sizing Youtube with Python
 
Os Solomon
Os SolomonOs Solomon
Os Solomon
 
System Architecture at DDVE
System Architecture at DDVESystem Architecture at DDVE
System Architecture at DDVE
 
Php Frameworks
Php FrameworksPhp Frameworks
Php Frameworks
 

Recently uploaded

Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
Hiroshi SHIBATA
 
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansBiomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Neo4j
 
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
Edge AI and Vision Alliance
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 
Apps Break Data
Apps Break DataApps Break Data
Apps Break Data
Ivo Velitchkov
 
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
saastr
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Alpen-Adria-Universität
 
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving
 
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
Edge AI and Vision Alliance
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
Jason Yip
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
DanBrown980551
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
Essentials of Automations: Exploring Attributes & Automation Parameters
Essentials of Automations: Exploring Attributes & Automation ParametersEssentials of Automations: Exploring Attributes & Automation Parameters
Essentials of Automations: Exploring Attributes & Automation Parameters
Safe Software
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
Chart Kalyan
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
akankshawande
 
Principle of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptxPrinciple of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptx
BibashShahi
 
Y-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PPY-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PP
c5vrf27qcz
 

Recently uploaded (20)

Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
 
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansBiomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
 
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 
Apps Break Data
Apps Break DataApps Break Data
Apps Break Data
 
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
 
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024
 
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
Essentials of Automations: Exploring Attributes & Automation Parameters
Essentials of Automations: Exploring Attributes & Automation ParametersEssentials of Automations: Exploring Attributes & Automation Parameters
Essentials of Automations: Exploring Attributes & Automation Parameters
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
 
Principle of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptxPrinciple of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptx
 
Y-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PPY-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PP
 

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