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!

Cloud Native Reactive Microservices Architecture

By Renato Cordeiro Ferreira

Cloud Native Reactive Microservices Architecture

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

  • 696