SlideShare ist ein Scribd-Unternehmen logo
1 von 60
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Andere mochten auch

Monolith to Microservices - O’Reilly Oscon
Monolith to Microservices - O’Reilly OsconMonolith to Microservices - O’Reilly Oscon
Monolith to Microservices - O’Reilly OsconChristopher Grant
 
Evolving toward Microservices - O’Reilly SACON Keynote
Evolving toward Microservices  - O’Reilly SACON KeynoteEvolving toward Microservices  - O’Reilly SACON Keynote
Evolving toward Microservices - O’Reilly SACON KeynoteChristopher Grant
 
Software Architectures, Week 3 - Microservice-based Architectures
Software Architectures, Week 3 - Microservice-based ArchitecturesSoftware Architectures, Week 3 - Microservice-based Architectures
Software Architectures, Week 3 - Microservice-based ArchitecturesAngelos Kapsimanis
 
From the Monolith to Microservices - CraftConf 2015
From the Monolith to Microservices - CraftConf 2015From the Monolith to Microservices - CraftConf 2015
From the Monolith to Microservices - CraftConf 2015Randy Shoup
 
Pragmatic Microservices
Pragmatic MicroservicesPragmatic Microservices
Pragmatic MicroservicesRandy Shoup
 
Cloud Native Java Microservices
Cloud Native Java MicroservicesCloud Native Java Microservices
Cloud Native Java MicroservicesKenny Bastani
 

Andere mochten auch (7)

Monolith to Microservices - O’Reilly Oscon
Monolith to Microservices - O’Reilly OsconMonolith to Microservices - O’Reilly Oscon
Monolith to Microservices - O’Reilly Oscon
 
Evolving toward Microservices - O’Reilly SACON Keynote
Evolving toward Microservices  - O’Reilly SACON KeynoteEvolving toward Microservices  - O’Reilly SACON Keynote
Evolving toward Microservices - O’Reilly SACON Keynote
 
Software Architectures, Week 3 - Microservice-based Architectures
Software Architectures, Week 3 - Microservice-based ArchitecturesSoftware Architectures, Week 3 - Microservice-based Architectures
Software Architectures, Week 3 - Microservice-based Architectures
 
From the Monolith to Microservices - CraftConf 2015
From the Monolith to Microservices - CraftConf 2015From the Monolith to Microservices - CraftConf 2015
From the Monolith to Microservices - CraftConf 2015
 
Pragmatic Microservices
Pragmatic MicroservicesPragmatic Microservices
Pragmatic Microservices
 
Cloud Native Java Microservices
Cloud Native Java MicroservicesCloud Native Java Microservices
Cloud Native Java Microservices
 
software architecture
software architecturesoftware architecture
software architecture
 

Ähnlich wie Gilt from monolith ruby app to microservice scala service architecture

Scaling Gilt: from Monolithic Ruby Application to Distributed Scala Micro-Ser...
Scaling Gilt: from Monolithic Ruby Application to Distributed Scala Micro-Ser...Scaling Gilt: from Monolithic Ruby Application to Distributed Scala Micro-Ser...
Scaling Gilt: from Monolithic Ruby Application to Distributed Scala Micro-Ser...C4Media
 
Building a Modern Microservices Architecture at Gilt: The Essentials
Building a Modern Microservices Architecture at Gilt: The EssentialsBuilding a Modern Microservices Architecture at Gilt: The Essentials
Building a Modern Microservices Architecture at Gilt: The EssentialsC4Media
 
Red Hat Agile integration workshop - Atlanta
Red Hat Agile integration workshop - AtlantaRed Hat Agile integration workshop - Atlanta
Red Hat Agile integration workshop - AtlantaJudy Breedlove
 
Agile integration workshop Atlanta
Agile integration workshop   AtlantaAgile integration workshop   Atlanta
Agile integration workshop AtlantaJeremy Davis
 
Denver Cloud Foundry Meetup - February 2016
Denver Cloud Foundry Meetup - February 2016Denver Cloud Foundry Meetup - February 2016
Denver Cloud Foundry Meetup - February 2016Josh Ghiloni
 
Oracle code bogota-Handle the Complexity of Migrate to Microservices from Mon...
Oracle code bogota-Handle the Complexity of Migrate to Microservices from Mon...Oracle code bogota-Handle the Complexity of Migrate to Microservices from Mon...
Oracle code bogota-Handle the Complexity of Migrate to Microservices from Mon...Alberto Salazar
 
SH 1 - SES 4 - Microservices - Andrew Morgan TLV.pptx
SH 1 - SES 4 - Microservices - Andrew Morgan TLV.pptxSH 1 - SES 4 - Microservices - Andrew Morgan TLV.pptx
SH 1 - SES 4 - Microservices - Andrew Morgan TLV.pptxMongoDB
 
Oracle Code Javaday Sao Paulo Monolith_to Microservices
Oracle Code Javaday Sao Paulo Monolith_to MicroservicesOracle Code Javaday Sao Paulo Monolith_to Microservices
Oracle Code Javaday Sao Paulo Monolith_to MicroservicesAlberto Salazar
 
#JavadayEcuador Monolith to Microservices
#JavadayEcuador Monolith to Microservices#JavadayEcuador Monolith to Microservices
#JavadayEcuador Monolith to MicroservicesAlberto Salazar
 
Paris FOD meetup - koordinator
Paris FOD meetup - koordinatorParis FOD meetup - koordinator
Paris FOD meetup - koordinatorAbdelkrim Hadjidj
 
30 billion requests per day with a NoSQL architecture (2013)
30 billion requests per day with a NoSQL architecture (2013)30 billion requests per day with a NoSQL architecture (2013)
30 billion requests per day with a NoSQL architecture (2013)Julien SIMON
 
RightScale Roadtrip Boston: Accelerate to Cloud
RightScale Roadtrip Boston: Accelerate to CloudRightScale Roadtrip Boston: Accelerate to Cloud
RightScale Roadtrip Boston: Accelerate to CloudRightScale
 
Oracle Code One San Francisco - Monolith to microservices
Oracle Code One San Francisco - Monolith to microservicesOracle Code One San Francisco - Monolith to microservices
Oracle Code One San Francisco - Monolith to microservicesAlberto Salazar
 
Gojko's 5 rules for super responsive Serverless applications
Gojko's 5 rules for super responsive Serverless applicationsGojko's 5 rules for super responsive Serverless applications
Gojko's 5 rules for super responsive Serverless applicationsDaniel Zivkovic
 
Legacy Code: Evolve or Rewrite?
Legacy Code: Evolve or Rewrite?Legacy Code: Evolve or Rewrite?
Legacy Code: Evolve or Rewrite?Cyrille Martraire
 
Effective Kubernetes - Is Kubernetes the new Linux? Is the new Application Se...
Effective Kubernetes - Is Kubernetes the new Linux? Is the new Application Se...Effective Kubernetes - Is Kubernetes the new Linux? Is the new Application Se...
Effective Kubernetes - Is Kubernetes the new Linux? Is the new Application Se...Wojciech Barczyński
 
2018 MONOLITICH TO MICROSERVICES - Conferencia Javeros colombia
2018 MONOLITICH TO MICROSERVICES  - Conferencia Javeros colombia 2018 MONOLITICH TO MICROSERVICES  - Conferencia Javeros colombia
2018 MONOLITICH TO MICROSERVICES - Conferencia Javeros colombia Alberto Salazar
 
GeeCON Microservices 2015 scaling micro services at gilt
GeeCON Microservices 2015   scaling micro services at giltGeeCON Microservices 2015   scaling micro services at gilt
GeeCON Microservices 2015 scaling micro services at giltAdrian Trenaman
 
La Redoute Quality Engineering Transformation
La Redoute Quality Engineering TransformationLa Redoute Quality Engineering Transformation
La Redoute Quality Engineering TransformationAntoine Craske
 

Ähnlich wie Gilt from monolith ruby app to microservice scala service architecture (20)

Scaling Gilt: from Monolithic Ruby Application to Distributed Scala Micro-Ser...
Scaling Gilt: from Monolithic Ruby Application to Distributed Scala Micro-Ser...Scaling Gilt: from Monolithic Ruby Application to Distributed Scala Micro-Ser...
Scaling Gilt: from Monolithic Ruby Application to Distributed Scala Micro-Ser...
 
Building a Modern Microservices Architecture at Gilt: The Essentials
Building a Modern Microservices Architecture at Gilt: The EssentialsBuilding a Modern Microservices Architecture at Gilt: The Essentials
Building a Modern Microservices Architecture at Gilt: The Essentials
 
Red Hat Agile integration workshop - Atlanta
Red Hat Agile integration workshop - AtlantaRed Hat Agile integration workshop - Atlanta
Red Hat Agile integration workshop - Atlanta
 
Agile integration workshop Atlanta
Agile integration workshop   AtlantaAgile integration workshop   Atlanta
Agile integration workshop Atlanta
 
Yatoto-technical
Yatoto-technicalYatoto-technical
Yatoto-technical
 
Denver Cloud Foundry Meetup - February 2016
Denver Cloud Foundry Meetup - February 2016Denver Cloud Foundry Meetup - February 2016
Denver Cloud Foundry Meetup - February 2016
 
Oracle code bogota-Handle the Complexity of Migrate to Microservices from Mon...
Oracle code bogota-Handle the Complexity of Migrate to Microservices from Mon...Oracle code bogota-Handle the Complexity of Migrate to Microservices from Mon...
Oracle code bogota-Handle the Complexity of Migrate to Microservices from Mon...
 
SH 1 - SES 4 - Microservices - Andrew Morgan TLV.pptx
SH 1 - SES 4 - Microservices - Andrew Morgan TLV.pptxSH 1 - SES 4 - Microservices - Andrew Morgan TLV.pptx
SH 1 - SES 4 - Microservices - Andrew Morgan TLV.pptx
 
Oracle Code Javaday Sao Paulo Monolith_to Microservices
Oracle Code Javaday Sao Paulo Monolith_to MicroservicesOracle Code Javaday Sao Paulo Monolith_to Microservices
Oracle Code Javaday Sao Paulo Monolith_to Microservices
 
#JavadayEcuador Monolith to Microservices
#JavadayEcuador Monolith to Microservices#JavadayEcuador Monolith to Microservices
#JavadayEcuador Monolith to Microservices
 
Paris FOD meetup - koordinator
Paris FOD meetup - koordinatorParis FOD meetup - koordinator
Paris FOD meetup - koordinator
 
30 billion requests per day with a NoSQL architecture (2013)
30 billion requests per day with a NoSQL architecture (2013)30 billion requests per day with a NoSQL architecture (2013)
30 billion requests per day with a NoSQL architecture (2013)
 
RightScale Roadtrip Boston: Accelerate to Cloud
RightScale Roadtrip Boston: Accelerate to CloudRightScale Roadtrip Boston: Accelerate to Cloud
RightScale Roadtrip Boston: Accelerate to Cloud
 
Oracle Code One San Francisco - Monolith to microservices
Oracle Code One San Francisco - Monolith to microservicesOracle Code One San Francisco - Monolith to microservices
Oracle Code One San Francisco - Monolith to microservices
 
Gojko's 5 rules for super responsive Serverless applications
Gojko's 5 rules for super responsive Serverless applicationsGojko's 5 rules for super responsive Serverless applications
Gojko's 5 rules for super responsive Serverless applications
 
Legacy Code: Evolve or Rewrite?
Legacy Code: Evolve or Rewrite?Legacy Code: Evolve or Rewrite?
Legacy Code: Evolve or Rewrite?
 
Effective Kubernetes - Is Kubernetes the new Linux? Is the new Application Se...
Effective Kubernetes - Is Kubernetes the new Linux? Is the new Application Se...Effective Kubernetes - Is Kubernetes the new Linux? Is the new Application Se...
Effective Kubernetes - Is Kubernetes the new Linux? Is the new Application Se...
 
2018 MONOLITICH TO MICROSERVICES - Conferencia Javeros colombia
2018 MONOLITICH TO MICROSERVICES  - Conferencia Javeros colombia 2018 MONOLITICH TO MICROSERVICES  - Conferencia Javeros colombia
2018 MONOLITICH TO MICROSERVICES - Conferencia Javeros colombia
 
GeeCON Microservices 2015 scaling micro services at gilt
GeeCON Microservices 2015   scaling micro services at giltGeeCON Microservices 2015   scaling micro services at gilt
GeeCON Microservices 2015 scaling micro services at gilt
 
La Redoute Quality Engineering Transformation
La Redoute Quality Engineering TransformationLa Redoute Quality Engineering Transformation
La Redoute Quality Engineering Transformation
 

Kürzlich hochgeladen

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusZilliz
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbuapidays
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 

Kürzlich hochgeladen (20)

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 

Gilt from monolith ruby app to microservice scala service architecture

  • 1. SCALING GILT From Monolith Ruby App to Distributed Scala Micro-Services #NYCTECHTALKS Yoni (Jonathan) Goldberg Lead Engineer - GILT Podium => http://bit.ly/podiumapp
  • 2. 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
  • 3. THE LESSONS AND CHALLENGES THAT WE HAD/HAVE WITH MICRO-SERVICE ARCHITECTURE
  • 4.
  • 5. WHAT IS GILT? Flash Sales Business Founded in 2007 Top 50 Internet-Retailer ~150 Engineers
  • 6.
  • 7. ANOTHER WAY TO LOOK AT GILT Three day traffic pattern
  • 9. THE EARLY DAYS 2007 - Ruby on Rails the hottest new thing The goal was to get to market fast
  • 10.
  • 11. WE WERE ABLE TO HANDLE OUR TRAFFIC PRETTY WELL
  • 13. 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
  • 14. 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
  • 15. WE NEEDED TO SOLVE THE PROBLEM FAST
  • 16. THREE THINGS HAPPENED Started the transition to the JVM M(a/i)cro-Service Era Started Dedicated data stores
  • 17. WHY JVM? Widely adopted Stable Better support for concurrency Better GC vs MRI
  • 19.
  • 20. We solved 90% of our arch scaling problem But not the Dev points
  • 21. 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
  • 22. WHY WE DOUBLED DOWN ON MICRO-SERVICES Empower teams and ownership Smaller scope Simpler and Easier deployments and rollbacks
  • 24. AS OF LAST WEEK WE HAVE MORE THAN 450 SERVICES
  • 25. 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
  • 26. WE BEGAN THE TRANSITION TO SCALA AND PLAY LOSA - Lots Of Small Apps Same motivation and benefits of Micro-Service Architecture
  • 27.
  • 28. NEW CHALLENGES Dev/Integration Environments Who owns this service!? Monitoring Deployments and Testing (Functional/Integration)
  • 29. ON DEV/INTEGRATION ENVIRONMENTS The hardware is not strong enough No one wants to compile 20 services
  • 30. 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
  • 31. 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)
  • 33. DOCKER An extension to Linux Containers (LXC) Decentralization Simple Configurations Much lighter than a VM Immutable Supports services and platforms
  • 34. ON OWNERSHIP "code stays much longer than people" - SB
  • 36. CURRENT APPROACH Code Review!Code Review!Code Review! Team owns services, not individual developers Ownership transfer
  • 37.
  • 38.
  • 40. WE TRANSITIONED TO MICRO-DBS Third of the services have their own MongoDB Postgres Voldemort
  • 41. MANAGE MICRO-RELATIONAL DBS SCHEMA EVOLUTION MANAGER https://github.com/gilt/schema-evolution-manager
  • 42. 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
  • 43. 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
  • 45.
  • 46. THE TOOLS WE USE graphite / openTSDB
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52. ON DEPLOYMENTS AND TESTING (FUNCTIONAL/INTEGRATION) "Testing is HARD" - the dev that sits on your left
  • 53. THE CHALLENGES THAT WE FACED: Hard to execute functional tests between services Frustrating to deploy semi-manually (Capistrano) Scary to deploy other teams services
  • 54. SBT Motivation: Scala adaption Complex Scala syntax Cool features: ~test, shell, console Hard to debug
  • 55. 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')
  • 56. 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 }
  • 57. ION-CANNON + SBT Run functional/Selenium tests on dedicated Env Supports Canary releases Easy rollbacks Integrated health checks
  • 58.
  • 59. 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!
  • 60. PODIUM TIME We are hiring... Keep in touch: jgoldberg@gilt.com www.yonigoldberg.com