Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Building a Content Management System for IoT En...

Max Kleucker
November 25, 2015

Building a Content Management System for IoT Environments

Managing content for the Internet-of-Things poses it's very own challenges and requirements. Over the course of a year we built such a system that integrates with various other components. This talk covers both technical and organizational topics, focusing on PHP specific challenges of running an application in the cloud and communicating with other systems.

Max Kleucker

November 25, 2015
Tweet

More Decks by Max Kleucker

Other Decks in Programming

Transcript

  1. Intro Project History • Started in October 2014 • 5-day

    Prototype • Team grew from 2 to 12 members • Support for 28 locales (and growing)
  2. CDR • Recipes • Manuals, Tips for Devices • Localization

    for App • Assets for App • ... { Intro Content for IoT
  3. Intro Technology • Drupal 7 • Custom modules for •

    communication with 
 3rd-party-components • workflow & permissions
  4. CDR 3rd party systems Apps import data push data create,

    enrich, translate Translation System automatic translation
  5. CDR 3rd party systems Apps import data push data create,

    enrich, translate Translation System automatic translation
  6. Automatic Translation CDR Translation System content, rendered in XML files

    translated content, rendered in XML files content import
  7. CDR 3rd party systems Apps import data push data create,

    enrich, translate Translation System automatic translation
  8. Content Deployment CDR App Server content, rendered as single JSON

    files (using Twig) + referencing meta-file media assets, saved in a S3 bucket references
  9. Intro Recap • Asynchronous communication w/ 3rd parties • No

    direct interaction with end-users • Difficult to accommodate various workflow-requirements
  10. <?php $nodes = [1,17,28,73]; // Variant 1: Slow foreach($nodes as

    $node){ node_delete($node); } // Variant 2: Much faster node_delete_multiple($nodes);
  11. Develop Recap • Demand for communication increases with team size

    • Let your tools help you, keep an eye on new tools • Dig deep into the systems you're using
  12. Operations Elastic Beanstalk • Challenges: • No persistent file system

    • Multiple instances that don't know about each other
  13. • Requirement: • WYSIWYG with File Picker • Two options:

    • Use S3 library • Mount the S3 Bucket on the filesystem (s3fs) • But: • Is it feasible for users to search in gigabytes of files? Operations Using S3
  14. • Requirement: • Keep the down time at a minimum

    during production releases • Our attempts: • Try to decouple any long running jobs from the application • Move imports / exports to a different machine Operations Long running jobs
  15. • Sending E-Mails • Using a centralized relay instead of

    dealing with Host configurations • Logging • Gather logs in a central place • Evaluate with 3rd party tools (e.g. ELK-Stack) Operations Decouple functionality
  16. Operations Recap • Try to continually improve your system and

    workflow • Technical limitations and bottlenecks might also hint at different usability issues
  17. Current Status • Organisational • More Device-Types, more countries, more

    content • Technical • Re-Evaluating Drupal as basis system • Improving the UI based on user feedback • Business requirements =/= Real world usage