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

Late, Over Budget, & Happy: Our Service Extraction Story

Nat Budin
November 20, 2019

Late, Over Budget, & Happy: Our Service Extraction Story

A 3-month project stretches out to 9 months. It's widely viewed as over-engineered and difficult to work with. But months after deployment, it's considered successful. What happened?

In this talk, a principal engineer and a director of engineering recount the extraction of a social feeds GraphQL service from a decade-old Rails monolith. Along the way, we'll cover topics including selling a big project, complexity in remote work, complexity in deployments, and complexity in emotions. We'll tell you about the scars we acquired and the lessons we learned.

Nat Budin

November 20, 2019
Tweet

More Decks by Nat Budin

Other Decks in Technology

Transcript

  1. @amynewell / @natbudin rubyconf2019 Hi, we’re Amy Newell and Nat

    Budin We both used to work at PatientsLikeMe (PLM)
  2. @amynewell / @natbudin rubyconf2019 Amy Newell - formerly Director of

    Engineering Now at Wistia (an excellent place to work!) Based in Boston Nat Budin - formerly Principal Software Eng Now at ActBlue (another excellent place to work!) Based in Seattle This talk is about a project we did at PLM
  3. @amynewell / @natbudin rubyconf2019 • It’s a social network for

    people with chronic medical conditions • Lets you track your symptoms, treatments, progress of your condition • A major reason people come to the site is to find and connect with others
  4. @amynewell / @natbudin rubyconf2019 plm-website (aka “the monolith”) StreamEvent User-generated

    content Medical metadata Controllers and views Query for feed content 2013 PostgreSQL
  5. @amynewell / @natbudin rubyconf2019 plm-website (aka “the monolith”) StreamEvent User-generated

    content Medical metadata Controllers and views Query Redis for feed content 2014 PostgreSQL Redis
  6. @amynewell / @natbudin rubyconf2019 Summer 2016 • Nat goes to

    DataLayer conference • “We tried X and it was great” • “…PS, our ops team hates it” • …and comes away with an unexpected idea
  7. @amynewell / @natbudin rubyconf2019 Newswire (aka “the microservice”) plm-website (aka

    “the monolith”) StreamEvent User-generated content Querying API Allows clients to query for feed data GraphQL PostgreSQL Elasticsearch
  8. @amynewell / @natbudin rubyconf2019 January 2017 (3 months in) •

    We get Product buy-in • Amy spins off a separate team and adds two more engineers
  9. @amynewell / @natbudin rubyconf2019 March/April 2017 (6-7 months in) •

    Dark times for Amy and Nat • It emerges that we have to deploy this with zero downtime, and we bring on a devops expert to help • We find out we have to keep supporting the old, unmaintained iOS app • Patience running out for when this would ship, no actual end in sight
  10. @amynewell / @natbudin rubyconf2019 Newswire ships to production! June 5,

    2017 (9 months in) Amy begins ketamine infusions!
  11. @amynewell / @natbudin rubyconf2019 Fall 2017 • We start tweaking

    the feed algorithms to show stuff people actually want to read • PLM launches new mobile apps for iOS and Android, centering news feeds as the primary experience
  12. @amynewell / @natbudin rubyconf2019 Winter 2018 • Paying off a

    lot of tech debt • Major performance improvements
  13. @amynewell / @natbudin rubyconf2019 Spring 2018 We figure out that

    it’s possible to build an entirely new type of discussion experience (“topics”) on top of Newswire
  14. @amynewell / @natbudin rubyconf2019 My second tour on Newswire when

    we built tons of shit super fast is one of my favorite PLM memories. A software engineer It was great to see how the big upfront cost enabled us to quickly launch new beta features (“Topics”) without much technical lift. A product manager
  15. @amynewell / @natbudin rubyconf2019 The News Crew Developers Adia, Evan,

    Margaret, Morgan, Rachel, Rocco, Stephanie Management Amy, Andy, Brittney, Matt QA Jessica, Linley Product Colin, Katelyn, Rebecca Devops Bryan, Logan, Ryan, Stuart Supporting cast Ian, Jonathan, Michael, Paul, Scott, Thijs
  16. Thank you • Questions? Please talk to us after! •

    Find us on Twitter! • @amynewell • @natbudin