Renato Cordeiro Ferreira
Scientific Programmer @ JADS | PhD Candidate @ USP | Co-founder & Coordinator @CodeLab
Cloud Native
Reactive
Microservices
Architecture
Making systems for scale
Renato Cordeiro Ferreira
2018
Cloud Native Reactive Microservices Architecture creates systems that scale
Cloud Native Applications
Reactive Applications
Microservices Architecture
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
The Reactive Manifesto
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
Microservices Architectures
Organizations which design systems... are constrained to produce designs which are copies of the communication structures of these organizations.
Conway's law
Microservices are small, autonomous services that work together
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
Martin Fowler's blog
Rails
Django
Laravel
Angular + Sinatra
React + Flask
Vue + Node
Multiple languages
and databases (polyglote)
MVC
SPA + Microframework
How to do it?
Putting it all together
A platform to organize and host hackathons
https://uclab.xyz/hacknizer
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!
By Renato Cordeiro Ferreira
Lecture about Cloud Native Reactive Microservice Architectures presented in the 10th CS Week at IME-USP
Scientific Programmer @ JADS | PhD Candidate @ USP | Co-founder & Coordinator @CodeLab