MercadoLibre was suffering from slow release cycles and lack of flexibility due to its monolithic architecture. It split the company into independent "cells" where small teams owned their own processes, infrastructure, and code. This empowered teams and shifted power from architects to cell owners. It also generated peer pressure for quality and service level agreements between cells. The changes led to much faster release cycles, from every two weeks to every three seconds, and attracted new talent by empowering developers.
2. Agenda
Who we are
The situation
The Change Process
Some Results
3. Who we are
MercadoLibre (NASDAQ: MELI) is the #1 e-commerce platform in Latin America, #8 in the world
4. Agenda
Who we are
The situation
The Change Process
Some Results
5. Situation in 2010
We were suffering the “Snowball Effect caused by Monolithic Architectures”
More processes
Larger monolith
Graphic adapted from Peter Fuda & The Alignment Company
Larger monolith
More processes
6. Monoliths cause a Passive/Defensive Culture
Compliance becomes more important than achievements.
Source: Human Synergistics
Approval
More concerned about co-workers than users
Conventional
Restrictions imposed by rules and processes
Dependent
Lack of information, empowerment and flexibility
Evasive
Tendency to blame others (usually authors of processes)
7. From a Passive to a Constructive Style
Where achievement is more important than compliance
Source: Human Synergistics
Achievement
Set challenging goals, take risks to meet them
Self-Realization
Satisfaction is solving the problem, not complying with a process
Humanistic
Always challenging others to push the envelope
8. Achievement <- Empowerment <- Flexibility
We gave up some control in order to achieve empowerment
Monolithic
(Passive Culture)
Decoupled
(Constructive Culture)
9. Agenda
Who we are
The situation
The Change Process
Some results
10. Split our company into independent “cells”
Small teams require few processes. Power was shifted from “architects” to “cell owners”.
Each “cell” works
as if it were a separate company:
own processes,
own data, own technology
12. Tools: Cells operate their own infrastructure
Cells are responsible for stability and scalability of their products.
(Self Provisioning)
(Monitoring)
(Automatic Alarms)
15. Generate Peer Pressure
As soon as an API is created, internal clients demand quality and service
New API
Original Client
New Clients demand
Quality and Usability
17. Pretty Print on a Regular Browser
Using actual REST URLs, API must be learnable for Developers and Product Managers
For machines
(minimum bandwith)
For humans
(minimum learning effort)
18. URL Consistency – Only One API
Creating many APIs is a way of asking external users to solve internal technical problems
Balancing Logic
(Collectively Maintained)
Base Resources
Cells handle
only CRUD Ops
Complex queries
are handled by
different cells
Push Notifications
Consistent URLs
enable Learnability
19. An API is, first and foremost, an interface for humans
21. Eliminated the QA Group
Now developers test their code. Another way of generating empowerment.
Project1
Project 2
Project 3
Developers QA Engineers
Cell1
Cell 2
Cell 3
22. Eliminated the Product Management Group
PD Heads also became PMs. Projects may be initiated either within BUs or PD.
Product
Management
Product
Development
Detailed Spec
Sponsor
High Level Goal
Before After
24. Staff Groups provide expertise to cells
Degree of involvement depends on the nature of each cell.
User Experience
Business Assurance
PM Teams inside BUs
“Staff” groups provide services
26. Agenda
Who we are
The situation
The Change Process
Some results
27. Some Results
Image: iPROFS Technology Blog
Before After
1 release every 2 weeks 1 release every 3 secs
1 location 7 locations
270 physical servers 11,000 OpenStack Instances
3 Developers / QA 22 Developers / “B”A
Closed Platform Thousands of External Developers
28. Agenda
Who we are
The situation
The Change Process
Some results
Wrapping up...
29. Wrapping up...
Monoliths cause a Passive/Defensive Culture
Split our company into many independent “cells”
Cells operate and monitor their own infrastructure
Generate Peer Pressure to compensate the lack of control
Strict rules for API Usability, many tools to achieve it
Eliminated QA group, developers test their code
Eliminated the Product Management Group, reinforcing ownership