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

Cloud Native Reactive Microservices Architecture

By Renato Cordeiro Ferreira

Cloud Native Reactive Microservices Architecture

Lecture about Cloud Native Reactive Microservice Architectures presented in the 12th CS Week at IME-USP

  • 664