SlideShare a Scribd company logo
1 of 38
Download to read offline
TU Dresden: A Large-Scale Plone
Deployment Case Study
Media Center
Dresden, 10/20/17
TU Dresden: A Large-Scale Plone Deployment Case Study 2/38
Motivation
There is no real new stuf here
Provide feedback to the wider Plone community
TU Dresden: A Large-Scale Plone Deployment Case Study 3/38
Starting Point
TU Dresden: A Large-Scale Plone Deployment Case Study 4/38
Starting Point (2013)
Plone2.1
No Archetypes
Multilingual fields
No responsive design
Lots of technical debt
TU Dresden: A Large-Scale Plone Deployment Case Study 5/38
The Goal
Complete Relaunch of the university's website
Based on the latest and greatest Plone (at the time Plone 4.2)
New responsive design
New site structure
TU Dresden: A Large-Scale Plone Deployment Case Study 6/38
Timeline
Jan 2013 First concept meeting
Jul 2013 Actual work on new TUD's WebCMS starts
Feb 2014 External agency delivers design prototype
Nov 2015 Content migration for central web pages
Mar 2016 Launch of the new TUD website
Until Feb 2017 Content migration for faculties, etc.
Sep 2017 Old WebCMS decommissioned
TU Dresden: A Large-Scale Plone Deployment Case Study 7/38
Result
TU Dresden: A Large-Scale Plone Deployment Case Study 8/38
Result
Plone 4.3.14
Archetypes
Multilingual fields with raptus.multilanguagefields
Heavily customized Plone UI
TU Dresden: A Large-Scale Plone Deployment Case Study 9/38
Multilingual Fields with raptus.multilanguagefields
TU Dresden: A Large-Scale Plone Deployment Case Study 10/38
TU Dresden: A Large-Scale Plone Deployment Case Study 11/38
Key Figures
600k content objects
21 GB in ZODB filestorage
450 GB blobs
100 GB trafic per day
2.5 million page views per month
2500 active editors
TU Dresden: A Large-Scale Plone Deployment Case Study 12/38
Architecture
TU Dresden: A Large-Scale Plone Deployment Case Study 13/38
1. Challenge: Content Migration
~ 500k million legacy content objects
Plone 2.1 without Archetypes
no collective.transmogrifier for us
TU Dresden: A Large-Scale Plone Deployment Case Study 14/38
The Migration Process
Executed in batches over the course of 1.5 years
TU Dresden: A Large-Scale Plone Deployment Case Study 15/38
The Migration Process
Simple custom-developed process with CLI scripts
1. Export to JSON + plain files for BLOB
2. Run transformations on JSON data
●
Map content types and field data to Plone's archetypes
●
Archive unwanted content
●
HTML clean up
3. Import in target system
●
At the designated place
●
Setup redirects
●
Special import folders for the remaining content
4. Editors finalize content
5. Section goes live
TU Dresden: A Large-Scale Plone Deployment Case Study 16/38
2. Challenge: User Management
Editorial team with more than 2500 members
Many of them are novice computer users
Limiting the actions an user can do is important
TU Dresden: A Large-Scale Plone Deployment Case Study 17/38
TU Dresden: A Large-Scale Plone Deployment Case Study 18/38
Training
All editors had the opportunity to attend a half or full day training
83 training sessions
This was most our important communication channel
Direct link to user satisfaction
TU Dresden: A Large-Scale Plone Deployment Case Study 19/38
Login
SSO setup with Shibboleth SP, NGINX and Products.AutoUserMakerPASPPlugin
Account data from central LDAP directory
Member role mapped to specific afiliation
TU Dresden: A Large-Scale Plone Deployment Case Study 20/38
Role Management
Local group management with collective.workspaces
TU Dresden: A Large-Scale Plone Deployment Case Study 21/38
Role Management
We use the native-groups-2 branch of collective.workspaces
No more catalog queries in permission checks
TU Dresden: A Large-Scale Plone Deployment Case Study 22/38
Strict Content Hierarchy
Root
Section
Faculty
Institute
Chair
News
Events
Page A
Folder
Page B
Resources
Images
Files
Enforced by addable content types and add permissions
TU Dresden: A Large-Scale Plone Deployment Case Study 23/38
Plone Caveat: Delete Permission
Expected behavior: permission controls which objects can be deleted
Actual behavior: permission controls in which container objects can be deleted
collective.deletepermission to rescue
TU Dresden: A Large-Scale Plone Deployment Case Study 24/38
3. Challenge: Consistent Performance
Our humble goal: keep load times below 1 sec
Extra complication: most users are authenticated
• Caching only of limited use
• Cache hit rate in Varnish ~ 25%
We just have to make the CMS go fast.
TU Dresden: A Large-Scale Plone Deployment Case Study 25/38
Common Pitfall: Rendering in TAL Conditions
Imagine you want to make an existence check for a content object.
Bad: tal:condition="some_obj"
Good: tal:condition="nocall: some_obj"
Also ok: tal:condition="python: some_obj"
TU Dresden: A Large-Scale Plone Deployment Case Study 26/38
ZEO Setup
Increased cache sizes for ZODB client caches
Persistent cache files
• Reduce time to rollout update by 50%
[zeoclient]
# ...
zeo-client-client = ${:_buildout_section_name_}
TU Dresden: A Large-Scale Plone Deployment Case Study 27/38
Session Store
Plone has two options:
• Sessions in temp storage: sessions limited to one Zope client
• Sessions in Filestorage: too slow for big sites
collective.beaker with memcached as backend
Just make sure to use Beaker ≥ 1.8.0
• Previous versions leaked connections to memcached
TU Dresden: A Large-Scale Plone Deployment Case Study 28/38
Be Careful with archetypes.schemaextender
We had to write a schema modifier for image field of the Image type
File and Image share the same schema object
Our „solution“: copy schema in schema modifier before changing fields
Problem: schema modifiers run on any field access and copying is expensive
Now we are back to regular content type classes
Dexterity behaviors look great
TU Dresden: A Large-Scale Plone Deployment Case Study 29/38
Useful Tools
TU Dresden: A Large-Scale Plone Deployment Case Study 30/38
haufe.longrunnningrequests
2017-07-25T06:27:10 WARNING RequestMonitor.DumpTrace Long running request
Request 108593 "/VirtualHostBase/https/tu-dresden.de/TUD/VirtualHostRoot/mz/die-
einrichtung/team" running in thread 140460101805824 since 10.8283619881s
Python call stack (innermost first)
Module plone.app.theming.transform, line 194, in transformIterable
Module plone.transformchain.transformer, line 49, in __call__
Module plone.transformchain.zpublisher, line 74, in applyTransform
Module plone.transformchain.zpublisher, line 85, in applyTransformOnSuccess
Module zope.interface.adapter, line 585, in subscribers
TU Dresden: A Large-Scale Plone Deployment Case Study 31/38
Piwik
TU Dresden: A Large-Scale Plone Deployment Case Study 32/38
Portal Catalog Query Report
TU Dresden: A Large-Scale Plone Deployment Case Study 33/38
collective.profiler
>>> stats.sort_stats('cumtime').print_stats('listActionInfos')
Thu Oct 19 11:12:31 2017 fc-table-v2.pstats
1681681 function calls (1641420 primitive calls) in 6.604 seconds
Ordered by: cumulative time
List reduced from 682 to 2 due to restriction <'listActionInfos'>
ncalls tottime percall cumtime percall filename:lineno(function)
16 0.000 0.000 1.512 0.095 ActionsTool.py:43(listActionInfos)
15 0.000 0.000 0.000 0.000 TypesTool.py:52(listActionInfos)
TU Dresden: A Large-Scale Plone Deployment Case Study 34/38
4. Challenge: Quality Assurance
We deploy every two to four weeks to production
Manual testing is time consuming
We schedule two full days for this
Need for automation is obvious
TU Dresden: A Large-Scale Plone Deployment Case Study 35/38
Automated UI Testing
plone.app.robotframework
Compulsory for all new functions
CI system runs tests each night
TU Dresden: A Large-Scale Plone Deployment Case Study 36/38
TU Dresden: A Large-Scale Plone Deployment Case Study 37/38
plone.app.robotframework
Benefits
• Good for catching general problems
• Nice logs
• Screenshots
Issues
• Ofen not specific enough
• Runtime
• Selenium bugs
TU Dresden: A Large-Scale Plone Deployment Case Study 38/38
Thank you!
@plone_tudresden
@sebasgo86

More Related Content

Similar to TU Dresden: A Large-Scale Plone Deployment Case Study, by Sebastian Gottfried

Integrating Puppet and Gitolite for sysadmins cooperations
Integrating Puppet and Gitolite for sysadmins cooperationsIntegrating Puppet and Gitolite for sysadmins cooperations
Integrating Puppet and Gitolite for sysadmins cooperationsLuca Mazzaferro
 
Final year Project - ONLINE STUDY GROUP
Final year Project - ONLINE STUDY GROUPFinal year Project - ONLINE STUDY GROUP
Final year Project - ONLINE STUDY GROUPAlifahyusli
 
Software engineering project(srs)!!
Software engineering project(srs)!!Software engineering project(srs)!!
Software engineering project(srs)!!sourav verma
 
Mark Hughes Annual Seminar Presentation on Open Source
Mark Hughes Annual Seminar Presentation on Open Source Mark Hughes Annual Seminar Presentation on Open Source
Mark Hughes Annual Seminar Presentation on Open Source Tracy Kent
 
The UberCloud - From Project to Product - From HPC Experiment to HPC Marketpl...
The UberCloud - From Project to Product - From HPC Experiment to HPC Marketpl...The UberCloud - From Project to Product - From HPC Experiment to HPC Marketpl...
The UberCloud - From Project to Product - From HPC Experiment to HPC Marketpl...Wolfgang Gentzsch
 
UberCloud - From Project to Product
UberCloud - From Project to ProductUberCloud - From Project to Product
UberCloud - From Project to ProductThe UberCloud
 
What the cloud has to do with a burning house?
What the cloud has to do with a burning house?What the cloud has to do with a burning house?
What the cloud has to do with a burning house?Nane Kratzke
 
Spaced Repetition Items and Construal Level Theory
Spaced Repetition Items and Construal Level TheorySpaced Repetition Items and Construal Level Theory
Spaced Repetition Items and Construal Level TheoryLorenz Duremdes, Polymath
 
Apache Flink London Meetup - Let's Talk ML on Flink
Apache Flink London Meetup - Let's Talk ML on FlinkApache Flink London Meetup - Let's Talk ML on Flink
Apache Flink London Meetup - Let's Talk ML on FlinkStavros Kontopoulos
 
A Story of Cultural Change: PayPal's 2 Year Journey to 150,000 Containers wit...
A Story of Cultural Change: PayPal's 2 Year Journey to 150,000 Containers wit...A Story of Cultural Change: PayPal's 2 Year Journey to 150,000 Containers wit...
A Story of Cultural Change: PayPal's 2 Year Journey to 150,000 Containers wit...Docker, Inc.
 
Unevenly Distributed
Unevenly DistributedUnevenly Distributed
Unevenly DistributedC4Media
 
Adventures building 3 realtime single-page apps 6 different ways
Adventures building 3 realtime single-page apps 6 different waysAdventures building 3 realtime single-page apps 6 different ways
Adventures building 3 realtime single-page apps 6 different waysHenrik Joreteg
 
Processing Open Data using Terradue Cloud Platform
Processing Open Data using Terradue Cloud PlatformProcessing Open Data using Terradue Cloud Platform
Processing Open Data using Terradue Cloud Platformterradue
 
TYPO3 CMS v8 in the cloud
TYPO3 CMS v8 in the cloudTYPO3 CMS v8 in the cloud
TYPO3 CMS v8 in the cloudJohannes Goslar
 
Fajar Purnama 152-d8713 Dynamic Content Synchronization Distributed LMS
Fajar Purnama 152-d8713 Dynamic Content Synchronization Distributed LMSFajar Purnama 152-d8713 Dynamic Content Synchronization Distributed LMS
Fajar Purnama 152-d8713 Dynamic Content Synchronization Distributed LMSFajar Purnama
 
Visualización y control a distancia de las cadenas críticas en la PMO
Visualización y control a distancia de las cadenas críticas en la PMOVisualización y control a distancia de las cadenas críticas en la PMO
Visualización y control a distancia de las cadenas críticas en la PMOPMOfficers PMOAcademy
 
Frankfurt Big Data Lab & Refugee Projeect
Frankfurt Big Data Lab & Refugee ProjeectFrankfurt Big Data Lab & Refugee Projeect
Frankfurt Big Data Lab & Refugee ProjeectGoethe Univeristy
 

Similar to TU Dresden: A Large-Scale Plone Deployment Case Study, by Sebastian Gottfried (20)

Integrating Puppet and Gitolite for sysadmins cooperations
Integrating Puppet and Gitolite for sysadmins cooperationsIntegrating Puppet and Gitolite for sysadmins cooperations
Integrating Puppet and Gitolite for sysadmins cooperations
 
Final year Project - ONLINE STUDY GROUP
Final year Project - ONLINE STUDY GROUPFinal year Project - ONLINE STUDY GROUP
Final year Project - ONLINE STUDY GROUP
 
Software engineering project(srs)!!
Software engineering project(srs)!!Software engineering project(srs)!!
Software engineering project(srs)!!
 
Mark Hughes Annual Seminar Presentation on Open Source
Mark Hughes Annual Seminar Presentation on Open Source Mark Hughes Annual Seminar Presentation on Open Source
Mark Hughes Annual Seminar Presentation on Open Source
 
The UberCloud - From Project to Product - From HPC Experiment to HPC Marketpl...
The UberCloud - From Project to Product - From HPC Experiment to HPC Marketpl...The UberCloud - From Project to Product - From HPC Experiment to HPC Marketpl...
The UberCloud - From Project to Product - From HPC Experiment to HPC Marketpl...
 
UberCloud - From Project to Product
UberCloud - From Project to ProductUberCloud - From Project to Product
UberCloud - From Project to Product
 
What the cloud has to do with a burning house?
What the cloud has to do with a burning house?What the cloud has to do with a burning house?
What the cloud has to do with a burning house?
 
Spaced Repetition Items and Construal Level Theory
Spaced Repetition Items and Construal Level TheorySpaced Repetition Items and Construal Level Theory
Spaced Repetition Items and Construal Level Theory
 
Fog Computing for Dummies
Fog Computing for Dummies Fog Computing for Dummies
Fog Computing for Dummies
 
Apache Flink London Meetup - Let's Talk ML on Flink
Apache Flink London Meetup - Let's Talk ML on FlinkApache Flink London Meetup - Let's Talk ML on Flink
Apache Flink London Meetup - Let's Talk ML on Flink
 
UDP Report
UDP ReportUDP Report
UDP Report
 
A Story of Cultural Change: PayPal's 2 Year Journey to 150,000 Containers wit...
A Story of Cultural Change: PayPal's 2 Year Journey to 150,000 Containers wit...A Story of Cultural Change: PayPal's 2 Year Journey to 150,000 Containers wit...
A Story of Cultural Change: PayPal's 2 Year Journey to 150,000 Containers wit...
 
Unevenly Distributed
Unevenly DistributedUnevenly Distributed
Unevenly Distributed
 
Printing without printers
Printing without printersPrinting without printers
Printing without printers
 
Adventures building 3 realtime single-page apps 6 different ways
Adventures building 3 realtime single-page apps 6 different waysAdventures building 3 realtime single-page apps 6 different ways
Adventures building 3 realtime single-page apps 6 different ways
 
Processing Open Data using Terradue Cloud Platform
Processing Open Data using Terradue Cloud PlatformProcessing Open Data using Terradue Cloud Platform
Processing Open Data using Terradue Cloud Platform
 
TYPO3 CMS v8 in the cloud
TYPO3 CMS v8 in the cloudTYPO3 CMS v8 in the cloud
TYPO3 CMS v8 in the cloud
 
Fajar Purnama 152-d8713 Dynamic Content Synchronization Distributed LMS
Fajar Purnama 152-d8713 Dynamic Content Synchronization Distributed LMSFajar Purnama 152-d8713 Dynamic Content Synchronization Distributed LMS
Fajar Purnama 152-d8713 Dynamic Content Synchronization Distributed LMS
 
Visualización y control a distancia de las cadenas críticas en la PMO
Visualización y control a distancia de las cadenas críticas en la PMOVisualización y control a distancia de las cadenas críticas en la PMO
Visualización y control a distancia de las cadenas críticas en la PMO
 
Frankfurt Big Data Lab & Refugee Projeect
Frankfurt Big Data Lab & Refugee ProjeectFrankfurt Big Data Lab & Refugee Projeect
Frankfurt Big Data Lab & Refugee Projeect
 

More from T. Kim Nguyen

Your Plone [Intranet] in a Box™
Your Plone [Intranet] in a Box™Your Plone [Intranet] in a Box™
Your Plone [Intranet] in a Box™T. Kim Nguyen
 
Permissions & Security in Plone
Permissions & Security in PlonePermissions & Security in Plone
Permissions & Security in PloneT. Kim Nguyen
 
How to Setup a Plone Intranet in Half a Day (Python Web Conf 2020)
How to Setup a Plone Intranet in Half a Day (Python Web Conf 2020)How to Setup a Plone Intranet in Half a Day (Python Web Conf 2020)
How to Setup a Plone Intranet in Half a Day (Python Web Conf 2020)T. Kim Nguyen
 
Deploying Plone on AWS
Deploying Plone on AWSDeploying Plone on AWS
Deploying Plone on AWST. Kim Nguyen
 
Melding React with the Ultra Secure Plone Content Repository
Melding React with the Ultra Secure Plone Content RepositoryMelding React with the Ultra Secure Plone Content Repository
Melding React with the Ultra Secure Plone Content RepositoryT. Kim Nguyen
 
A Case Study: Measuring Productivity in Education
A Case Study: Measuring Productivity in EducationA Case Study: Measuring Productivity in Education
A Case Study: Measuring Productivity in EducationT. Kim Nguyen
 
Have Content Quality, Will Search Your Intranet, by Fulvio Casali
Have Content Quality, Will Search Your Intranet, by Fulvio CasaliHave Content Quality, Will Search Your Intranet, by Fulvio Casali
Have Content Quality, Will Search Your Intranet, by Fulvio CasaliT. Kim Nguyen
 
I broke what? Taking over maintenance on existing (well loved) projects, by B...
I broke what? Taking over maintenance on existing (well loved) projects, by B...I broke what? Taking over maintenance on existing (well loved) projects, by B...
I broke what? Taking over maintenance on existing (well loved) projects, by B...T. Kim Nguyen
 
TUD-Chat – a moderated chat add-on for Plone, by Sebastian Schietzold
TUD-Chat – a moderated chat add-on for Plone, by Sebastian SchietzoldTUD-Chat – a moderated chat add-on for Plone, by Sebastian Schietzold
TUD-Chat – a moderated chat add-on for Plone, by Sebastian SchietzoldT. Kim Nguyen
 
Plone as a Conference Management System, by Adriana Ramírez V. and Gildardo ...
Plone as a Conference Management System, by Adriana Ramírez V. and Gildardo ...Plone as a Conference Management System, by Adriana Ramírez V. and Gildardo ...
Plone as a Conference Management System, by Adriana Ramírez V. and Gildardo ...T. Kim Nguyen
 
Our Castle's Strength
Our Castle's StrengthOur Castle's Strength
Our Castle's StrengthT. Kim Nguyen
 
Plone Futures, Plone Conference 2016 Keynote by Eric Steele
Plone Futures, Plone Conference 2016 Keynote by Eric SteelePlone Futures, Plone Conference 2016 Keynote by Eric Steele
Plone Futures, Plone Conference 2016 Keynote by Eric SteeleT. Kim Nguyen
 
Trajectory: Integrating SQL Data into your Plone Site, Plone Conference 2016,...
Trajectory: Integrating SQL Data into your Plone Site, Plone Conference 2016,...Trajectory: Integrating SQL Data into your Plone Site, Plone Conference 2016,...
Trajectory: Integrating SQL Data into your Plone Site, Plone Conference 2016,...T. Kim Nguyen
 
Web Development with Vim by Johannes Raggam
Web Development with Vim by Johannes RaggamWeb Development with Vim by Johannes Raggam
Web Development with Vim by Johannes RaggamT. Kim Nguyen
 
Top 5 secrets of distributed teams / Christina McNeill & T. Kim Nguyen
Top 5 secrets of distributed teams / Christina McNeill & T. Kim NguyenTop 5 secrets of distributed teams / Christina McNeill & T. Kim Nguyen
Top 5 secrets of distributed teams / Christina McNeill & T. Kim NguyenT. Kim Nguyen
 
Easy online business processes with Plone forms and workflow
Easy online business processes with Plone forms and workflowEasy online business processes with Plone forms and workflow
Easy online business processes with Plone forms and workflowT. Kim Nguyen
 
Plone for CMS review group at UW Oshkosh
Plone for CMS review group at UW OshkoshPlone for CMS review group at UW Oshkosh
Plone for CMS review group at UW OshkoshT. Kim Nguyen
 

More from T. Kim Nguyen (20)

Your Plone [Intranet] in a Box™
Your Plone [Intranet] in a Box™Your Plone [Intranet] in a Box™
Your Plone [Intranet] in a Box™
 
Permissions & Security in Plone
Permissions & Security in PlonePermissions & Security in Plone
Permissions & Security in Plone
 
How to Setup a Plone Intranet in Half a Day (Python Web Conf 2020)
How to Setup a Plone Intranet in Half a Day (Python Web Conf 2020)How to Setup a Plone Intranet in Half a Day (Python Web Conf 2020)
How to Setup a Plone Intranet in Half a Day (Python Web Conf 2020)
 
Deploying Plone on AWS
Deploying Plone on AWSDeploying Plone on AWS
Deploying Plone on AWS
 
Melding React with the Ultra Secure Plone Content Repository
Melding React with the Ultra Secure Plone Content RepositoryMelding React with the Ultra Secure Plone Content Repository
Melding React with the Ultra Secure Plone Content Repository
 
A Case Study: Measuring Productivity in Education
A Case Study: Measuring Productivity in EducationA Case Study: Measuring Productivity in Education
A Case Study: Measuring Productivity in Education
 
State of Plone 2017
State of Plone 2017State of Plone 2017
State of Plone 2017
 
Have Content Quality, Will Search Your Intranet, by Fulvio Casali
Have Content Quality, Will Search Your Intranet, by Fulvio CasaliHave Content Quality, Will Search Your Intranet, by Fulvio Casali
Have Content Quality, Will Search Your Intranet, by Fulvio Casali
 
I broke what? Taking over maintenance on existing (well loved) projects, by B...
I broke what? Taking over maintenance on existing (well loved) projects, by B...I broke what? Taking over maintenance on existing (well loved) projects, by B...
I broke what? Taking over maintenance on existing (well loved) projects, by B...
 
TUD-Chat – a moderated chat add-on for Plone, by Sebastian Schietzold
TUD-Chat – a moderated chat add-on for Plone, by Sebastian SchietzoldTUD-Chat – a moderated chat add-on for Plone, by Sebastian Schietzold
TUD-Chat – a moderated chat add-on for Plone, by Sebastian Schietzold
 
Plone as a Conference Management System, by Adriana Ramírez V. and Gildardo ...
Plone as a Conference Management System, by Adriana Ramírez V. and Gildardo ...Plone as a Conference Management System, by Adriana Ramírez V. and Gildardo ...
Plone as a Conference Management System, by Adriana Ramírez V. and Gildardo ...
 
Our Castle's Strength
Our Castle's StrengthOur Castle's Strength
Our Castle's Strength
 
Plone Futures, Plone Conference 2016 Keynote by Eric Steele
Plone Futures, Plone Conference 2016 Keynote by Eric SteelePlone Futures, Plone Conference 2016 Keynote by Eric Steele
Plone Futures, Plone Conference 2016 Keynote by Eric Steele
 
Trajectory: Integrating SQL Data into your Plone Site, Plone Conference 2016,...
Trajectory: Integrating SQL Data into your Plone Site, Plone Conference 2016,...Trajectory: Integrating SQL Data into your Plone Site, Plone Conference 2016,...
Trajectory: Integrating SQL Data into your Plone Site, Plone Conference 2016,...
 
Web Development with Vim by Johannes Raggam
Web Development with Vim by Johannes RaggamWeb Development with Vim by Johannes Raggam
Web Development with Vim by Johannes Raggam
 
PyCharm demo
PyCharm demoPyCharm demo
PyCharm demo
 
Gold in Rio
Gold in RioGold in Rio
Gold in Rio
 
Top 5 secrets of distributed teams / Christina McNeill & T. Kim Nguyen
Top 5 secrets of distributed teams / Christina McNeill & T. Kim NguyenTop 5 secrets of distributed teams / Christina McNeill & T. Kim Nguyen
Top 5 secrets of distributed teams / Christina McNeill & T. Kim Nguyen
 
Easy online business processes with Plone forms and workflow
Easy online business processes with Plone forms and workflowEasy online business processes with Plone forms and workflow
Easy online business processes with Plone forms and workflow
 
Plone for CMS review group at UW Oshkosh
Plone for CMS review group at UW OshkoshPlone for CMS review group at UW Oshkosh
Plone for CMS review group at UW Oshkosh
 

Recently uploaded

『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书rnrncn29
 
Film cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasaFilm cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasa494f574xmv
 
SCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is prediSCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is predieusebiomeyer
 
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作ys8omjxb
 
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170Sonam Pathan
 
PHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationPHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationLinaWolf1
 
Elevate Your Business with Our IT Expertise in New Orleans
Elevate Your Business with Our IT Expertise in New OrleansElevate Your Business with Our IT Expertise in New Orleans
Elevate Your Business with Our IT Expertise in New Orleanscorenetworkseo
 
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一Fs
 
Top 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptxTop 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptxDyna Gilbert
 
Intellectual property rightsand its types.pptx
Intellectual property rightsand its types.pptxIntellectual property rightsand its types.pptx
Intellectual property rightsand its types.pptxBipin Adhikari
 
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)Dana Luther
 
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一Fs
 
Blepharitis inflammation of eyelid symptoms cause everything included along w...
Blepharitis inflammation of eyelid symptoms cause everything included along w...Blepharitis inflammation of eyelid symptoms cause everything included along w...
Blepharitis inflammation of eyelid symptoms cause everything included along w...Excelmac1
 
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一z xss
 
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一Fs
 
Git and Github workshop GDSC MLRITM
Git and Github  workshop GDSC MLRITMGit and Github  workshop GDSC MLRITM
Git and Github workshop GDSC MLRITMgdsc13
 
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书rnrncn29
 
Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170Sonam Pathan
 

Recently uploaded (20)

『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
 
Film cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasaFilm cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasa
 
SCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is prediSCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is predi
 
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Serviceyoung call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
 
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
 
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
 
PHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationPHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 Documentation
 
Elevate Your Business with Our IT Expertise in New Orleans
Elevate Your Business with Our IT Expertise in New OrleansElevate Your Business with Our IT Expertise in New Orleans
Elevate Your Business with Our IT Expertise in New Orleans
 
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
 
Top 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptxTop 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptx
 
Intellectual property rightsand its types.pptx
Intellectual property rightsand its types.pptxIntellectual property rightsand its types.pptx
Intellectual property rightsand its types.pptx
 
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
 
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
 
Blepharitis inflammation of eyelid symptoms cause everything included along w...
Blepharitis inflammation of eyelid symptoms cause everything included along w...Blepharitis inflammation of eyelid symptoms cause everything included along w...
Blepharitis inflammation of eyelid symptoms cause everything included along w...
 
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
 
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
定制(Lincoln毕业证书)新西兰林肯大学毕业证成绩单原版一比一
 
Git and Github workshop GDSC MLRITM
Git and Github  workshop GDSC MLRITMGit and Github  workshop GDSC MLRITM
Git and Github workshop GDSC MLRITM
 
Model Call Girl in Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in  Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝Model Call Girl in  Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝
 
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
 
Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170
 

TU Dresden: A Large-Scale Plone Deployment Case Study, by Sebastian Gottfried

  • 1. TU Dresden: A Large-Scale Plone Deployment Case Study Media Center Dresden, 10/20/17
  • 2. TU Dresden: A Large-Scale Plone Deployment Case Study 2/38 Motivation There is no real new stuf here Provide feedback to the wider Plone community
  • 3. TU Dresden: A Large-Scale Plone Deployment Case Study 3/38 Starting Point
  • 4. TU Dresden: A Large-Scale Plone Deployment Case Study 4/38 Starting Point (2013) Plone2.1 No Archetypes Multilingual fields No responsive design Lots of technical debt
  • 5. TU Dresden: A Large-Scale Plone Deployment Case Study 5/38 The Goal Complete Relaunch of the university's website Based on the latest and greatest Plone (at the time Plone 4.2) New responsive design New site structure
  • 6. TU Dresden: A Large-Scale Plone Deployment Case Study 6/38 Timeline Jan 2013 First concept meeting Jul 2013 Actual work on new TUD's WebCMS starts Feb 2014 External agency delivers design prototype Nov 2015 Content migration for central web pages Mar 2016 Launch of the new TUD website Until Feb 2017 Content migration for faculties, etc. Sep 2017 Old WebCMS decommissioned
  • 7. TU Dresden: A Large-Scale Plone Deployment Case Study 7/38 Result
  • 8. TU Dresden: A Large-Scale Plone Deployment Case Study 8/38 Result Plone 4.3.14 Archetypes Multilingual fields with raptus.multilanguagefields Heavily customized Plone UI
  • 9. TU Dresden: A Large-Scale Plone Deployment Case Study 9/38 Multilingual Fields with raptus.multilanguagefields
  • 10. TU Dresden: A Large-Scale Plone Deployment Case Study 10/38
  • 11. TU Dresden: A Large-Scale Plone Deployment Case Study 11/38 Key Figures 600k content objects 21 GB in ZODB filestorage 450 GB blobs 100 GB trafic per day 2.5 million page views per month 2500 active editors
  • 12. TU Dresden: A Large-Scale Plone Deployment Case Study 12/38 Architecture
  • 13. TU Dresden: A Large-Scale Plone Deployment Case Study 13/38 1. Challenge: Content Migration ~ 500k million legacy content objects Plone 2.1 without Archetypes no collective.transmogrifier for us
  • 14. TU Dresden: A Large-Scale Plone Deployment Case Study 14/38 The Migration Process Executed in batches over the course of 1.5 years
  • 15. TU Dresden: A Large-Scale Plone Deployment Case Study 15/38 The Migration Process Simple custom-developed process with CLI scripts 1. Export to JSON + plain files for BLOB 2. Run transformations on JSON data ● Map content types and field data to Plone's archetypes ● Archive unwanted content ● HTML clean up 3. Import in target system ● At the designated place ● Setup redirects ● Special import folders for the remaining content 4. Editors finalize content 5. Section goes live
  • 16. TU Dresden: A Large-Scale Plone Deployment Case Study 16/38 2. Challenge: User Management Editorial team with more than 2500 members Many of them are novice computer users Limiting the actions an user can do is important
  • 17. TU Dresden: A Large-Scale Plone Deployment Case Study 17/38
  • 18. TU Dresden: A Large-Scale Plone Deployment Case Study 18/38 Training All editors had the opportunity to attend a half or full day training 83 training sessions This was most our important communication channel Direct link to user satisfaction
  • 19. TU Dresden: A Large-Scale Plone Deployment Case Study 19/38 Login SSO setup with Shibboleth SP, NGINX and Products.AutoUserMakerPASPPlugin Account data from central LDAP directory Member role mapped to specific afiliation
  • 20. TU Dresden: A Large-Scale Plone Deployment Case Study 20/38 Role Management Local group management with collective.workspaces
  • 21. TU Dresden: A Large-Scale Plone Deployment Case Study 21/38 Role Management We use the native-groups-2 branch of collective.workspaces No more catalog queries in permission checks
  • 22. TU Dresden: A Large-Scale Plone Deployment Case Study 22/38 Strict Content Hierarchy Root Section Faculty Institute Chair News Events Page A Folder Page B Resources Images Files Enforced by addable content types and add permissions
  • 23. TU Dresden: A Large-Scale Plone Deployment Case Study 23/38 Plone Caveat: Delete Permission Expected behavior: permission controls which objects can be deleted Actual behavior: permission controls in which container objects can be deleted collective.deletepermission to rescue
  • 24. TU Dresden: A Large-Scale Plone Deployment Case Study 24/38 3. Challenge: Consistent Performance Our humble goal: keep load times below 1 sec Extra complication: most users are authenticated • Caching only of limited use • Cache hit rate in Varnish ~ 25% We just have to make the CMS go fast.
  • 25. TU Dresden: A Large-Scale Plone Deployment Case Study 25/38 Common Pitfall: Rendering in TAL Conditions Imagine you want to make an existence check for a content object. Bad: tal:condition="some_obj" Good: tal:condition="nocall: some_obj" Also ok: tal:condition="python: some_obj"
  • 26. TU Dresden: A Large-Scale Plone Deployment Case Study 26/38 ZEO Setup Increased cache sizes for ZODB client caches Persistent cache files • Reduce time to rollout update by 50% [zeoclient] # ... zeo-client-client = ${:_buildout_section_name_}
  • 27. TU Dresden: A Large-Scale Plone Deployment Case Study 27/38 Session Store Plone has two options: • Sessions in temp storage: sessions limited to one Zope client • Sessions in Filestorage: too slow for big sites collective.beaker with memcached as backend Just make sure to use Beaker ≥ 1.8.0 • Previous versions leaked connections to memcached
  • 28. TU Dresden: A Large-Scale Plone Deployment Case Study 28/38 Be Careful with archetypes.schemaextender We had to write a schema modifier for image field of the Image type File and Image share the same schema object Our „solution“: copy schema in schema modifier before changing fields Problem: schema modifiers run on any field access and copying is expensive Now we are back to regular content type classes Dexterity behaviors look great
  • 29. TU Dresden: A Large-Scale Plone Deployment Case Study 29/38 Useful Tools
  • 30. TU Dresden: A Large-Scale Plone Deployment Case Study 30/38 haufe.longrunnningrequests 2017-07-25T06:27:10 WARNING RequestMonitor.DumpTrace Long running request Request 108593 "/VirtualHostBase/https/tu-dresden.de/TUD/VirtualHostRoot/mz/die- einrichtung/team" running in thread 140460101805824 since 10.8283619881s Python call stack (innermost first) Module plone.app.theming.transform, line 194, in transformIterable Module plone.transformchain.transformer, line 49, in __call__ Module plone.transformchain.zpublisher, line 74, in applyTransform Module plone.transformchain.zpublisher, line 85, in applyTransformOnSuccess Module zope.interface.adapter, line 585, in subscribers
  • 31. TU Dresden: A Large-Scale Plone Deployment Case Study 31/38 Piwik
  • 32. TU Dresden: A Large-Scale Plone Deployment Case Study 32/38 Portal Catalog Query Report
  • 33. TU Dresden: A Large-Scale Plone Deployment Case Study 33/38 collective.profiler >>> stats.sort_stats('cumtime').print_stats('listActionInfos') Thu Oct 19 11:12:31 2017 fc-table-v2.pstats 1681681 function calls (1641420 primitive calls) in 6.604 seconds Ordered by: cumulative time List reduced from 682 to 2 due to restriction <'listActionInfos'> ncalls tottime percall cumtime percall filename:lineno(function) 16 0.000 0.000 1.512 0.095 ActionsTool.py:43(listActionInfos) 15 0.000 0.000 0.000 0.000 TypesTool.py:52(listActionInfos)
  • 34. TU Dresden: A Large-Scale Plone Deployment Case Study 34/38 4. Challenge: Quality Assurance We deploy every two to four weeks to production Manual testing is time consuming We schedule two full days for this Need for automation is obvious
  • 35. TU Dresden: A Large-Scale Plone Deployment Case Study 35/38 Automated UI Testing plone.app.robotframework Compulsory for all new functions CI system runs tests each night
  • 36. TU Dresden: A Large-Scale Plone Deployment Case Study 36/38
  • 37. TU Dresden: A Large-Scale Plone Deployment Case Study 37/38 plone.app.robotframework Benefits • Good for catching general problems • Nice logs • Screenshots Issues • Ofen not specific enough • Runtime • Selenium bugs
  • 38. TU Dresden: A Large-Scale Plone Deployment Case Study 38/38 Thank you! @plone_tudresden @sebasgo86