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

Reaching Millions of Girls with Girl Effect

Reaching Millions of Girls with Girl Effect

How do you reach 25 million girls globally who don’t share a common language or background? To scale Girl Effect’s platform and achieve this, we tailored many copies of our site. In 3 years we reworked our CMS and pulled parts into microservices as our infrastructure evolved to support the platform.


Jamie Hewland

March 08, 2019

More Decks by Jamie Hewland

Other Decks in Programming


  1. Reaching Millions of Girls with Girl Effect Codie Roelf &

    Jamie Hewland ScaleConf 8 March 2019
  2. Introduction Praekelt.org, Girl Effect, and Springster 01

  3. Codie Roelf Jamie Hewland Site Reliability Engineer @jayhewland Back-end Engineer

  4. Praekelt.org uses mobile technology to solve some of the world's

    largest social problems. Our Mission
  5. We build open- source, scalable platforms that allow anyone with

    a mobile phone to access vital information and essential services— putting wellbeing in the palm of their hands. Our Technologies
  6. Girl Effect builds youth brands and mobile platforms to empower

    girls to change their lives.
  7. None
  8. 67 countries 16 languages 16m users

  9. This talk is about the many things we did to

    reach these users
  10. This talk is about the many things we did to

    reach these users —there was no silver bullet
  11. The Molo Platform Shared tools for publishing mobisites 02

  12. The Molo Platform • Community features • Profiles, comments, polls,

    surveys, tips, reaction questions • Focus on user-generated content • Many sites of the same shape but with heavy customisation • Skins/CSS • Plugins • Internationalisation • Content
  13. Internet of Good Things Unicef Tuneme UNFPA BabyCenter Johnson &

  14. The year is 2014… • Facebook launches Free Basics •

    Simultaneous launch in many countries • Localisation + URL for each country • Incubator with 100 new sites all built with Molo
  15. Countries 0 20 40 60 80 December February April June

    Launched countries "Priority countries"
  16. Hosting many sites Scale by replicating 03

  17. web01 Nginx Molo PostgreSQL The Internet M Funder Project Server/VM

    1:n 1:1
  18. Puppet Configuration management web01 M web02 M web03 M web04

    M Replicate The Internet
  19. web01 Supervisor Nginx web02 db02 web03 M M M M

    M M M M M M M M M M db01
  20. Hoped to automate our problems away with container orchestration •

    Easy, replicable deployments • Resource-aware scheduling • Health checks & failover
  21. None
  22. None
  23. None
  24. None
  25. None
  26. Peak containers • Johannesburg Mesos/Marathon cluster peaks at 30 worker

    nodes • ~255GB RAM, 120 cores, ~900 containers • Bare-metal Hetzner hosts • VMs on self-managed XenServer • Shared with other services (not just Springster or Molo sites) • Team of 4 SREs
  27. Reducing the number of sites Mo’ containers mo’ problems 04

  28. E_TOO_MANY_APPS • Could run many sites/containers easily and quickly •

    Running many similar sites as completely separate services • Big maintenance overhead for content managers
  29. CMS Application x 67

  30. CMS Application x 15

  31. CMS Application x 15

  32. Benefits • Cost efficiencies • Less content errors • Less

    frustration for content managers • User expectation management
  33. Consolidation Core Infrastructure 05

  34. Core Infrastructure Girl Effect wanted to consolidated their services on

    one platform • AWS-hosted • Shared container infrastructure • Centralise data and auth for GDPR
  35. Moving to AWS • Made much easier by Docker •

    Adopted Spinnaker for improved CD • Heavier use of AWS services including emerging services • High-availability
  36. GitHub Docker Hub Travis CI Mesosphere DC/OS

  37. Common base images springster molo-bootstrap django-bootstrap python-base python:slim Developers Product:

    Source code, app settings SRE Best practices: Webserver config, users/groups, init Upstream bit.ly/DjangoDocker
  38. Multiple channels Keeping Springster relevant 06

  39. Then Now Community School Church Newspaper Magazine Television Radio Google

 Websites Facebook Messenger Twitter Instagram YouTube WhatsApp
  40. more access to more information, more often and faster than

    ever before
  41. • Large quantity of high-quality content in our CMS •

    Need to rearchitect our system to deliver content on more than just mobi-sites • Want swappable front-ends for different channels Bringing Springster to new channels
  42. CMS Application WhatsApp Web app KaiOS

  43. Reassessing open source • Everything Praekelt.org does is open source

    • Have to always keep up with changes in OSS communities • Balance between custom/differentiated code & leveraging tools in ecosystem
  44. vs. vs. Mesosphere DC/OS Molo Wagtail Kubernetes

  45. Conclusions Lessons learned 07

  46. Lessons learned • Scaling can happen in different, unpredictable ways

    • Flexibility and ability to adapt are often critical • Incremental consolidation/optimisation can come later • Balance building your own system vs using what’s available
  47. https://youtu.be/tg5l4WRF2IU

  48. Thank you. @ItsCodieee/@jayhewland @praekeltorg/@girleffect