Microservices Migration Case Studies and Lessons Learned
Microservices migration case study roundup: Netflix, Amazon, Uber, Samsung, Prime Video and more, with the patterns, outcomes and lessons for your migration.
On this page
- Overview
- 1. Netflix: The Canonical Case Study in Resilience
- Strategic Analysis & Breakdown
- Actionable Takeaways & Replicable Methods
- 2. Amazon: SOA Driven by Organizational Structure
- Strategic Analysis & Breakdown
- Actionable Takeaways & Replicable Methods
- 3. Uber: Global Scaling Through Domain-Driven Microservices
- Strategic Analysis & Breakdown
- Actionable Takeaways & Replicable Methods
- 4. Spotify: Autonomy-Focused Migration
- Strategic Analysis & Breakdown
- Actionable Takeaways & Replicable Methods
- 5. Walmart: Re-Platforming E-commerce Without Taking the Site Down
- Strategic Analysis & Breakdown
- Actionable Takeaways & Replicable Methods
- 6. Illustrative Scenario: The Strangler Fig Pattern in Retail E-commerce
- Strategic Analysis & Breakdown
- Actionable Takeaways & Replicable Methods
- 7. Samsung: Database Decomposition for 1.1 Billion Users
- Strategic Analysis & Breakdown
- Actionable Takeaways & Replicable Methods
- 8. Illustrative Scenario: Recovering from a Failed Identity Migration
- Strategic Analysis & Breakdown
- Actionable Takeaways & Replicable Methods
- 9. Prime Video: Partial Rollback to a Monolith for Cost Efficiency
- Strategic Analysis & Breakdown
- Actionable Takeaways & Replicable Methods
- 10. Pipedrive: Moving a Multi-Microservice Platform to AWS
- Strategic Analysis & Breakdown
- Actionable Takeaways & Replicable Methods
- What the Microservices Migration Case Studies Share
- The Unifying Themes Across Every Case Study
- Your Next Steps: From Case Study to Strategy
Migrating from a monolithic architecture to microservices is a high-stakes decision. Many initial migrations fail to meet their objectives, often due to poor planning, underestimated complexity, or a misunderstanding of the operational overhead involved. This article goes beyond generic success stories to analyze eight public microservices migration case studies and two illustrative scenarios.
We cover pioneers like Netflix and Amazon, and also the lessons from failures and rollbacks. Each case covers the business drivers, the architectural before-and-after, and the outcomes the companies have reported. We look at the specific patterns used (like Strangler Fig), the team structures that enabled success (like Spotify's squads), and the failure modes that emerged, along with the strategic trade-offs involved. Figures quoted are those the companies reported, with a source where we have one.
The goal is to give technical leaders (CTOs, VPs of Engineering, and engineering managers) an evidence-based framework for planning their own migration. The cases help you evaluate whether a microservices architecture fits your context and, if so, how to execute the transition while managing the substantial risks.
1. Netflix: The Canonical Case Study in Resilience
Facing downtime risks from a monolithic DVD rental system, Netflix incrementally migrated non-critical services first, starting in 2009. A 2008 database corruption event that halted business for three days was the catalyst. The goal was not cost savings but extreme availability for their pivot to streaming.
The migration wasn't a "big bang" rewrite but a gradual strangling of the monolith. This enabled fault isolation during outages and independent scaling, and it established chaos engineering practices (e.g., Chaos Monkey) that remain industry-standard for resilient distributed systems.
Strategic Analysis & Breakdown
- Problem: The core issue was not performance but availability. A single database failure brought the entire business down.
- Approach: Instead of a simple "lift and shift," they re-architected entirely for the cloud, treating AWS as a dynamic, fault-tolerant platform.
- Key Tactic - Chaos Engineering: To ensure resilience, Netflix invented "Chaos Monkey," a tool that randomly terminates production instances. This forced engineers to design services that could withstand failure from day one.
Actionable Takeaways & Replicable Methods
- Migrate Incrementally: Tackle low-risk, non-customer-facing services first. The full migration took Netflix nearly seven years.
- Embrace "You Build It, You Run It": Netflix decentralized ownership, making development teams responsible for the entire lifecycle of their services, from coding to deployment and operations.
- Invest in Tooling: A successful microservices architecture relies on an ecosystem of supporting tools. Netflix built its own platform-as-a-service (PaaS) and open-sourced components like Hystrix (fault tolerance) and Eureka (service discovery).
Netflix's nearly seven-year migration that started with non-customer-facing services after the three-day database outage described above; learn from Netflix's approach to microservices for how that sequencing worked in practice.
2. Amazon: SOA Driven by Organizational Structure
As e-commerce exploded, Amazon's monolith hindered velocity. In 2002, Jeff Bezos reportedly issued a mandate forcing teams to refactor into loosely coupled services with strict APIs. This led to the "two-pizza" team model, where small, autonomous units owned their services end-to-end.
The outcome was a service-oriented architecture (SOA) in which ownership of each service was clear and teams could change their services without coordinating with every other team. That internal architecture is often credited as a foundation for what became Amazon Web Services (AWS). This microservices migration case study is unique because it was driven by organizational design, not just technology.

Strategic Analysis & Breakdown
- Problem: The primary issue was coordination overhead. A tightly coupled monolithic codebase meant that even small changes required complex coordination between large teams, slowing innovation to a crawl.
- Approach: Instead of just refactoring code, Amazon refactored its organization. The "two-pizza team" model enforced strict ownership and decentralization.
- Key Tactic - The Bezos Mandate: The top-down directive was unambiguous: all teams will communicate via service interfaces, without exception. This eliminated back-channels and direct database access between services, enforcing true architectural separation.
Actionable Takeaways & Replicable Methods
- Align Architecture with Org Structure: Conway's Law states that systems mirror the communication structures of the organizations that build them. Amazon deliberately inverted this: they structured their organization to achieve the architecture they desired.
- Establish Clear Ownership Boundaries: The "You Build It, You Run It" mantra was central to Amazon's success. Each two-pizza team was fully responsible for its service's lifecycle.
- Mandate and Enforce API Contracts: The success of a distributed system hinges on well-defined, stable APIs. Amazon’s strict mandate ensured that services were designed for consumption from the outset.
3. Uber: Global Scaling Through Domain-Driven Microservices
Rapid growth strained Uber's monolithic backend. To handle global scale, Uber decomposed its architecture by business domains (e.g., rides, payments), adopting SOA principles for independent scaling across regions. This was a strategic necessity to manage a real-time marketplace at global scale.
The migration reduced deployment risk and enabled easier tech stack evolution per service. However, early over-decomposition into services that were too fine-grained created operational complexity and taught the value of starting with coarse-grained domains.
Strategic Analysis & Breakdown
- Problem: The primary issue was a scaling bottleneck. A single codebase managed all global operations, so every change shipped and failed together.
- Approach: Uber adopted a Domain-Driven Design (DDD) approach, breaking the monolith apart along business capability lines. This allowed them to build specialized services optimized for specific tasks, using different technologies (Go for high-performance services, Python for data science) where appropriate.
- Key Tactic - Building a Paved Road: Recognizing the complexity of managing thousands of services, Uber invested heavily in creating a standardized platform-as-a-service (PaaS) to provide developers with common libraries for logging, monitoring, and deployment.
Actionable Takeaways & Replicable Methods
- Decompose by Business Domain: Start with coarse-grained services that map directly to business functions (e.g., Invoicing, User Profiles). Avoid creating services that are too small too early.
- Invest in a Platform Team Early: A dedicated platform team that provides standardized tooling for observability, deployment, and communication is a prerequisite for scaling successfully.
- Standardize Communication Protocols: Uber standardized on technologies like Apache Thrift for RPC and later gRPC. Having a clear, consistent protocol for service-to-service communication is essential to prevent integration chaos.
4. Spotify: Autonomy-Focused Migration
Spotify is cited less for a single monolith breakup than for the organizational model it described around 2012: features owned by cross-functional "squads," each releasing independently, with services communicating via events and APIs. The model is a snapshot of how Spotify organized at the time, not a framework Spotify prescribes.
The approach aimed at faster feature rollout, better fault isolation between components, and a culture where teams own end-to-end responsibility. The point for migrations is the coupling between architecture and org design: autonomous teams need services they can deploy on their own.

Strategic Analysis & Breakdown
- Problem: The primary bottleneck was not technology but coordination. As an engineering organization grows, shared code and shared release processes create dependencies that slow down feature development.
- Approach: Spotify organized its architecture around autonomous squads. The architecture was designed to serve the teams, not the other way around.
- Key Tactic - The "Squad" Model: Spotify's architecture is a direct reflection of its culture. Squads own features, "Tribes" are collections of squads in related areas, and "Chapters" group specialists (e.g., backend engineers) across squads.
Actionable Takeaways & Replicable Methods
- Align Architecture with Team Structure: Before you decompose a monolith, map out your desired team structure. This is a core principle explored in how Domain-Driven Design can guide legacy system modernization.
- Invest in a Strong Platform Team: Empowering squads requires giving them a "paved road." Spotify has described investing in platform and infrastructure teams that provide shared tooling and deployment pipelines.
- Establish Clear Service Contracts: With hundreds of services, clear and stable APIs (REST, gRPC) and event-driven patterns are necessary to avoid a "distributed monolith" anti-pattern.
5. Walmart: Re-Platforming E-commerce Without Taking the Site Down
Walmart.com ran on a legacy e-commerce application on largely bare-metal, scale-up infrastructure that its technologists said would not scale to the company's needs. Walmart Labs decided to split its applications into resource services and orchestration services (a service-oriented architecture) and to put OpenStack infrastructure underneath. In August 2014 Walmart moved its e-commerce operation onto OpenStack.
Amandeep Singh Juneja of Walmart Labs told InfoWorld in 2015 the team did this "while the site was running" and that the site stayed up through the holidays. This microservices migration case study shows how a legacy retailer can re-architect its platform while the business keeps trading.
Strategic Analysis & Breakdown
- Problem: The existing application infrastructure was not going to scale to the demands Walmart expected, and scale-up hardware made peak seasons risky.
- Approach: Walmart split its applications into services and moved the infrastructure layer to an elastic, API-driven cloud, doing both while the site stayed live.
- Key Tactic - Change the foundation and the architecture together: Service decomposition only pays off if the infrastructure underneath can provision and scale services on demand.
Actionable Takeaways & Replicable Methods
- Align Services to Business Functions: Don't just break up code; model your services around tangible business functions (e.g., cart, checkout, user profile).
- Match Infrastructure to the Architecture: Services need elastic infrastructure and automation underneath them, or they inherit the old scaling limits.
- Migrate While the Business Runs: Plan for a live cutover with rollback paths. A holiday peak is the worst time to discover the migration doesn't work.
6. Illustrative Scenario: The Strangler Fig Pattern in Retail E-commerce
This is an illustrative scenario, not a report on a named company. A retailer's monolithic e-commerce site risks major disruptions during every update, a significant liability for a customer-facing platform. The team incrementally replaces components with microservices hidden behind a facade, validating performance and functionality in production before switching over traffic.
Used this way, the Strangler Fig pattern allows transitions without a planned outage, lets promotional capacity be scaled per component, and makes it easier to add new features such as mobile checkout. The scenario shows why the strangler pattern is a common risk-reducing strategy for migrating critical, customer-facing systems: traffic switches over only after each component is validated in production.
Strategic Analysis & Breakdown
- Problem: The primary risk is business disruption. A "big bang" migration of the core e-commerce platform is too dangerous. The team needs a method that allowed for safe, incremental modernization without downtime.
- Approach: The team adopts the Strangler Fig pattern in its purest form. A proxy layer (the facade) was placed in front of the monolith. New microservices were built to replace specific functionalities, and the proxy was configured to route requests for those functions to the new service while everything else continued to go to the monolith.
- Key Tactic - Parallel Runs and Validation: Before switching traffic, the team runs the new microservice in parallel with the old monolithic function, comparing outputs and performance to ensure parity. This validation step builds confidence and catches bugs before they impact customers.
Actionable Takeaways & Replicable Methods
- Identify Clear Seams: The Strangler Fig pattern works best when you can identify discrete, well-defined functionalities within the monolith to "strangle" first. Start with a feature that has minimal dependencies.
- Use a Proxy Facade: An API gateway or a simple reverse proxy is essential for routing traffic between the old and new systems. This layer provides the control needed to manage the gradual migration.
- Validate in Production: Don't just rely on staging tests. Use techniques like traffic shadowing or parallel runs to validate that your new service behaves correctly under real production load before making the final cutover. To see how this works in practice, you can learn more about the Strangler Fig pattern.
7. Samsung: Database Decomposition for 1.1 Billion Users
A centralized Oracle database limited Samsung's ability to adopt microservices at scale for the Samsung Account service, which has 1.1 billion registered users (roughly 400 million active) and handles about 80,000 requests per second. The tight coupling at the database layer was a major bottleneck. According to an AWS case study, Samsung broke its databases into sections suited to microservices and migrated them to Amazon Aurora with PostgreSQL compatibility, region by region, from 2018 to 2020.
Samsung reported 44% lower monthly operational costs on Aurora PostgreSQL than on Oracle, plus savings on license and maintenance fees, and room to scale read capacity with replicas in each region. The move away from Oracle also reduced licensing constraints.
Strategic Analysis & Breakdown
- Problem: Data coupling. Even with application logic in separate services, a shared monolithic database created a single point of failure and a performance bottleneck, preventing true service independence.
- Approach: They adopted a database-per-service pattern. Each microservice became the sole owner of its own data schema and storage. Communication between services was forced through APIs, never direct database calls.
- Key Tactic - Phased Data Migration: They didn't migrate all users' data at once. They migrated region by region (EU, China, US), using AWS Database Migration Service to replicate data while the Oracle source stayed live, then routing user traffic to the new databases in stages.
Actionable Takeaways & Replicable Methods
- Break the Shared Database: This is often the hardest but most critical step. Each microservice must own its data. Any form of shared database schema between services is a distributed monolith anti-pattern.
- Use APIs for Data Access: If one service needs data from another, it must go through a well-defined API. Direct database access between services is forbidden.
- Plan for Data Synchronization: During the transition, you will need a strategy for keeping data in the old and new databases in sync until the migration for a given domain is complete.
8. Illustrative Scenario: Recovering from a Failed Identity Migration
This scenario shows what not to do, and it follows the situation described in the abstract of Sonya Natanzon's QCon San Francisco 2025 talk: a team migrates a healthcare portal from a monolith to microservices. The foundational first step, moving to a commercial identity provider, takes nine months and then brings the portal down on release day. Users are locked out and trust is shattered. The details below are our illustration of how such a recovery typically goes, not a report on a named company.
Recovery involves running the old and new systems in parallel, building collaboration between Dev and Ops, and adopting phased rollouts with feature flags. The scenario shows that perception management and team dynamics matter as much as technical fixes.
Strategic Analysis & Breakdown
- Problem: A "big bang" cutover of a critical system like identity management, with too little testing and no workable rollback path.
- Approach to Recovery: Roll back first. The recovery plan focuses on de-risking the next attempt through technical safeguards (parallel runs, canary releases) and process changes (better cross-team communication, stakeholder updates).
- Key Tactic - Rebuilding Trust: The engineering leader takes ownership of the failure, publishes transparent post-mortems, and over-communicates the recovery plan to business stakeholders. That is how the team regains the political capital needed for a second attempt.
Actionable Takeaways & Replicable Methods
- Never Migrate Identity First: Identity and access management is one of the most complex and critical parts of any system. It is a poor candidate for a first microservice.
- Always Have a Rollback Plan: Assume the deployment will fail. Your rollback plan should be tested and automated as much as possible.
- Manage Stakeholder Expectations: A microservices migration is a high-risk project. Be transparent about the risks and have a communication plan ready for when things go wrong.
9. Prime Video: Partial Rollback to a Monolith for Cost Efficiency
In a widely discussed 2023 move, Prime Video's video quality analysis team consolidated several distributed microservices of its audio/video monitoring service into a single, modular monolithic application. The microservices-based solution, which used AWS Step Functions and Lambda, incurred high overhead for their specific workload, leading to excessive infrastructure costs.
Prime Video's engineers reported that the consolidation reduced infrastructure costs for that service by over 90% while retaining the scalability needed. This case demonstrates that microservices are not a universal solution and that periodic re-evaluation is necessary. It prevents the "distributed monolith" anti-pattern where services are separate but so tightly coupled that they offer no real benefits, only operational overhead.
Strategic Analysis & Breakdown
- Problem: High operational cost. The "chattiness" between their distributed components and the overhead of the serverless orchestration layer were not a good fit for their high-throughput monitoring workload, resulting in a cost structure that did not scale efficiently.
- Approach: They identified the specific components causing the cost issue and refactored them back into a single, well-structured service. This was not a rejection of microservices entirely, but a pragmatic decision for a specific use case.
- Key Tactic - Cost Analysis: The team performed a detailed cost analysis that directly attributed infrastructure spend to specific architectural choices. This data-driven approach allowed them to make a compelling case for the rollback.
Actionable Takeaways & Replicable Methods
- Microservices are Not Always the Answer: For some workloads, particularly those that are not complex and require high data throughput between components, a well-structured monolith can be more efficient.
- Continuously Evaluate Your Architecture: Architectural decisions are not permanent. Regularly review performance, operational complexity, and cost to ensure your architecture still serves the business needs.
- Cost is a Key Architectural Driver: Don't treat cost as an afterthought. It should be a primary consideration when designing and evaluating a distributed system.
10. Pipedrive: Moving a Multi-Microservice Platform to AWS
Pipedrive, a CRM vendor, ran its workloads in a private cloud, where provisioning new capacity took about six months. According to an AWS case study, it moved internal workloads to AWS in 2018 and then, after a year of planning starting in 2022, migrated customer-data workloads incrementally, finishing in three six-week stages. Pipedrive now hosts more than 500 microservices on AWS.
Pipedrive reported a 25% reduction in response time and up to 20% lower hosting cost per customer. This is a platform move rather than a decomposition of a monolith, but it shows what moving a large microservices estate involves.
Strategic Analysis & Breakdown
- Problem: Slow, costly capacity. The private cloud's long provisioning lead time forced overprovisioning and limited developer agility and regional expansion.
- Approach: Prove it first, then move incrementally. Pipedrive built a proof of concept, moved internal and test workloads first, and only then migrated customer data.
- Key Tactic - Own the Migration Tooling: Because its architecture is distributed across many microservices, Pipedrive developed and tested its own data-migration framework, then migrated more than 100,000 customer-data workloads one by one during customers' off-hours.
Actionable Takeaways & Replicable Methods
- Beware the Distributed Monolith: Simply having many small services doesn't mean you have a microservices architecture. If they are tightly coupled and cannot be deployed independently, you have the downsides of both architectures, and migrating them is harder.
- Prove It Before You Move Production: A proof of concept and a low-risk first wave tell you the real timeline, effort, and changes required.
- Migrate in Small Units: Moving one workload at a time, at low-traffic hours, limits the blast radius and lets you scale the migration up as it proves safe.
What the Microservices Migration Case Studies Share
The path from a monolithic architecture to microservices is a series of strategic trade-offs, as every microservices migration case study above shows. From Netflix’s shift to handle massive streaming demands to Amazon’s "two-pizza team" model, a pattern emerges: success comes from solving specific, high-stakes business problems such as system downtime, stunted growth, and the inability to out-innovate competitors, not from adopting microservices for their own sake.
The Unifying Themes Across Every Case Study
Across the cases, from Spotify and Uber to the cautionary tale of Prime Video's partial rollback, four principles recur.
- Business Drivers First, Technology Second: The most successful migrations began with a clear "why." Walmart's infrastructure was not going to scale to the demand it expected. Spotify needed to accelerate feature delivery to compete. Microservices were the tool that fit a pressing business constraint, not an end in themselves.
- Incrementalism Reduces Risk: "Big bang" migrations are the riskiest option. Netflix’s multi-year, non-critical-service-first approach, Samsung’s region-by-region database migration, and Pipedrive’s workload-by-workload move demonstrate the power of gradual, controlled transitions. Each kept the rest of the estate running while only one seam, region, or customer workload moved at a time.
- Organizational Structure is Architecture: Amazon and Spotify are prime examples of Conway's Law in action. Their shift to autonomous, domain-oriented teams ("squads" or "two-pizza teams") was not a byproduct of their architectural change; it was a prerequisite. A monolithic team structure cannot effectively build or maintain a distributed system. The architecture must mirror the desired organizational autonomy and communication patterns.
- Data Decomposition is the Hardest Part: While refactoring application logic is complex, decoupling the monolithic database is often the central challenge. Samsung’s deliberate migration to a distributed database model highlights this critical step. Without a clear data ownership strategy per service, you risk creating a "distributed monolith," where services are technically separate but remain shackled by a shared, single-point-of-failure database.
A microservices migration is fundamentally a de-risking operation. You are trading the known, concentrated risk of a monolith for the distributed, manageable risks of independent services. The goal is not to eliminate risk but to isolate its blast radius.
Your Next Steps: From Case Study to Strategy
Before writing any new code, engineering leaders should answer three questions:
- What is our single biggest architectural bottleneck? Is it deployment velocity, team contention, scaling limitations, or something else? Be specific and measure the pain. This defines your primary objective.
- Which domain is the safest and most valuable to decouple first? Identify a "seam" in your monolith that is relatively isolated and whose migration would provide a meaningful, measurable win. This will be your pilot project.
- Is our team culturally and technically ready? Do we have the skills in API design, containerization, and distributed monitoring? More importantly, are we prepared to shift to a culture of decentralized ownership and accountability?
The journey from monolith to microservices is not guaranteed, nor is it universally the right path, as Prime Video’s experience shows. Answer the three questions above with measured pain, a pilot seam, and readiness for decentralized ownership before you commit; Prime Video's monitoring workload shows that a modular monolith can still be the better fit when microservices add excess overhead and cost.
Software Modernization Intelligence publishes research and vendor shortlists to help you de-risk vendor selection and migration strategy. Build your migration plan on proven outcomes at Software Modernization Intelligence.
Chief Analyst, Software Modernization Intelligence · 10+ years B2B market research
Published: