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

Open Source Infrastructure

Open Source Infrastructure

Like any other organization, CakePHP has applications and services it deploys to support the organization. Unlike many companies, it's developers are unpaid volunteers in many timezones. How does CakePHP manage it's infrastructure in a transparent, distributed fashion? This talk will cover tips and tricks we use to minimize our server overhead while keeping everyone informed of how things work.

Jose Diaz-Gonzalez

June 29, 2017
Tweet

More Decks by Jose Diaz-Gonzalez

Other Decks in Technology

Transcript

  1. About Me • Systems Engineer @ SeatGeek • Cake Core

    Developer • twitter.com/savant • github.com/josegonzalez
  2. What do we do? • Write and translate documentation •

    Maintain existing CakePHP Websites • Investigate new core/community initiatives • Provide support via chat/email/forums • Wrangle Social Media
  3. What day jobs do we have? • Car Parts Salesman

    • Company Owner • Professional Dancer • Software Developer
  4. What is the problem? We need to ensure that that

    the CakePHP Sites and related services are highly available to our users with minimal interference
  5. • Centralized Logging • Server Metrics and APM • Authentication

    and ACL for infrastructure access • Backups (and backup testing!) • Scaling • Disaster Recovery
  6. Moar background • 5-10 people online at any time •

    Might be busy with paid work, side projects, or life • Some with tons of infra experience, most with none • Language Barrier • Little to no on boarding time
  7. Can we pay for a service? • CakeDC isn’t made

    out of money • Services are expensive • Still require maintenance, on-boarding
  8. What about our systems engineers? • Full time jobs/burnout •

    Different tech than day job • May not be available
  9. But why tho? • Everyone can read YAML • Low

    learning curve, lots of tutorials • Maps well to existing server tasks • Easy to write custom modules
  10. But why not tho? • Everyone needs ssh access •

    Repo credentials are in the open, even if encrypted • YAML sucks as an automation language • Moves fast and breaks things
  11. But why tho? • Everyone has used it, everyone hates

    it equally • Jobs can be generated via Groovy DSL • Deployable via Docker • Plugins for everything
  12. But why not tho? • Ecosystem is constantly moving •

    Default UI isn’t great • Really easy to use/abuse plugins non-pipeline jobs
  13. But why not CircleCI/TravisCI/Wrecker? • Expensive • Jobs are usually

    attached to a single repo • Hard to do OSS with secure secrets • At the whim of service providers
  14. But why tho? • Already built • Integrates with Ansible,

    and mostly unattended • Designed with Docker in mind • Has an internal Champion • OSS
  15. But why other solutions? • Does not need to be

    clustered • We can withstand 30 min of downtime during restores • Setup/training costs much larger for K8s/Mesos/ Nomad • Custom scripting not necessary, can use Heroku Buildpacks • No need to rebuild the wheel and write build/release code
  16. Access Control • Everyone has access, but is that appropriate?

    • Smaller circle of trust makes infra control easier, but harder to deal with in distributed context
  17. Access Control • Passwords and keys need to be decrypted

    • Web of trust for initial access must be established
  18. Logging • Logs should be aggregated • Use the same

    format, json or logfmt • ISO8601 - Don’t make up date time formats
  19. Logging • Self-hosted logging can be cheaper, but more labor

    intensive • Ship first, filter logs later
  20. Monitoring • Our site needs to be globally available, does

    yours? • Server metrics via Diamond/StatsD/Graphite • Visualization via Grafana
  21. Backupss • Backups go to Rackspace Cloud, manually cleared •

    Manual verification performed semi-monthly • Automated backup verification coming up