Gilt from monolith ruby app to microservice scala service architecture

25 %
75 %
Information about Gilt from monolith ruby app to microservice scala service architecture
Technology

Published on March 7, 2014

Author: goldbergjonathan

Source: slideshare.net

Description

The presentation that I gave at the 'NYC Tech Talks' meetup @ January 14, 2014

SCALING GILT From Monolith Ruby App to Distributed Scala Micro-Services #NYCTECHTALKS Yoni (Jonathan) Goldberg Lead Engineer - GILT Podium => http://bit.ly/podiumapp

ABOUT ME - Leading the Popeye Team - Sale Personalization, Loyalty, SEO Post-purchase, Login/Registration flows - MIT CS BS/Meng | Google | IBM | IDF - Brooklyn | Coffee | Arduino | Running | Kite Surfing | Online Collaboration | Poker Excited to be part of the NYC Tech community

THE LESSONS AND CHALLENGES THAT WE HAD/HAVE WITH MICRO-SERVICE ARCHITECTURE

WHAT IS GILT? Flash Sales Business Founded in 2007 Top 50 Internet-Retailer ~150 Engineers

ANOTHER WAY TO LOOK AT GILT Three day traffic pattern

THE CLASSIC STARTUP STORY

THE EARLY DAYS 2007 - Ruby on Rails the hottest new thing The goal was to get to market fast

WE WERE ABLE TO HANDLE OUR TRAFFIC PRETTY WELL

UNTIL LOUBOUTIN CAME TO GILT

TECHNOLOGY PAIN POINTS - 2009 Spike required to launch 1,000s of ruby processes Postgres was overloaded Routing traffic between ruby processes sucked |Note to self| - hide from the ruby fan boys

DEV PAIN POINTS 1000 Models/Controllers, 200K LOC, 100s of jobs Lots of contributors + no ownership Difficult deployments with long integration cycles Hard to identify root causes

WE NEEDED TO SOLVE THE PROBLEM FAST

THREE THINGS HAPPENED Started the transition to the JVM M(a/i)cro-Service Era Started Dedicated data stores

WHY JVM? Widely adopted Stable Better support for concurrency Better GC vs MRI

FIRST 10 SERVICES

We solved 90% of our arch scaling problem But not the Dev points

PAIN POINTS Spike required to launch 1,000s of ruby processes Postgres was overloaded Routing traffic between ruby processes sucked New services became semi-monolithic 1000 Models/Controllers, 200K LOC, 100s of jobs Lots of contributors + no ownership Difficult deployments with long integration cycles

WHY WE DOUBLED DOWN ON MICRO-SERVICES Empower teams and ownership Smaller scope Simpler and Easier deployments and rollbacks

MICRO SERVICE ARCHITECTURE STARTED TO GET TRACTION

AS OF LAST WEEK WE HAVE MORE THAN 450 SERVICES

APP BOOTSTRAP rk bosrpamnwb ae otta:di-e #Bosrpaamnwbsrie otta di-e evc rk bosrpbblndc ae otta:ayo-os #Bosrpabblndc srie otta ayo-os evc rk bosrpcin-evrcr #Bosrpacin-evrcr sr ae otta:letsre-oe otta letsre-oe ev rk bosrpjre-aa ae otta:esyjv #Bosrpajre-aasrie otta esyjv evc rk bosrpjre-cl ae otta:esysaa #Bosrpajre-cl srie otta esysaa evc rk bosrppa ae otta:ly #Bosrpapa srie otta ly evc rk bosrppa-ibid ae otta:lyu-ul #Bosrpapa-ibidsrie otta lyu-ul evc rk bosrpstlbay ae otta:b-irr #Bosrpastlbaysrie otta b-irr evc rk bosrpshm ae otta:cea #Bosrpashm srie otta cea evc

WE BEGAN THE TRANSITION TO SCALA AND PLAY LOSA - Lots Of Small Apps Same motivation and benefits of Micro-Service Architecture

NEW CHALLENGES Dev/Integration Environments Who owns this service!? Monitoring Deployments and Testing (Functional/Integration)

ON DEV/INTEGRATION ENVIRONMENTS The hardware is not strong enough No one wants to compile 20 services

EACH TEAM HAS A STAGING ENV SRIEPRS[ EVC_OT= 40,#itn-evc 01 lsigsrie 83,#v-srst 25 scue-e 92,#v-refl 40 scfe-al 79,#v-oat 85 scLyly 85,#e-oat 15 wblyly 91,#e ivnoysau 40 wb netr tts 79,#di-oat 88 amnlyly 79,#oiiain 89 ntfcto 70,#og 12 rue 93,#v-opnn 50 sccmoet 60,#v-atitsbi 82 scwils-umt 46,#v-cinsl 06 scato-ae .. .. PR_OWR_RSSRIEPRSmp{|ot OTFRADAG=EVC_OT.a pr| [-' "{ot:oahs:{ot" 'L, #pr}lclot#pr}] } ee([wsh- - - -} PR_OWR_RS G_OT.l xc*%{s a C N n, OTFRADAG, WHS]f

  • STAGING DIFFICULTIES: Hard to keep all the services up to date Maxed our staging env capacities Requires to have internet connection for some of the services (e.g LOSA-apps)
  • The Future
  • DOCKER An extension to Linux Containers (LXC) Decentralization Simple Configurations Much lighter than a VM Immutable Supports services and platforms
  • ON OWNERSHIP "code stays much longer than people" - SB
  • CODE OWNERSHIP
  • CURRENT APPROACH Code Review!Code Review!Code Review! Team owns services, not individual developers Ownership transfer
  • DATA OWNERSHIP
  • WE TRANSITIONED TO MICRO-DBS Third of the services have their own MongoDB Postgres Voldemort
  • MANAGE MICRO-RELATIONAL DBS SCHEMA EVOLUTION MANAGER https://github.com/gilt/schema-evolution-manager
  • PRINCIPLES OF SCHEMA EVOLUTION MANAGER Can manage the schema evolutions in a Git repo Schema changes are deployed as tar flies No rollbacks Schema changes are required to be incremental
  • eh "raetberlae (ditgr">nwsl co cet al eess i nee) e.q smad.nwsl#rae agtcmi e-d /e.q Cetd i omt smds #gnrtstetregshm-o-ann...a. e-it eeae h a . ceaincno002tr #Spadutro yu sre c n na n or evr c shm-o-ann002 d ceaincno-.. smapyhs -lclot-nm incno -ue incn e-pl ot -oahs -ae o-ann -sr o-an
  • ON MONITORING
  • THE TOOLS WE USE graphite / openTSDB
  • ON DEPLOYMENTS AND TESTING (FUNCTIONAL/INTEGRATION) "Testing is HARD" - the dev that sits on your left
  • THE CHALLENGES THAT WE FACED: Hard to execute functional tests between services Frustrating to deploy semi-manually (Capistrano) Scary to deploy other teams services
  • SBT Motivation: Scala adaption Complex Scala syntax Cool features: ~test, shell, console Hard to debug
  • GILT-SBT-BUILD Simple config for all the services Pulls many plugins: [nexus, testing, RPMs, run scripts, Monitoring, SemVer, ...] Custom commands (e.g 'sbt release')
  • ojc BidetnsCinSreCrPoetwt Dpnece { bet ul xed letevroerjc ih eednis vlnm ='v-aeatvto' a ae scsl-ciain vlcrDp =.. a oees .. vlsreDp =.. a evres . vlcinDp =.. a letes . oerd vlinannrc =InannFsTak vrie a ocnoTak oCno.atrc }

    ION-CANNON + SBT Run functional/Selenium tests on dedicated Env Supports Canary releases Easy rollbacks Integrated health checks

    MAIN TAKEAWAYS Simplicity - Do you really need it? We feel that it was the right choice for us MicroServices promise works for most cases As of 2014 - You will need to invest in Tools!

    PODIUM TIME We are hiring... Keep in touch: jgoldberg@gilt.com www.yonigoldberg.com

  • Add a comment

    Related presentations

    Related pages

    Scaling Gilt: from Monolithic Ruby Application to ...

    Scaling Gilt: from Monolithic Ruby Application to Distributed Scala Micro-Services Architecture. ... Android app 40:16. Summary Yoni Goldberg describes ...
    Read more

    Scaling Microservices at Gilt with Scala, Docker and AWS

    ... the Gilt.com architecture from a monolithic Ruby on ... based monolith in the 'Swift' view service, ... the microservice architecture, ...
    Read more

    Scaling Gilt: from monolith ruby app to micro service ...

    Scaling Gilt: from monolith ruby app to micro service scala service architecture Sep 08, 2014 Technology gilt-tech-talks
    Read more

    GitHub - kittrCZ/microservices: Collection of information ...

    ... resources about Microservice Architecture. ... Gilt: from monolith ruby app to micro service scala ... Microservices; Microservice ...
    Read more

    Microservices on AWS - Amazon Web Services

    Microservices on AWS AWS Summit Berlin 2016. ... Gilt: “From Monolith Ruby App to Distributed Scala Micro-Services ... A Typical Microservice ...
    Read more

    From Microservices to Teraservices - HPTS - 2015 Home

    From Microservices to Teraservices ... Loosely coupled service oriented architecture with ... gilt-from-monolith-ruby-app-to-micro-service-scala-service ...
    Read more

    Other Resources - Microservices architecture

    Microservice architecture ... He offers a comprehensive set of resources for learning about ... to Distributed Scala Micro-Services Architecture;
    Read more