SlideShare a Scribd company logo
BUILDING A MODERN
MICROSERVICES
ARCHITECTURE @
QCON LONDON - 2015
YONI (JONATHAN) GOLDBERG
InfoQ.com: News & Community Site
• 750,000 unique visitors/month
• Published in 4 languages (English, Chinese, Japanese and Brazilian
Portuguese)
• Post content from our QCon conferences
• News 15-20 / week
• Articles 3-4 / week
• Presentations (videos) 12-15 / week
• Interviews 2-3 / week
• Books 1 / month
Watch the video with slide
synchronization on InfoQ.com!
http://www.infoq.com/presentations
/microservice-arch-gilt
Presented at QCon London
www.qconlondon.com
Purpose of QCon
- to empower software development by facilitating the spread of
knowledge and innovation
Strategy
- practitioner-driven conference designed for YOU: influencers of
change and innovation in your teams
- speakers and topics driving the evolution and innovation
- connecting and catalyzing the influencers and innovators
Highlights
- attended by more than 12,000 delegates since 2007
- held in 9 cities worldwide
- GiltDirect, Sale Personalization, Loyalty, SEO,
Post-purchase, Login/Registration
- MIT CS BS/Meng | Google | IBM | IDF
- Israel | Brooklyn | Coffee | JS/Node | Arduino | Running |
Kite Surfing | Poker
Building a Modern Microservices Architecture at Gilt: The Essentials
Building a Modern Microservices Architecture at Gilt: The Essentials
THREE TAKE AWAYS
FROM GILT'S STORY
Which problems will be solved?
Which challenges will you face?
Is it the right choice for you?
Flash Sales Business
Founded in 2007
Top 50 Internet-Retailer
~150 Engineers
WHAT IS GILT?
Building a Modern Microservices Architecture at Gilt: The Essentials
ANOTHER WAY TO LOOK AT
GILT
THE CLASSIC STARTUP
STORY
THE EARLY DAYS
2007 - Ruby on Rails
the hottest new thing
The goal was to get to market fast
Building a Modern Microservices Architecture at Gilt: The Essentials
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
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
Building a Modern Microservices Architecture at Gilt: The Essentials
WE SOLVED 90% OF OUR SCALING
PROBLEMS
BUT NOT THE DEVELOPERS PAIN
POINTS
SOLVED PAIN POINTS
Spike required to launch 1,000s of ruby processes
Postgres was overloaded
Routing traffic between ruby processes sucked
STILL OPEN PAIN POINTS
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
WE BEGAN THE TRANSITION TO
SCALA AND PLAY
LOSA - LOTS OF SMALL (WEB) APPS
[SAME AS MICRO-SERVICES BUT FOR WEB-APPS]
Building a Modern Microservices Architecture at Gilt: The Essentials
AS OF LAST WEEK WE HAVE AROUND
300 SERVICES IN PROD
WHY THE INCREASE?
APP BOOTSTRAP
rake bootstrap:admin-web # Bootstrap a admin-web service
rake bootstrap:client-server-core # Bootstrap a client-server-core service
rake bootstrap:play # Bootstrap a play service
rake bootstrap:play-ui-build # Bootstrap a play-ui-build service
rake bootstrap:sbt-library # Bootstrap a sbt-library service
rake bootstrap:schema # Bootstrap a schema service
DEMO
Building a Modern Microservices Architecture at Gilt: The Essentials
Building a Modern Microservices Architecture at Gilt: The Essentials
Building a Modern Microservices Architecture at Gilt: The Essentials
Building a Modern Microservices Architecture at Gilt: The Essentials
Building a Modern Microservices Architecture at Gilt: The Essentials
Building a Modern Microservices Architecture at Gilt: The Essentials
Building a Modern Microservices Architecture at Gilt: The Essentials
HOW TO DEFINE A
MICROSERVICE?
FUNCTIONALITY SCOPE
NUMBER OF DEVS INVOLVED
"A SERVICE-ORIENTED ARCHITECTURE
COMPOSED OF LOOSELY COUPLED
ELEMENTS THAT HAVE BOUNDED
CONTEXTS"
- ADRIAN COCKCROFT
CURRENT CHALLENGES
Deployments and Testing (Functional/Integration)
Dev/Integration Environments
Service Discoverability
Who owns this service!?
Monitoring
MICRO SERVICE
DEPLOYMENT V3
CHALLENGES THAT WERE
SOLVED IN V2:
Frustrating to deploy semi-manually (Capistrano)
Scary to deploy other teams services
Hard to execute functional tests between services
SBT
Motivation: Scala adoption
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')
ION-CANNON + SBT
Run tests on dedicated Env
Dark canary releases
Easy rollbacks
Integrated health checks
Building a Modern Microservices Architecture at Gilt: The Essentials
DATA CENTER
LIMITATIONS
&&
MORE TECHNOLOGY
OWNERSHIP
IMMUTABLE
INFRASTRUCTURE
V3
Per department AWS account and budget
Longer deploys [New instances / CNAME swaps]
Each team has AWS expertise
Building a Modern Microservices Architecture at Gilt: The Essentials
API LOVE
WELL DEFINED REST APIS SOLVE
DISCOVERABILITY, DOCUMENTATION
AND INNER ADOPTION
APIS @ GILT
and
Describe the API in simple json
Auto generates versioned docs, routes and clients
Per team - API design committee
www.apidoc.me Swagger.io
Building a Modern Microservices Architecture at Gilt: The Essentials
Building a Modern Microservices Architecture at Gilt: The Essentials
Building a Modern Microservices Architecture at Gilt: The Essentials
DEPENDENCY FUN [DEMO]
Building a Modern Microservices Architecture at Gilt: The Essentials
Building a Modern Microservices Architecture at Gilt: The Essentials
Building a Modern Microservices Architecture at Gilt: The Essentials
Building a Modern Microservices Architecture at Gilt: The Essentials
"MID-TIER MICRO-SERVICE"
BIGGEST PERFORMANCE CHALLENGE
NETWORK IO
Building a Modern Microservices Architecture at Gilt: The Essentials
ON DEV/INTEGRATION ENVIRONMENTS
The hardware is not strong enough
No one wants to compile 20 services
Service Dependencies
EACH TEAM HAS A STAGING
ENV
SERVICE_PORTS=[
4001, #listing-service
8235, #svc-user-set
9420, #svc-free-fall
7895, #svc-Loyalty
8155, #web-loyalty
9410, #web inventory status
7898, #admin-loyalty
7899, #notification
7102, #rouge
9530, #svc-component
6802, #svc-waitlist-submit
4066, #svc-action-sale
....
PORT_FORWARD_ARGS=SERVICE_PORTS.map { |port|
['-L', "#{port}:localhost:#{port}"]
STAGING DIFFICULTIES:
Hard to keep all the services up to date
Maxed our staging env capacities
Shared data across legacy apps
WITH OUR MIGRATION TO AWS
[TEAM RESPONSIBILITY]
A pool of integration instances and dbs
Develop with prod instances [Not a fan]
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
Building a Modern Microservices Architecture at Gilt: The Essentials
Building a Modern Microservices Architecture at Gilt: The Essentials
DATA OWNERSHIP
WE TRANSITIONED TO
MICRO-DBS
MICROSERVICES NEEDS THEIR OWN
MONGODB | POSTGRES | RDS |
VOLDEMORT
MANAGE MICRO-RELATIONAL
DBS
SCHEMA EVOLUTION
MANAGER
https://github.com/gilt/schema-evolution-manager
PRINCIPLES OF
SCHEMA EVOLUTION
MANAGER
Independent from the service code
Manages the schema evolutions in a Git repo
Schema changes are deployed as tar flies
No rollbacks
Schema changes are required to be incremental
ON MONITORING
Building a Modern Microservices Architecture at Gilt: The Essentials
THE TOOLS WE USE
GRAPHITE / OPENTSDB
Building a Modern Microservices Architecture at Gilt: The Essentials
Building a Modern Microservices Architecture at Gilt: The Essentials
Building a Modern Microservices Architecture at Gilt: The Essentials
Building a Modern Microservices Architecture at Gilt: The Essentials
Building a Modern Microservices Architecture at Gilt: The Essentials
BUT IT WASN'T ENOUGH
CAVE
HTTP://CAVELLC.GITHUB.IO
CONTINUOUS | AUDIT | VAULT |
ENTERPRISE
ALERT EXAMPLES [SCALA]
orders [shipTo: US].sum.5m < 1000
response-time [svc: svc-team, env: prod].p999 > 1000
Building a Modern Microservices Architecture at Gilt: The Essentials
SUMMARY
Building a Modern Microservices Architecture at Gilt: The Essentials
WHAT'S NEXT ?
BUILD YOUR NEXT FEATURE
IN A NEW SERVICE
@yoni_goldberg
jgoldberg@gilt.com
QUESTION TIME
www.yonigoldberg.com
Watch the video with slide
synchronization on InfoQ.com!
http://www.infoq.com/presentations/
microservice-arch-gilt

More Related Content

What's hot (14)

PPTX
AWS ELB Tips & Best Practices
ChinaNetCloud
 
PDF
56k.cloud training
Brian Christner
 
PDF
Serverless
Young Yang
 
PPTX
Tokyo azure meetup #12 service fabric internals
Tokyo Azure Meetup
 
PDF
JCConf.tw 2020 - Building cloud-native applications with Quarkus
Rich Lee
 
PPTX
Micro Service Architecture
Eduards Sizovs
 
PDF
Spring Cloud Netflix OSS
Steve Hall
 
PPTX
Container Management with Amazon ECS
AWS Germany
 
PPTX
Serverless Architecture
Saul Caganoff
 
PPTX
ARC201 Microservices Architecture @ AWS re:Invent 2015
Mitoc Group
 
PPTX
Microservices at Netflix
Katharina Probst
 
PPTX
Serverless Patterns
Cliff Chao-kuan Lu
 
PDF
How to Build a Big Data Application: Serverless Edition
ecobold
 
PDF
Brendon Foxen (Channel 4) - Speeding up Software Delivery at Channel 4
Outlyer
 
AWS ELB Tips & Best Practices
ChinaNetCloud
 
56k.cloud training
Brian Christner
 
Serverless
Young Yang
 
Tokyo azure meetup #12 service fabric internals
Tokyo Azure Meetup
 
JCConf.tw 2020 - Building cloud-native applications with Quarkus
Rich Lee
 
Micro Service Architecture
Eduards Sizovs
 
Spring Cloud Netflix OSS
Steve Hall
 
Container Management with Amazon ECS
AWS Germany
 
Serverless Architecture
Saul Caganoff
 
ARC201 Microservices Architecture @ AWS re:Invent 2015
Mitoc Group
 
Microservices at Netflix
Katharina Probst
 
Serverless Patterns
Cliff Chao-kuan Lu
 
How to Build a Big Data Application: Serverless Edition
ecobold
 
Brendon Foxen (Channel 4) - Speeding up Software Delivery at Channel 4
Outlyer
 

Viewers also liked (14)

PDF
From a Monolithic to a Distributed API Architecture
 at Eventbrite - Presente...
Renaud Visage
 
PPTX
Zero to Continuous Delivery on Google Cloud
James Heggs
 
PDF
Scaling Gilt: from Monolithic Ruby Application to Distributed Scala Micro-Ser...
C4Media
 
PDF
Voxxed Days Thessaloniki 2016 - Continuous Delivery: Jenkins, Docker and Spri...
Voxxed Days Thessaloniki
 
PDF
Continuous Delivery - Voxxed Days Bucharest 2017
Rafał Leszko
 
PDF
Microservices deployment patterns
Abhishek Tiwari
 
PPTX
Deployment Automation with Microservices
Ganesh Ghag
 
PPTX
Data stream processing and micro service architecture
Vyacheslav Benedichuk
 
PDF
Java Microservices with Netflix OSS & Spring
Conor Svensson
 
PDF
The seven more deadly sins of microservices final
Haufe-Lexware GmbH & Co KG
 
PDF
Developing and deploying applications with Spring Boot and Docker (@oakjug)
Chris Richardson
 
PDF
Microservice With Spring Boot and Spring Cloud
Eberhard Wolff
 
PDF
Edge architecture ieee international conference on cloud engineering
Mikey Cohen - Hiring Amazing Engineers
 
PPTX
Zuul @ Netflix SpringOne Platform
Mikey Cohen - Hiring Amazing Engineers
 
From a Monolithic to a Distributed API Architecture
 at Eventbrite - Presente...
Renaud Visage
 
Zero to Continuous Delivery on Google Cloud
James Heggs
 
Scaling Gilt: from Monolithic Ruby Application to Distributed Scala Micro-Ser...
C4Media
 
Voxxed Days Thessaloniki 2016 - Continuous Delivery: Jenkins, Docker and Spri...
Voxxed Days Thessaloniki
 
Continuous Delivery - Voxxed Days Bucharest 2017
Rafał Leszko
 
Microservices deployment patterns
Abhishek Tiwari
 
Deployment Automation with Microservices
Ganesh Ghag
 
Data stream processing and micro service architecture
Vyacheslav Benedichuk
 
Java Microservices with Netflix OSS & Spring
Conor Svensson
 
The seven more deadly sins of microservices final
Haufe-Lexware GmbH & Co KG
 
Developing and deploying applications with Spring Boot and Docker (@oakjug)
Chris Richardson
 
Microservice With Spring Boot and Spring Cloud
Eberhard Wolff
 
Edge architecture ieee international conference on cloud engineering
Mikey Cohen - Hiring Amazing Engineers
 
Zuul @ Netflix SpringOne Platform
Mikey Cohen - Hiring Amazing Engineers
 
Ad

Similar to Building a Modern Microservices Architecture at Gilt: The Essentials (20)

PDF
Gilt from monolith ruby app to microservice scala service architecture
Jonathan (Yoni) Goldberg
 
PPTX
Understanding Microservices
vguhesan
 
PDF
Keynote-Service Orientation – Why is it good for your business
WSO2
 
PDF
From Monoliths to Microservices at Realestate.com.au
evanbottcher
 
PPTX
Application design for the cloud using AWS
Jonathan Holloway
 
PDF
Microservices: State of the Union
C4Media
 
PPTX
Service Architectures At Scale - QCon London 2015
Randy Shoup
 
PDF
Microservices for Java Developers
Omar AbdullWahhab
 
PPTX
Service Architectures at Scale
Randy Shoup
 
PDF
Microservices for-java-developers
Sandeep Rangdal
 
PDF
Microservices Architecture
Srinivasan Nanduri
 
PPTX
The "Why", "What" and "How" of Microservices
INPAY
 
PDF
Evolving your Architecture to MicroServices
Hector Tapia
 
PDF
Building Microservices Software practics
muhammed84essa
 
PDF
2016_04_04_CNI_Spring_Meeting_Microservices
Jason Varghese
 
PPTX
Microservices architecture
Faren faren
 
KEY
Simple Services
twoerth
 
PDF
Microservices for java architects it-symposium-2015-09-15
Derek Ashmore
 
PDF
Microservice architecture
Žilvinas Kuusas
 
PDF
Cloudify your applications: microservices and beyond
Ugo Landini
 
Gilt from monolith ruby app to microservice scala service architecture
Jonathan (Yoni) Goldberg
 
Understanding Microservices
vguhesan
 
Keynote-Service Orientation – Why is it good for your business
WSO2
 
From Monoliths to Microservices at Realestate.com.au
evanbottcher
 
Application design for the cloud using AWS
Jonathan Holloway
 
Microservices: State of the Union
C4Media
 
Service Architectures At Scale - QCon London 2015
Randy Shoup
 
Microservices for Java Developers
Omar AbdullWahhab
 
Service Architectures at Scale
Randy Shoup
 
Microservices for-java-developers
Sandeep Rangdal
 
Microservices Architecture
Srinivasan Nanduri
 
The "Why", "What" and "How" of Microservices
INPAY
 
Evolving your Architecture to MicroServices
Hector Tapia
 
Building Microservices Software practics
muhammed84essa
 
2016_04_04_CNI_Spring_Meeting_Microservices
Jason Varghese
 
Microservices architecture
Faren faren
 
Simple Services
twoerth
 
Microservices for java architects it-symposium-2015-09-15
Derek Ashmore
 
Microservice architecture
Žilvinas Kuusas
 
Cloudify your applications: microservices and beyond
Ugo Landini
 
Ad

More from C4Media (20)

PDF
Streaming a Million Likes/Second: Real-Time Interactions on Live Video
C4Media
 
PDF
Next Generation Client APIs in Envoy Mobile
C4Media
 
PDF
Software Teams and Teamwork Trends Report Q1 2020
C4Media
 
PDF
Understand the Trade-offs Using Compilers for Java Applications
C4Media
 
PDF
Kafka Needs No Keeper
C4Media
 
PDF
High Performing Teams Act Like Owners
C4Media
 
PDF
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
C4Media
 
PDF
Service Meshes- The Ultimate Guide
C4Media
 
PDF
Shifting Left with Cloud Native CI/CD
C4Media
 
PDF
CI/CD for Machine Learning
C4Media
 
PDF
Fault Tolerance at Speed
C4Media
 
PDF
Architectures That Scale Deep - Regaining Control in Deep Systems
C4Media
 
PDF
ML in the Browser: Interactive Experiences with Tensorflow.js
C4Media
 
PDF
Build Your Own WebAssembly Compiler
C4Media
 
PDF
User & Device Identity for Microservices @ Netflix Scale
C4Media
 
PDF
Scaling Patterns for Netflix's Edge
C4Media
 
PDF
Make Your Electron App Feel at Home Everywhere
C4Media
 
PDF
The Talk You've Been Await-ing For
C4Media
 
PDF
Future of Data Engineering
C4Media
 
PDF
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
C4Media
 
Streaming a Million Likes/Second: Real-Time Interactions on Live Video
C4Media
 
Next Generation Client APIs in Envoy Mobile
C4Media
 
Software Teams and Teamwork Trends Report Q1 2020
C4Media
 
Understand the Trade-offs Using Compilers for Java Applications
C4Media
 
Kafka Needs No Keeper
C4Media
 
High Performing Teams Act Like Owners
C4Media
 
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
C4Media
 
Service Meshes- The Ultimate Guide
C4Media
 
Shifting Left with Cloud Native CI/CD
C4Media
 
CI/CD for Machine Learning
C4Media
 
Fault Tolerance at Speed
C4Media
 
Architectures That Scale Deep - Regaining Control in Deep Systems
C4Media
 
ML in the Browser: Interactive Experiences with Tensorflow.js
C4Media
 
Build Your Own WebAssembly Compiler
C4Media
 
User & Device Identity for Microservices @ Netflix Scale
C4Media
 
Scaling Patterns for Netflix's Edge
C4Media
 
Make Your Electron App Feel at Home Everywhere
C4Media
 
The Talk You've Been Await-ing For
C4Media
 
Future of Data Engineering
C4Media
 
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
C4Media
 

Recently uploaded (20)

PDF
Complete JavaScript Notes: From Basics to Advanced Concepts.pdf
haydendavispro
 
PDF
July Patch Tuesday
Ivanti
 
PDF
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
PDF
From Code to Challenge: Crafting Skill-Based Games That Engage and Reward
aiyshauae
 
PDF
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
PDF
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PDF
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
PDF
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
PPTX
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
PDF
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PDF
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
PDF
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
PDF
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PDF
Log-Based Anomaly Detection: Enhancing System Reliability with Machine Learning
Mohammed BEKKOUCHE
 
Complete JavaScript Notes: From Basics to Advanced Concepts.pdf
haydendavispro
 
July Patch Tuesday
Ivanti
 
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
From Code to Challenge: Crafting Skill-Based Games That Engage and Reward
aiyshauae
 
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
Log-Based Anomaly Detection: Enhancing System Reliability with Machine Learning
Mohammed BEKKOUCHE
 

Building a Modern Microservices Architecture at Gilt: The Essentials