Renato Cordeiro Ferreira
Scientific Programmer @ JADS | PhD Candidate @ USP | Co-founder & Coordinator @CodeLab
Cloud Native
Reactive
Microservices
Architecture
Patterns for resiliency and scalability
Renato Cordeiro Ferreira
2020
RENATO CORDEIRO FERREIRA
Principal Machine Learning Engineer at Elo7
Focused in creating intelligent systems architectures
and bring machine learning into production
Master in Computer Science at USP
Studying software engineering and data science
Starting my PhD at USP
Future thesis about intelligent systems
Co-founder of CodeLab
Inter-university extension group focused on stimulating the technological innovation in universities
Cloud Native Reactive Microservices Architecture creates systems that scale
Cloud Native Applications
Reactive Applications
Microservices Architecture
Microservices Architectures
Organizations which design
systems... are constrained to
produce designs which are
copies of the communication structures of these organizations
Conway's Law
https://twitter.com/conways_law
Microservices are small, autonomous services that work together
Sam Newman, Building Microservices
The microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API
James Lewis & Martin Fowler
Domain-driven design. Continuous delivery. On-demand virtualization. Infrastructure automation. Small autonomous teams. Systems at scale. Microservices have emerged from this world. They weren’t invented or described before the fact; they emerged as a trend, or a pattern, from real-world use. But they exist only because of all that has gone before.
Sam Newman, Building Microservices
Microservices-Based Architecture is a simple concept: it advocates creating a system from a collection of small, isolated services, each of which owns their data, and is independently isolated, scalable and resilient to failure. Services integrate with other services in order to form a cohesive system that’s far more flexible than the typical enterprise systems we build today.
Jonas Bonér, Reactive Microservices Architecture
Microservices-Based Architecture is a simple concept: it advocates creating a system from a collection of small, isolated services, each of which owns their data, and is independently isolated, scalable and resilient to failure. Services integrate with other services in order to form a cohesive system that’s far more flexible than the typical enterprise systems we build today.
Jonas Bonér, Reactive Microservices Architecture
Rails
Django
Laravel
Angular + Express
React + Flask
Vue + Koa
Multiple languages
and databases (polyglote)
MVC
SPA + Microframework
How to do it?
Cloud Native Applications
A cloud native application is engineered to run on a platform
and is designed for resiliency,
agility, operability, and observability
Cloud native Infrastructure: Patterns for Scalable Infrastructure and Applications in a Dynamic Environment
Embrace failures instead
of trying to prevent them
(take advantage of the dynamic nature of running on a cloud platform)
Resiliency
Allow for fast deployments
and quick iterations
(the same idea behind the agile software development movement)
Agility
Add control of application life cycles from inside of it
(instead of relying on external processes
and monitors)
Operability
Provide information to know about the application state
(add ways of querying the current state
of a given application)
Observability
Reactive Applications
We believe that a coherent approach to systems architecture is needed, and we believe that all necessary aspects are already recognised individually: we want systems that are Responsive, Resilient, Elastic and Message Driven. We call these Reactive Systems
Reactive Manifesto
https://reactivemanifesto.org
The system responds in a
timely manner if at all possible
(establish reliable upper bounds to deliver
a consistent quality of service)
Responsive
The system stays responsive
in the face of failure
(resilience is achieved by replication, containment, isolation and delegation)
Resilient
The system stays responsive under varying workload.
(react to changes in the input rate by
increasing or decreasing resources)
Elastic
The system relies on async message-passing
(that ensures loose coupling, isolation and location transparency)
Observability
Source: https://dzone.com/articles/microservices-with-cqrs-and-event-sourcing
Source: https://dzone.com/articles/microservices-with-cqrs-and-event-sourcing
Source: https://dzone.com/articles/microservices-with-cqrs-and-event-sourcing
Learning more
Cloud Native Reactive Microservices Architecture creates systems that scale
Cloud Native Applications
Reactive Applications
Microservices Architecture
There is no silver bullet: choose the architecture that best suits you!
Cloud Native
Reactive
Microservices
Architecture
Patterns for resiliency and scalability
Renato Cordeiro Ferreira
2020
By Renato Cordeiro Ferreira
Lecture about Cloud Native Reactive Microservice Architectures presented in the 12th CS Week at IME-USP
Scientific Programmer @ JADS | PhD Candidate @ USP | Co-founder & Coordinator @CodeLab