I’ve been following this discussion from the product perspective, and I want to flip the narrative:
Microservices CAN make sense—but business requirements should drive the decision, not architecture trends.
Let me share when microservices actually solved business problems at our Series B fintech startup.
The Business Context
Starting point:
- Series A SaaS company, $5M ARR
- 30 engineers, Rails monolith
- SMB customers, self-service model
- Shipping features fast, growing 200% YoY
Life was good. The monolith worked.
The Enterprise Requirement
Then we went upmarket. Enterprise customers had demands our monolith couldn’t meet:
$2M ARR Deal Requirements
Prospect: Fortune 500 financial services company
Their demands:
- Isolated tenant deployments - “We need our own instance, can’t share infrastructure with competitors”
- Regional data residency - “EU customer data must stay in EU, US data in US”
- Different SLA tiers - “Premium customers get 99.95%, standard gets 99.5%”
- White-label customization - “We need our brand, not yours, but can’t wait for custom builds”
Our monolith couldn’t support any of this.
The Business Decision
Choice:
- Option A: Say no to enterprise, stay SMB-focused with monolith
- Option B: Split services to support enterprise requirements
Analysis:
- Enterprise deals: $1M-3M ARR each
- SMB deals: $10K-50K ARR each
- Would need 20-50 SMB deals to replace one enterprise deal
Decision: Split services for enterprise. Business requirement drove architecture.
What We Actually Split
We didn’t split everything. We extracted services with clear business boundaries:
Service 1: Customer-Facing API
Business reason: Isolated tenant deployments
Implementation:
- Each enterprise customer gets isolated API instance
- Separate scaling per customer
- Customer-specific SLA enforcement
Result: Closed 3 enterprise deals worth $6M ARR combined
Service 2: Data Storage Layer
Business reason: Regional data residency compliance
Implementation:
- EU region: separate database cluster
- US region: separate database cluster
- Routing logic based on customer location
Result: GDPR compliance, enabled EU expansion
Service 3: White-Label UI Service
Business reason: Customization without touching core platform
Implementation:
- Theme engine for branding
- Customer-specific configurations
- Independent deployment from core platform
Result: White-label deals worth $1.5M ARR
Core Platform: Stayed Monolithic
What DIDN’T split:
- Payment processing
- Reconciliation engine
- Reporting system
- Admin tools
- Internal operations
Why? No business requirement to split. Works fine in monolith.
The ROI Calculation
Let me show you the numbers that justified microservices:
Costs (Annual)
Infrastructure:
- Multi-region deployment: $120K/year
- Service isolation: $80K/year
- Increased cloud costs: $150K/year
Subtotal: $350K/year
Tooling:
- Observability stack: $95K/year
- Service mesh: $40K/year
- CI/CD infrastructure: $25K/year
Subtotal: $160K/year
People:
- 2 DevOps engineers (from existing team): $400K/year allocated
- Platform engineering time: $200K/year allocated
Subtotal: $600K/year
Total Cost: $1.11M/year
Returns (Annual)
Revenue enabled:
- Enterprise deals closed: $6M ARR (year 1)
- White-label expansion: $1.5M ARR (year 1)
- EU market entry: $2M ARR (year 2 projection)
Total: $9.5M ARR enabled
Revenue retention:
- Enterprise SLA compliance: retained $6M ARR
- Compliance requirements met: avoided $500K churn risk
ROI: ($9.5M - $1.11M) / $1.11M = 755% return in year 1
Microservices were absolutely worth it—because business requirements justified the complexity.
When Business Drives Architecture
Here’s my framework for business-driven architecture decisions:
Question 1: Revenue Enabled
Will this architecture enable new revenue?
- New market segment (enterprise, international)
- New product capabilities (white-label, multi-tenant)
- New pricing tiers (SLA differentiation)
If yes: Calculate potential revenue
If no: Architecture probably not justified
Question 2: Revenue Protected
Will this architecture prevent revenue loss?
- Compliance requirements (GDPR, SOC2, HIPAA)
- Customer retention (SLA commitments)
- Competitive differentiation (features competitors have)
If yes: Calculate retention value
If no: Architecture probably not justified
Question 3: Cost Avoided
Will this architecture reduce costs?
- Resource optimization (right-sizing services)
- Operational efficiency (isolated failures)
- Technical debt reduction (clean boundaries)
If yes: Calculate cost savings
If no: Architecture probably not justified
Question 4: Strategic Positioning
Will this architecture enable future strategy?
- M&A readiness (sell off product lines)
- Partnership ecosystem (third-party integrations)
- Platform business model (marketplace, app store)
If yes: Estimate strategic value
If no: Architecture probably not justified
The Failures: When Business Didn’t Justify
We almost made mistakes too:
Service We Didn’t Extract #1: Notification Service
Engineer argument: “Notifications have different scaling needs”
Business reality:
- No customer requirement for isolated notifications
- No SLA differentiation needed
- No revenue enabled by splitting
Decision: Kept in monolith
Saved: $200K/year in operational overhead
Service We Didn’t Extract #2: Analytics Service
Engineer argument: “Heavy computation, should be separate”
Business reality:
- Batch processing, not real-time requirement
- No customer visibility to analytics performance
- Could optimize in monolith with background workers
Decision: Kept in monolith, added async workers
Saved: $300K/year + 3 months engineering time
Measuring “Architectural Debt” vs “Feature Debt”
Back to my earlier question: How do we quantify architectural decisions?
Architectural Debt
Definition: Cost of complexity that doesn’t serve current business needs
Examples:
- Microservices at 12 people (Maya’s story)
- Over-engineered infrastructure for current scale
- Technology choices for résumé vs business fit
Measurement:
- Opportunity cost: features not built due to complexity
- Operational overhead: time spent on infrastructure vs product
- Velocity tax: how much slower are we shipping?
Feature Debt
Definition: Cost of under-investing in capabilities customers need
Examples:
- Missing enterprise features (SLA, multi-tenant, regional)
- Technical limitations blocking sales
- Competitive gaps in functionality
Measurement:
- Revenue loss: deals we couldn’t close
- Churn risk: customers leaving due to missing features
- Market opportunity: segments we can’t address
The Balance
Healthy architecture:
- Architectural complexity ≤ Business complexity required
- Enable current business needs + 1-2 years future needs
- Avoid both over-engineering and under-investing
Our rule: If we can’t draw a straight line from architecture decision to revenue/retention/cost-savings, we don’t do it.
My Questions
-
What business requirements drove your microservices decisions? Revenue? Compliance? Scale?
-
How do you calculate ROI on architecture investments? Do you have quantitative frameworks?
-
When did you say NO to microservices despite engineer enthusiasm? What was your reasoning?
-
How do you balance architecture investment vs feature investment in roadmap planning?
I’m convinced architecture is a business decision, not a technical one—but I want to hear from others who’ve made these tradeoffs.