Microservices or Monolith? Discover the strengths, the trade-offs, and the real-world lessons every developer must know before deciding how to start a project.
Microservices and Event-Driven Architecture
Introduction to the Module: Microservices-Based Architecture
In this module, we explore the essential foundations of microservices architecture and set expectations so you know exactly what you will learn.
Why Study Microservices?
Although widely used in large companies, microservices often fail in practice — not because of technical issues, but due to a lack of conceptual understanding among developers, tech leads, and architects.
They are frequently adopted for the wrong reasons, without clear goals or mastery of the fundamentals.
What You Will Learn in This Module
- Fundamentals of microservices-based architecture
- When to use and when to avoid microservices
- How microservices work in practice and their challenges
- Strategies to reduce failure risks
- How to avoid the “death star” (excessive dependencies)
- Difference between choreography vs. orchestration
Why This Module Matters
Most of the content is theoretical, because the biggest challenge is not creating an isolated microservice — that part is simple — but understanding how to compose and organize the entire architecture.
Our Goal
To share solid principles that accelerate your journey and help you avoid common pitfalls.
Monolithic Systems
What Is a Monolithic System?
A monolith concentrates all scopes and areas inside a single application.
Characteristics
- All components and features grouped together
- Simple and direct internal communication
- Still predominant in the market
Teamwork Inside a Monolith
- Squads work on different parts of the same system
- Requires organization to avoid Git conflicts
- Automated tests reduce risks
Practical Benefits
- Lower infrastructure cost
- Great for small and medium businesses
- Higher productivity with unified standards
Technological Constraints
- Single programming language
- No queues, circuit breaker, or multiple databases
- Simple deployment
Deployment Risks
- If deployment fails, the entire system goes down
- Microservices reduce this risk
- Blue-green or canary deployments minimize impact
Conclusion About Monoliths
Monoliths are simple, efficient, and perfectly suitable for many scenarios — especially early in a project.
What Are Microservices?
Microservices are small, independent applications with a well-defined scope.
Core Principle: SRP
A microservice should have a single reason to change (SRP — Single Responsibility Principle).
Relationship With Domain-Driven Design (DDD)
- Bounded Contexts help identify services
- But not every context becomes a microservice
Independence and Autonomy
Each microservice must:
- Continue working even if others fail
- Have fallback and resilience mechanisms
Example: Graceful Degradation
If the account calculation service is down:
→ Display the last known balance to the user.
Part of a Bigger Machine
A microservice in total isolation is not a microservice — it’s just a small system.
Summary
- Clear scope
- Independent and autonomous
- Part of an ecosystem
- More complex communication
Microservices-Based Architecture
Microservice ≠ Architecture
- Microservice: a software unit
- Architecture: how multiple units are organized
Main Characteristics
Use of Multiple Technologies
Each service may use different languages or databases — but this requires governance.
Governance vs Total Freedom
- Standards increase productivity
- Micromanagement harms development
Platform teams usually provide:
- Templates
- SDKs
- Internal development standards
- Infrastructure tools
The Myth of Total Freedom
Too many technologies create expensive and hard-to-maintain systems.
Summary
Microservices require:
- Governance
- Standardization
- Balance between freedom and consistency
Microservices Setup
1. Less Risky Deployment
- If one service fails, the others keep running
- Reduces user impact
But increases complexity:
- CI/CD per service
- Dedicated monitoring
- Infrastructure per service
2. Specialized Teams
Microservices allow:
- Domain-focused teams
- More technical depth
- Faster business delivery
Scaling Microservices: Reality vs Myth
1. The Promise
- Scale only the critical parts
- Reduce resource waste
2. The Hidden Side
- Many pipelines
- Higher infrastructure cost
- More complex monitoring
3. The Myth: “Monoliths Don’t Scale”
Monoliths do scale — vertically and horizontally.
4. Communication Between Services
Tools like Kafka, RabbitMQ, or SQS:
- Increase complexity
- Require cultural changes
- Increase operational costs
Conclusion
Microservices only make sense in large and complex environments.
Distributed Architectures Are Necessary
Why Do Large Companies Need Them?
- Large teams
- Large domains
- Complex business rules
Microservices: The “Bitter Medicine”
They are:
- Hard
- Expensive
- Necessary at scale
Reflection
The choice must depend on context, not trends.
When to Choose Monolithic Systems
Ideal for:
- MVPs and POCs
- Product discovery
- High uncertainty
- Low governance maturity
- Small teams
- Limited budget
Monolith = simple, cheap, and fast.
When to Choose Microservices
Best choice when:
- Many teams work simultaneously
- Domains are well defined
- Need to scale isolated components
- Use of multiple technologies
Microservices are about scaling organizations, not only systems.
Provocation: Are You Ready for Microservices?
You must master:
- Containers
- CI/CD
- Distributed architecture
- Asynchronous communication
- Independent databases
- Observability (logs, metrics, tracing)
- DDD
Final Analogy
A distributed environment is like an airplane cockpit:
You don’t need to press every button today —
but you must know what each one does,
because eventually, you’ll need them.