Yoni Goldberg presented on Gilt's transition to a microservices architecture. Some key points:
- Gilt started in 2007 using Ruby on Rails but faced scaling issues as traffic grew.
- They transitioned services to the JVM in 2009, starting with 10 initial services, which solved many problems but not developer pain points.
- Gilt fully embraced microservices around 2012, breaking the monolith into hundreds of small, independent services using Scala and Play.
- This empowered teams, enabled simpler deployments, and made the system more robust, but introduced new challenges around service discoverability, dependencies, and monitoring.
- Gilt developed many tools to help manage microservices at scale, such
2. 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
3. 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
4. - 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
5.
6.
7. THREE TAKE AWAYS
FROM GILT'S STORY
Which problems will be solved?
Which challenges will you face?
Is it the right choice for you?
16. TECHNOLOGY PAIN POINTS -
2009
Spike required to launch 1,000s of ruby processes
Postgres was overloaded
Routing traffic between ruby processes sucked
17. 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
23. WE SOLVED 90% OF OUR SCALING
PROBLEMS
BUT NOT THE DEVELOPERS PAIN
POINTS
24. SOLVED PAIN POINTS
Spike required to launch 1,000s of ruby processes
Postgres was overloaded
Routing traffic between ruby processes sucked
25. 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
26. WHY WE DOUBLED DOWN ON
MICRO-SERVICES
Empower teams and ownership
Smaller scope
Simpler and Easier deployments and rollbacks
27. WE BEGAN THE TRANSITION TO
SCALA AND PLAY
LOSA - LOTS OF SMALL (WEB) APPS
[SAME AS MICRO-SERVICES BUT FOR WEB-APPS]
28.
29. AS OF LAST WEEK WE HAVE AROUND
300 SERVICES IN PROD
31. 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
42. CURRENT CHALLENGES
Deployments and Testing (Functional/Integration)
Dev/Integration Environments
Service Discoverability
Who owns this service!?
Monitoring
44. 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
46. 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')
47. ION-CANNON + SBT
Run tests on dedicated Env
Dark canary releases
Easy rollbacks
Integrated health checks
54. WELL DEFINED REST APIS SOLVE
DISCOVERABILITY, DOCUMENTATION
AND INNER ADOPTION
55. 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
78. 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