large scale drupal - behind the scenes
TRANSCRIPT
![Page 1: Large Scale Drupal - Behind the Scenes](https://reader034.vdocuments.us/reader034/viewer/2022042715/55a08bfe1a28ab86228b4685/html5/thumbnails/1.jpg)
Large Scale Drupal in
the Municipality of
Copenhagen - Behind
the Scenes
Drupal Camp Berlin 2014
![Page 2: Large Scale Drupal - Behind the Scenes](https://reader034.vdocuments.us/reader034/viewer/2022042715/55a08bfe1a28ab86228b4685/html5/thumbnails/2.jpg)
About me
• Boyan Borisov
• Open Source Tech Lead
and Architect @
Propeople
• @boyan_borisov
• Skype: boian.borisov
• https://drupal.org/u/bo
yan.borisov
![Page 3: Large Scale Drupal - Behind the Scenes](https://reader034.vdocuments.us/reader034/viewer/2022042715/55a08bfe1a28ab86228b4685/html5/thumbnails/3.jpg)
What were the client’s requirements?
• Multisite platform able to handle a thousand web sites
• Scalable infrastructure able to handle a thousand sites available 24/7
• Multi vendor environment which allows every module to be reusable
• Content sharing between all the sites on all the profiles
• Centralized Digital Asset Management (DAM) system
![Page 4: Large Scale Drupal - Behind the Scenes](https://reader034.vdocuments.us/reader034/viewer/2022042715/55a08bfe1a28ab86228b4685/html5/thumbnails/4.jpg)
What were the client’s requirements?
• Editorial friendly UI
• Hierarchy structure of the site pages
• Web Content Accessibility Guidelines
(WCAG) – WCAG 2.0 AA
• Performance
• Automated tests
• Continuous integration
![Page 5: Large Scale Drupal - Behind the Scenes](https://reader034.vdocuments.us/reader034/viewer/2022042715/55a08bfe1a28ab86228b4685/html5/thumbnails/5.jpg)
Multisite platform able to handle a thousand web sites
One Aegir to rule
them all!
• What is Aegir?
• Why did we choose it?
• What did we do in
order to extend Aegir?
![Page 6: Large Scale Drupal - Behind the Scenes](https://reader034.vdocuments.us/reader034/viewer/2022042715/55a08bfe1a28ab86228b4685/html5/thumbnails/6.jpg)
Scalable infrastructure able to handle a thousand sites available 24/7
![Page 7: Large Scale Drupal - Behind the Scenes](https://reader034.vdocuments.us/reader034/viewer/2022042715/55a08bfe1a28ab86228b4685/html5/thumbnails/7.jpg)
Monitoring and logging
• Graphite - Scalable Realtime Graphing
• Elasticsearch - http://www.elasticsearch.org
• Logstash - http://logstash.net
• JSONlog - https://www.drupal.org/project/jsonlog
• Elasticsearch Connector -
https://www.drupal.org/project/elasticsearch_con
nector
![Page 8: Large Scale Drupal - Behind the Scenes](https://reader034.vdocuments.us/reader034/viewer/2022042715/55a08bfe1a28ab86228b4685/html5/thumbnails/8.jpg)
Multi vendor environment which allows every module to be reusable
• Gitlab - https://about.gitlab.com
• Mini “drupal.org” for all municipality custom modules
• Every module into its own repository
• Drush make file to build a platform
• Reusable drush make files
• Phing build tool
• Jira
![Page 9: Large Scale Drupal - Behind the Scenes](https://reader034.vdocuments.us/reader034/viewer/2022042715/55a08bfe1a28ab86228b4685/html5/thumbnails/9.jpg)
Reusable make files
core = 7.x
api = 2
; KKMS inheritance
includes[] = "https://kkgit.kk.dk/drupal-7-kkms-modules/kkms_profile/raw/7.x-1.26/release.make
includes[] = "https://kkgit.kk.dk/drupal-7-kkms-modules/kkdk_profile/raw/dev/contrib.make"
includes[] = "https://kkgit.kk.dk/drupal-7-kkms-modules/kkdk_profile/raw/dev/features.make"
includes[] = "https://kkgit.kk.dk/drupal-7-kkms-modules/kkdk_profile/raw/dev/custom.make"
![Page 10: Large Scale Drupal - Behind the Scenes](https://reader034.vdocuments.us/reader034/viewer/2022042715/55a08bfe1a28ab86228b4685/html5/thumbnails/10.jpg)
Content sharing between all the sites on all the profiles
• Push content to a site(s)
• Push content to a channel
• Pull content from a site
• Pull content from a channel
• Centralized Digital Asset Management
(DAM) system
• Central content management system
![Page 11: Large Scale Drupal - Behind the Scenes](https://reader034.vdocuments.us/reader034/viewer/2022042715/55a08bfe1a28ab86228b4685/html5/thumbnails/11.jpg)
Content sharing architecture
![Page 12: Large Scale Drupal - Behind the Scenes](https://reader034.vdocuments.us/reader034/viewer/2022042715/55a08bfe1a28ab86228b4685/html5/thumbnails/12.jpg)
Centralized Digital Asset Management (DAM) system
![Page 13: Large Scale Drupal - Behind the Scenes](https://reader034.vdocuments.us/reader034/viewer/2022042715/55a08bfe1a28ab86228b4685/html5/thumbnails/13.jpg)
Central Localization Distribution (CLD)
CLD
Site1 Site2 SiteN
![Page 14: Large Scale Drupal - Behind the Scenes](https://reader034.vdocuments.us/reader034/viewer/2022042715/55a08bfe1a28ab86228b4685/html5/thumbnails/14.jpg)
Editorial friendly UI
• Field group • Media and Media browser plus • Admin views and Views bulk operations • Workbench• Entity reference and References dialog • Panelizer• Node clone • Ckeditor and Better formats • Chosen, Multiselect and Hierarchical Select • Taxonomy manager
![Page 15: Large Scale Drupal - Behind the Scenes](https://reader034.vdocuments.us/reader034/viewer/2022042715/55a08bfe1a28ab86228b4685/html5/thumbnails/15.jpg)
Hierarchy structure of the site pages
• Be aware not to use a module which will
make a hierarchy on top of the menu_router
table!
• Solution is Menu Reference -
https://www.drupal.org/project/menu_refe
rence
![Page 16: Large Scale Drupal - Behind the Scenes](https://reader034.vdocuments.us/reader034/viewer/2022042715/55a08bfe1a28ab86228b4685/html5/thumbnails/16.jpg)
The German trace
![Page 17: Large Scale Drupal - Behind the Scenes](https://reader034.vdocuments.us/reader034/viewer/2022042715/55a08bfe1a28ab86228b4685/html5/thumbnails/17.jpg)
Web Content Accessibility Guidelines (WCAG) – WCAG 2.0 AA
● Drupal and accessibility
https://groups.drupal.org/node/18595
https://www.drupal.org/project/node_accessi
bility
● Test tools
http://siteimprove.com/
http://wave.webaim.org/
Accessibility Developer Tools - Chrome plugin
![Page 18: Large Scale Drupal - Behind the Scenes](https://reader034.vdocuments.us/reader034/viewer/2022042715/55a08bfe1a28ab86228b4685/html5/thumbnails/18.jpg)
Performance
• Varnish with a custom vcl file
• Memcache
• Apache Solr views
• APC cache
• Horizontal and vertical scaling
![Page 19: Large Scale Drupal - Behind the Scenes](https://reader034.vdocuments.us/reader034/viewer/2022042715/55a08bfe1a28ab86228b4685/html5/thumbnails/19.jpg)
Automated tests
![Page 20: Large Scale Drupal - Behind the Scenes](https://reader034.vdocuments.us/reader034/viewer/2022042715/55a08bfe1a28ab86228b4685/html5/thumbnails/20.jpg)
Continuous integration
• Continuous integration with Aegir
• Gitlab + webhooks + merge request
• Jira + Gitlab integration
• Phing build tool for local development
• Release branches
• Jenkins
• Fabric
![Page 21: Large Scale Drupal - Behind the Scenes](https://reader034.vdocuments.us/reader034/viewer/2022042715/55a08bfe1a28ab86228b4685/html5/thumbnails/21.jpg)
The best part!
What did we give back to the
community?
![Page 22: Large Scale Drupal - Behind the Scenes](https://reader034.vdocuments.us/reader034/viewer/2022042715/55a08bfe1a28ab86228b4685/html5/thumbnails/22.jpg)
Contributions
● 90+ patches
● 300+ comments
● 7 contributed modules
![Page 23: Large Scale Drupal - Behind the Scenes](https://reader034.vdocuments.us/reader034/viewer/2022042715/55a08bfe1a28ab86228b4685/html5/thumbnails/23.jpg)
Questions?