Download - What Shall be Served by a CMS?
What shall be served by a CMS ? Just editorial content
Basel, September 2013 Thomas Körner
… experiences of a real project
Agenda
! Project Scope
! Objectives
! Technical Wrap Up
! Experiences
What shall be served by a CMS kreuzwerker 2
Agenda
! Project Scope
! Objectives
! Technical Wrap Up
! Experiences
kreuzwerker 3 What shall be served by a CMS
Social Community Platform of one of the biggest cruise lines in Germany ! user generated content as travelogues, blogs,
photo galleries, video albums ! private messaging ! questions and answer module ! contests, polls and games ! commenting, likes
Project Scope
kreuzwerker 4 What shall be served by a CMS
Technical Re-Invest ! tight coupling of CMS and community functions
prevented migration to new Drupal version ! CMS change according to the customers web
publishing strategy ! usage of a custom digital asset management
system
Project Scope
kreuzwerker 5 What shall be served by a CMS
Agenda
! Project Scope
! Objectives
! Technical Wrap Up
! Experiences
kreuzwerker 6 What shall be served by a CMS
Objectives
kreuzwerker 7
Customer‘s Main Objectives. Experiencing a technical dead end in regard of CMS updates
due to heavy customization expandability as well as easy updatability was in the customer’s focus.
High Responsive
Easy to Extend
Easy to Update
Magnolia
Sync
of
user
content
Custom DAM
What shall be served by a CMS
Strategy
Magnolia
Ruby on Rails
Widget Approach
Varnish
3 2
1
! limit custom code in the CMS
Updatability
! state of the art web framework to cover business requirements
Expandability
! fragment caching of static content.
Responsiveness
! Web Publishing Strategy
3 2
1
kreuzwerker 8 What shall be served by a CMS
CMS Functions
! Design & Branding ! navigation bar ! footer ! teaser
! Configuration ! polls ! games
! Editorial Content ! static pages (e.g. Impressum) ! information about cruises, staff, etc.
! Administration ! process based publication
CMS
kreuzwerker 9 What shall be served by a CMS
Application Functions
! Asset Management ! photos / videos ! travelogues ! galleries
! Community Functions ! votes/likes ! private messaging ! friendships
Ruby on Rails
kreuzwerker 10
! Extensions ! map features ! poll/game logic
! User Management ! accounts ! personal spaces
What shall be served by a CMS
Agenda
! Project Scope
! Objectives
! Technical Wrap Up
! Experiences
kreuzwerker 11 What shall be served by a CMS
Architectural Sketch
kreuzwerker 12
The production system is deployed on two hosts routed by a load balancer. Each host provides its own varnish, a public CMS instance and a Rails application instance. ! Varnish
! routing by selecting the appropriate backend
! ESI … Edge Side Includes ! Backends
! CMS ! Rails Application
What shall be served by a CMS
! fixed page layout in regard of branding
! application logic dependent layout for content area
! limited number of AJAX calls
Rails Application
Rendering Master ? Rails App was set to be the rendering master for all pages focusing on user generated content CMS was set to be the rendering master for all static pages as well as pages requiring free editorial layouts (e.g. polls, games).
! embedding application logic as widget requires heavy use of AJAX
! limited editorial freedom regarding application pages
CMS
kreuzwerker 13 What shall be served by a CMS
Rendering Master – Rails App’
kreuzwerker 14 What shall be served by a CMS
Rendering Master – Rails App’
kreuzwerker 15
ESI
What shall be served by a CMS
Rendering Master – Rails App’
kreuzwerker 16
ESI
What shall be served by a CMS
Rendering Master – Rails App’
kreuzwerker 17
ESI
What shall be served by a CMS
Rendering Master – Rails App’
kreuzwerker 18
ESI
What shall be served by a CMS
Rendering Master – Rails App’
kreuzwerker 19
ESI
What shall be served by a CMS
Rendering Master – CMS
kreuzwerker 20 What shall be served by a CMS
Rendering Master – CMS
kreuzwerker 21
ESI
ESI
What shall be served by a CMS
! branding ! editorial content ! games ! polls
! moderation of comments ! company blogs (editorial
content) ! user generated content ! assessment of polls / games
Rails Application CMS
Administration
SSO to ease the burden of two applications
kreuzwerker 22 What shall be served by a CMS
SSO between CMS and Rails App
kreuzwerker 23
! missing company SSO ! external editors
Pre-Condition
CMS login authenticates user in the Rails Apps
What shall be served by a CMS
Key: Magnolia Filter Chain
… common servlet filter … back door login/logout code encapsulated … update compatible
Pitfalls:
! Cross Site Protection Mechanism of Rails ! X-CSRF Token ! Cookie
! Storage of Rails App Authentication Cookie
SSO between CMS and Rails App
kreuzwerker 24 What shall be served by a CMS
Games & Polls
! game runtime resides in Rails App via participation widgets, which allow the user interaction
! widget is embedded into the game/poll CMS page via ESI
! game assessment is done via admin interface (active admin)
Rails App
! game configuration is done in the CMS ! start and end of participation ! number of participation
attempts ! intro texts, images etc. ! layout of pages
! winner announcement by embedding announcement widgets via ids
CMS
kreuzwerker 25 What shall be served by a CMS
Games & Polls Interaction CMS "# Rails (1/3)
kreuzwerker 26
Game Setup
game template ! supports game
container including various rails widgets, common CMS editorial content paragraphs
Publish Game
game config
! hidden form parameter secured by shared secret
! first request creates game in Rails DB
Game Runtime
game content
! assets and users only known to Rails
! depiction on CMS pages via widgets
What shall be served by a CMS
Games & Polls Interaction CMS "# Rails (2/3)
kreuzwerker 27
Game Assessment
administration/assessment ! Rails Active
Admin pages
Winner Announcement
announcement
! CMS paragraph configuration via user and asset ids known only to rails
! widget approach
Game Removal
game container deletion
! Rails backend has to be informed about container removal
What shall be served by a CMS
Games & Polls Removal of the Game
kreuzwerker 28
! a new version of a page is created when pushing
changes from author to public ! check predecessor version for game identifiers not
included in current page ! de-activate polls in rails via HTTP GET Request
(signature in header secures request) ! synchronous call
What shall be served by a CMS
Agenda
! Project Scope
! Objectives
! Technical Wrap Up
! Experiences
kreuzwerker 29 What shall be served by a CMS
Experiences
! agile development framework for application logic
! complex development setup
Strengths
! easy adding of new features without CMS know how
! re-use of once developed modules
! abstraction level ! learning curve of
development team
Opportunities Threats
Weaknesses +
kreuzwerker 30
+
–
–
What shall be served by a CMS
kreuzwerker 31
Experiences Development Setup
! automated setup of target platform via vagrant on top of Virtual Box on each developer machine ! Mac OS vs. Linux machines
! provisioning of vagrant box via puppet ! automated deployment of Rails App via rake ! automated deployment of CMS via maven and
shell scripts
What shall be served by a CMS
kreuzwerker 32
Experiences Development Setup
! prolonged development cycle due to deployment overhead ! mocking of CMS in Rails part ! ignoring Rails calls in CMS
! additional time for integration tests
What shall be served by a CMS
! setup of infrastructure with small team before development phase
! continuous monitoring of setup
! re-use of technology in staging and production area
! continuous mentoring of development & test team
! continuous integration by testing team
! independent development due to sparse mocking
Continuous Education & QM Ramp Up
additional operational costs covered by advantages in the long term
kreuzwerker 33
Experiences Development Setup
What shall be served by a CMS
Thomas Körner
Thanks, for your attention
mail: [email protected]
website:
www.kreuzwerker.de
kreuzwerker 34 What shall be served by a CMS