USPCodeLab's current president, undergrad student aiming for a master's degree, fullstack developer (mainly back-end). Also have a teacher's spirit.
USPCodeLab's co-founder and ex-president, worked at VTEX and QuintoAndar, fullstack developer (mainly front-end), technology hipster.
João F. Daniel
Leonardo Lana
"A microservices architecture is only necessary in a large, complex dev environment. Most shops would be better off just using simple monoliths following SOLID principles and reap benefits from frequent small deployments"
Monolith
Service Oriented Architecture
Synchronous Microservices
Asynchronous Microservices
Cloud Native
Reactive
BYRON
Monolith
Service Oriented Architecture
Synchronous Microservices
Asynchronous Microservices
Cloud Native
Reactive
BYRON
single codebase,
so not that complex
organized ways, such as Layered Architecture
sparses releases
waste of resources when scaling up
multiple devs leads to branching hell
All devs over the same repo, no good comes from that, right?
So you're scaling up, huh? Make a copy of the whole thing!
Monolith
Service Oriented Architecture
Synchronous Microservices
Asynchronous Microservices
Cloud Native
Reactive
BYRON
extensible, just add a new service
services don't need to know about the others
"smart" ESB?
EBS smells, ugh!
Big Ball of Mud ¹
ESB is a bottleneck, problem scaling up
¹: more here https://joeyoder.com/PDFs/mud.pdf or the man himself
So services don't need to know about the others... but how do they chat?
A wild ESB appears!
Monolith
Service Oriented Architecture
Synchronous Microservices
Asynchronous Microservices
Cloud Native
Reactive
BYRON
scalability on demand
optimises team division
problems with response time
services are highly coupled
indicates a connection
What if a service dies?
But there are problems even when things are working fine!
Monolith
Service Oriented Architecture
Synchronous Microservices
Asynchronous Microservices
Cloud Native
Reactive
BYRON
exchange messages through a "dumb" broker (but resilient as hell)
services are highly decoupled
data replication
eventual data consistency
The system works with a pub/sub mechanism
A demo: when one publishes an event, all subscribed receive it
Monolith
Service Oriented Architecture
Synchronous Microservices
Asynchronous Microservices
Cloud Native
Reactive
BYRON
Resiliency
Agility
Operability
Observability
Embrace failure instead of trynig to prevent them
Allow fast deliveries and quick iterations
Provide inner lifecycle control instead of relying on external tools
Provide information that answer questions about the state of the application
Responsivity
Resiliency
Elasticity
Message Driven
Provide consistent and reasonable response times
Keep the system responsive in case of failure
Keep the system responsive under various load conditions, no bottleneck
Provide decoupling by exchanging async messages between components
¹: more here https://martinfowler.com/bliki/BoundedContext.html
same entity
different views
A demo: the travel of an event of "new user", each service takes just what it needs from the event
request
response
read
write
event
notification
request
response
read
write
event
notification
replays
messages
rebuilds the final state
Notes: