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

Scaling an API: From Reboots to Redis, how (not...

Scaling an API: From Reboots to Redis, how (not) to do it

My company that has grown from a small B2C app written in PHP/MySQL to a B2B advertising company doing 15 Billion API calls per month. Along the way there have been some big technology changes and decisions that have both helped and hindered us. Along the way we have had 3 day outages, several AWS outages, massive traffic spikes especially early days when we signed customers like WordPress.com, and many many improvements, re-factors and even successes. Today and for the last year we are highly modern engineering team, using many of the latest technologies and methodologies. We code in PHP and Python with C, Go, CoffeeScript and more, store data in MongoDB, Redis, memcache, Solr and MySQL, we have a full CI environment, do deploys using IRC (and Hubot) and Puppet everything. We have 100% (not 99.999%) up time for over 12 months now.

Ciaran Rooney

May 17, 2013
Tweet

Other Decks in Technology

Transcript

  1. { "fullName": "Ciarán Rooney", "workLife": { "company": "Skimlinks", "position": "CTO",

    "website": "http://skimlinks.com" }, "homeLife": { "email": "[email protected]", "twitter": "@CiaranR", "website": "http://ciaran.ie", "hobby": "http://phplondon.org" } }
  2. { "dataYear": "2013", "dataMonth": "april", "dataPeriod": "30 days", "dataRequests": {

    "apiRequests": "18,256,654,541", "impressions": “5,773,142,857", "uniqueUsers": "145,137,679" }, "customers": { "websitesPowered": "1,087,348", "customers": "26,379" } }
  3. JAYxx JAYxx JAYxx JAYxx JAYxx JAYxx JAYxx JAYxx ELB ELB

    CLUSTERxx Apache Flume Collector C Prefix Tree C NLP Filtering
  4. Conclusions  Small Scalable units  Horizontal is always better

     Eliminate Single points of failure  Scale writes and reads separately  Automate everything  Monitor everything
  5. Scaling an API From Reboots to Redis, how (not) to

    do it Feedback! https://joind.in/8639
  6. { "fullName": "Ciarán Rooney", "workLife": { "company": "Skimlinks", "position": "CTO",

    "website": "http://skimlinks.com" }, "homeLife": { "email": "[email protected]", "twitter": "@CiaranR", "website": "http://ciaran.ie", "hobby": "http://phplondon.org" } }