Your Developer Wants Microservices. Here's Why That's Probably Wrong.
The microservices sales pitch sounds great but often destroys productivity for growing businesses. Learn when monoliths are actually the right answer, what problems microservices solve (and create), and how to evaluate the pitch from your technical team.
Your lead developer comes to you excited: "We should rebuild our application as microservices. It'll be more scalable, more flexible, and align with modern best practices."
It sounds great. Scalability, flexibility, modern architecture—who wouldn't want that?
Here's what they're not telling you (often because they don't realize it themselves):
Microservices will probably:
- Double your infrastructure costs
- Slow down feature development by 40-60%
- Require 2-3x the developer time for the same features
- Introduce new categories of failures you don't currently have
- Need different skillsets your team might not have
And for most businesses under 100 employees: You'll get minimal benefit while paying all those costs.
Let me explain what microservices actually are, when they make sense, and how to evaluate whether your developer's enthusiasm is justified or just resume-building.
What Are Microservices, Really?
Monolithic architecture: Your entire application is one codebase, deployed as one unit. User interface, business logic, database access—all together.
Microservices architecture: Your application is split into many small services, each handling one specific function, deployed independently.
The Monolith
Your Application (one deployment)
├── User Management
├── Order Processing
├── Inventory
├── Payments
├── Reporting
└── API Layer
Characteristics:
- All code in one repository
- One deployment
- One database (usually)
- Shared memory and state
- Direct function calls between components
Example: Traditional web application. When you deploy, you deploy the whole thing.
The Microservices Approach
Service 1: User Service (separate deployment)
Service 2: Order Service (separate deployment)
Service 3: Inventory Service (separate deployment)
Service 4: Payment Service (separate deployment)
Service 5: Reporting Service (separate deployment)
Service 6: API Gateway (separate deployment)
Characteristics:
- Each service has its own codebase (often separate repository)
- Each service deploys independently
- Each service has its own database
- Services communicate over network (HTTP, message queues)
- No shared memory
Example: Each function is a separate application that talks to the others over the network.
The Microservices Sales Pitch
Your developer will tell you about the benefits:
Benefit 1: "Independent Deployment"
The pitch: "We can deploy changes to one service without touching the others. Faster releases, less risk."
The reality:
In monolith:
- Change order processing code
- Run tests
- Deploy entire application
- Deployment time: 5 minutes
In microservices:
- Change order processing code
- Update order service
- Order service talks to inventory service (might need to update its contract)
- Update inventory service contract
- Both services talk to payment service (might need coordination)
- Deploy order service
- Monitor for integration issues
- Deployment time: 20 minutes + coordination overhead
You saved zero time and added complexity.
When this actually helps: You have dozens of developers, multiple teams, and deployments happening many times per day. Then independent deployment matters.
For 40-person company with 3 developers: This "benefit" is actually a cost.
Benefit 2: "Better Scalability"
The pitch: "We can scale different parts of the system independently. If orders spike, we scale just the order service, not everything."
The reality:
Question 1: Is your system actually constrained by compute resources?
Most applications are constrained by:
- Database performance (microservices don't fix this)
- Third-party API limits (microservices don't fix this)
- Business logic efficiency (microservices don't fix this)
If you're not CPU-bound or memory-bound, independent scaling buys you nothing.
Question 2: If you are constrained by compute, is it really uneven?
Scenario where microservices help:
- Order processing needs 10 servers
- Reporting needs 1 server
- User management needs 2 servers
More common scenario:
- Everything needs roughly same resources
- Peaks happen across all components simultaneously
- You're scaling the whole monolith anyway
For most businesses: You're not Netflix. Your traffic patterns don't justify this complexity.
Benefit 3: "Technology Flexibility"
The pitch: "Different services can use different technology stacks. Use the best tool for each job."
The reality:
What you gain:
- Order service in Go (fast)
- Reporting service in Python (great for data)
- Payment service in Java (enterprise libraries)
What you lose:
- Developers must know multiple languages
- Different deployment processes for each service
- Different debugging tools
- Different monitoring approaches
- Cannot easily move developers between services
- Harder to hire (need polyglot developers or specialized teams)
Hidden cost: Your 3-developer team just became siloed specialists who can't help each other.
Real world: Most successful microservices companies standardize on 1-2 languages to avoid this nightmare.
Benefit 4: "Fault Isolation"
The pitch: "If one service crashes, the others keep running. Better reliability."
The reality:
In monolith:
- Bug in order processing → entire app crashes
- Impact: Everything down
- But: You have one thing to fix and restart
In microservices:
- Bug in order service → order service crashes
- User service still runs (yay!)
- But orders can't be placed
- Inventory service can't update (depends on order service)
- Reporting is missing order data
- Effectively: Application is still broken, but now it's partial outage that's harder to detect
Plus new failure modes:
- Network failures between services
- Service A can't reach Service B
- Cascading failures (Service C depends on B depends on A)
- Timeout and retry logic complexity
- Distributed deadlocks
Paradox: Microservices add more ways to fail while supposedly improving reliability.
When this helps: You have sophisticated monitoring, distributed tracing, circuit breakers, and experienced SRE team. Not likely at 40 people.
The Real Costs Nobody Mentions
Cost #1: Development Velocity Crashes
In monolith:
- Change order flow: Update order module, update UI, deploy
- Time: 1 day development + 30 minutes deployment
In microservices:
- Change order flow requires coordinating:
- Order service (the change)
- Inventory service (might need to update contract)
- Payment service (might need to coordinate)
- UI service (needs to handle new order service response)
- API gateway (might need routing updates)
- Each service needs its own testing
- Deployment must be coordinated (what order?)
- Integration testing is much harder
- Time: 3 days development + 2 hours deployment + coordination overhead
Simple feature in monolith: Took 1 developer-day
Same feature in microservices: Took 3 developer-days
Your development velocity just dropped 67%.
Cost #2: Infrastructure Costs Multiply
Monolith infrastructure:
- 2 application servers (for redundancy)
- 1 database
- 1 load balancer
- Cost: $300/month
Microservices infrastructure:
- 6 services × 2 instances each = 12 application servers
- 6 databases (each service should have its own)
- 1 API gateway
- 1 service mesh (for service-to-service communication)
- Message queue (for async communication)
- Service discovery
- Distributed tracing system
- Cost: $1,200-2,000/month
Your infrastructure cost just quadrupled. Plus operational complexity.
Cost #3: Operational Complexity Explodes
Monolith operations:
- Monitor one application
- One deployment process
- One set of logs
- Debug by stepping through code
- Ops overhead: 2-3 hours per week
Microservices operations:
- Monitor six services
- Six deployment processes (CI/CD pipelines for each)
- Logs scattered across services
- Debug by tracing requests across service boundaries
- Need distributed tracing (Jaeger, Zipkin)
- Need service mesh (Istio, Linkerd)
- Need centralized logging (ELK stack, Splunk)
- Need sophisticated monitoring (Prometheus, Grafana, Datadog)
- Ops overhead: 20+ hours per week
This usually requires hiring DevOps/SRE person. $120K+ annually.
Cost #4: Testing Becomes Nightmare
Monolith testing:
- Unit tests
- Integration tests (test full stack)
- End-to-end tests
- Test suite runs in 5 minutes
Microservices testing:
- Unit tests per service
- Integration tests per service
- Service-to-service contract testing
- End-to-end tests (need all services running)
- Have to mock service dependencies or run full environment
- Test suite setup and run: 30+ minutes
Your CI/CD just got way slower and more complex.
Cost #5: Data Consistency Problems
Monolith with one database:
- Update order
- Update inventory
- Both in same transaction
- Either both succeed or both fail
- Data is always consistent
Microservices with separate databases:
- Order service updates its database
- Inventory service updates its database
- These are separate transactions
- Order might succeed, inventory might fail
- Data can be inconsistent
Now you need:
- Saga pattern
- Event sourcing
- Compensating transactions
- Eventual consistency
- These are complex distributed systems patterns
Your developers are now building distributed database systems. Are they qualified?
When Microservices Actually Make Sense
Let's be clear: Microservices aren't always wrong. They solve real problems at scale.
Microservices make sense when:
Criterion 1: True Independent Teams
Scenario: You have 50+ developers working on the same system.
Problem: They can't all work in the same codebase without constant merge conflicts and coordination overhead.
Solution: Split into microservices so teams can work independently.
Note: This is an organizational solution to organizational problems, not a technical solution to technical problems.
Your company: Do you have 50+ developers on this system? No? Then this doesn't apply.
Criterion 2: Genuinely Different Scale Requirements
Scenario:
- Your image processing service needs 20 servers during business hours
- Your admin panel needs 1 server
- Your API needs 5 servers
- These actually scale differently (not just theoretically)
Without microservices: Waste money running 20 servers for everything
With microservices: Run 20 image servers, 1 admin server, 5 API servers
Savings justify complexity.
Your company: Do different parts of your system actually have 5-10x different resource needs? Test this before assuming.
Criterion 3: Need Different Deployment Frequencies
Scenario:
- Customer-facing API changes 20 times per day
- Admin panel changes once per week
- Reporting system changes once per month
With monolith: Every tiny API change requires deploying the whole application (risky)
With microservices: Deploy API frequently, admin and reporting rarely
Your company: Are different parts really deploying at massively different frequencies? If everything ships weekly, you don't need this.
Criterion 4: Strong DevOps Culture and Tooling
Prerequisites for microservices success:
- Mature CI/CD for each service
- Sophisticated monitoring and alerting
- Distributed tracing
- Service mesh or strong service communication patterns
- Infrastructure as code
- Experienced SRE or DevOps team
Your company: Do you have these? If you're asking "what's a service mesh?" you're not ready.
Criterion 5: Specific Service Isolation Needs
Scenario: You have a PCI-compliant payment service that should be completely isolated from the rest of your system for security and compliance.
Solution: Microservices provide strong isolation boundary.
Your company: Do you have regulatory or security requirements demanding this level of isolation?
The Questions to Ask Your Developer
When your developer pitches microservices, ask:
Question 1: "What specific problem are we solving?"
Good answers:
- "We have 40 developers who can't work efficiently in the monolith"
- "Our image processing needs 10x the resources of everything else"
- "We need PCI compliance isolation"
Bad answers:
- "It's more modern"
- "It's best practice"
- "Everyone is doing microservices"
- "It'll be more scalable" (without data showing you're constrained)
- "I want to learn microservices"
Question 2: "What's the cost in development velocity?"
Good answer:
- "Features will take 40% longer initially, but we'll recover that in 18 months when we have 30 developers"
Bad answer:
- "It won't slow us down" (it will)
- "It'll be faster in the long run" (without explaining how)
Question 3: "What's the infrastructure and ops cost increase?"
Good answer:
- "Infrastructure cost will triple, we'll need DevOps engineer for $120K, but here's the ROI calculation..."
Bad answer:
- "Not much more"
- "Cloud scales easily"
- Hasn't calculated this at all
Question 4: "What's our experience with distributed systems?"
Good answer:
- "None, which is why we need to hire senior distributed systems engineer first"
- "I've built microservices at previous companies and understand the tradeoffs"
Bad answer:
- "We'll figure it out"
- "It's documented online"
Question 5: "Can we start with a modular monolith instead?"
Good answer:
- "Yes, we can restructure the monolith to be modular, get many of the same benefits, and split into microservices later if needed"
Bad answer:
- "Monolith is legacy, microservices is modern"
- Dismisses this option without consideration
The Better Alternative: Modular Monolith
Here's what you probably actually need:
A monolith that's well-organized internally.
Modular monolith characteristics:
- One application
- Clear module boundaries internally
- Modules only talk through defined interfaces
- Each module could theoretically become a microservice later
- But you get simplicity of monolith today
Benefits:
- Simple deployment (one thing)
- Simple infrastructure (no network between modules)
- Fast development (direct function calls)
- Easy debugging (one codebase)
- Consistent data (one database)
- Can split into microservices later if you really need to
This gives you 80% of microservices benefits with 20% of the complexity.
Most companies should build modular monoliths, not microservices.
(See our detailed article: Modular Monoliths: The Middle Ground Nobody Talks About)
Real World Examples
Bad Microservices Decision: 35-Person SaaS Company
Situation: Growing from 12 to 35 people, 5 developers.
Developer pitch: "We should split the monolith into microservices before it gets too hard."
Decision: Approved. 6-month migration project.
Results after migration:
- Feature velocity dropped 50%
- Infrastructure costs increased from $800/month to $2,400/month
- Developers spent 30% of time on deployment and ops issues
- Two major outages due to service communication failures (never had outages before)
- Ultimately re-merged some services back because they were too interdependent
Cost: 6 months of development time + ongoing velocity and infrastructure costs
Benefit: None realized. They were never constrained by monolith limitations.
Lesson: They fixed problems they didn't have and created problems they couldn't handle.
Good Microservices Decision: 200-Person E-commerce Company
Situation: Monolithic application, 80 developers working on it, deployment takes 2 hours, teams blocking each other constantly.
Analysis:
- Core shopping experience (20 developers, deploys 5x daily)
- Inventory management (15 developers, deploys weekly)
- Recommendation engine (10 developers, deploys daily, compute-intensive)
- Admin tools (5 developers, deploys monthly)
Decision: Split into 4 microservices along these boundaries.
Results:
- Teams could work independently
- Shopping experience deployed frequently without touching inventory
- Recommendation engine scaled independently (needed 10x resources)
- Development velocity improved (teams not blocking each other)
- Infrastructure costs increased, but justified by organizational gains
Cost: 12-month migration, significant infrastructure increase
Benefit: 80 developers became productive, deployment frequency increased, true scale differences addressed.
Lesson: At sufficient scale, microservices solve real organizational and technical problems.
The Bottom Line
Your developer wants microservices because:
- It's exciting technology
- It looks good on resume
- It's what they read about online
- They genuinely believe it's best practice
But for most businesses under 100 employees:
- You don't have the problems microservices solve
- You'll pay all the costs without getting the benefits
- You'll slow down development substantially
- You'll increase operational burden
What you probably actually need:
- Better-organized monolith (modular architecture)
- Clear module boundaries
- Good testing
- Efficient deployment process
This gives you:
- Fast development
- Simple operations
- Low infrastructure costs
- Easy debugging
- Option to split later if needed
Microservices are the right answer for Facebook, Netflix, Amazon, and companies with similar scale. They're probably the wrong answer for your 40-person business.
Don't let "modern architecture" enthusiasm convince you to solve problems you don't have.
When your developer wants microservices, ask the hard questions about costs, benefits, and whether you're solving real problems or just adopting trendy architecture.
Usually, the answer is: Build a better monolith first. Split into microservices only when you have concrete problems that microservices solve.
Your business will thank you for the development velocity, simplicity, and money you saved.