erros que cometemos na arquitetura de micro-serviços e a evolução para containers

Post on 15-Apr-2017

230 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Erros que cometemos na arquitetura de microserviços e a

evolução para Containers

Especialistas em Retenção

BRUNO ANDRADE ALVES

“Empreender é saltar de paraquedas e costurá-lo durante a queda"

A Dito começou construindo aplicativos para Orkut e depois para o Facebook.

“Ingressos para o Rock in Rio se esgotam em menos de 15 minutos"

“Maior rede especializada em óculos escuros e acessórios da América latina"

“TIM, vice-líder do setor de telefonia com mais de 44 mihões de pessoas”

UM TIME DE FERAs

FAZEDOR

ÉTICA

RESULTADOS

ALEGRIA e APRENDER

F

E

R

A

VOLTANDO AO COMEÇO DE 2012

SERVIÇOS

Analytics Badge Ranking Login

GMEvent Share

Dashboard

Analytics Badge Ranking Login GM

MySQL Redis MySQLApenas o Analytics acessa o BANCO da plataforma

Apenas os módulos da plataforma acessam o Redis

O GM acessa seu

próprio BANCO

Todos os módulos da plataforma comunicam com o Analytics, e da mesma forma o

Analytics se comunica com todos os módulos da plataforma

Apenas o Social Share

Comunica com o GM

O GM se comunica

apenas com o Social Share

SERVIÇOS

Event Share

DashboardTodos os módulos da plataforma

comunicam com o Dashboard. O Dashboard também se comunica com os eles

ARQUITETURA NO AR

PROBLEMAS = 0

ARQUITETURA NO AR

PROBLEMÔMETRO

Usuários

Eventos

Analytics

Alto Acoplamento

1

Envia para indexação

Cria evento de login

Envia para indexação

Fluxo de criação de usuários

Usuários

Eventos

Analytics

Alto Acoplamento

2

Envia para indexação - Lentidão

Cria evento de loginLentidão

Envia para indexação Lentidão

Fluxo de criação de usuários Lentidão

Lentidão na comunicação entre módulos

Alto AcoplamentoLentidão na comunicação entre módulos

3

Usuários

Eventos

AnalyticsEnvia para indexação - Erro

Cria evento de login

Envia para indexação

Fluxo de criação de usuários

Dependência para criação de eventos

Criação de estados

Alto AcoplamentoLentidão na comunicação entre módulos

Criação de estados

4

Serviços com muitas regras de negócio

DASH Login

Event

Badge Ranking

GM Share

Notification Referal

5

Analytics

Alto AcoplamentoLentidão na comunicação entre módulos

Criação de estadosServiços com muitas regras de negócioMódulos morrem, código legado não

6

Alto AcoplamentoLentidão na comunicação entre módulos

Criação de estadosServiços com muitas regras de negócio

Módulos morrem, código legado nãoDifícil atualização de bibliotecas

7

MySQL

Alto AcoplamentoLentidão na comunicação entre módulos

Criação de estadosServiços com muitas regras de negócio

Módulos morrem, código legado nãoDifícil atualização de bibliotecas

Crescimento sem fim do banco relacional

Amigo, você sabe me dizer onde podemos salvar os dados desse

novo serviço?

Rapaz,

Salva no Redis Ipiranga!

8

Alto AcoplamentoLentidão na comunicação entre módulos

Criação de estadosServiços com muitas regras de negócio

Módulos morrem, código legado nãoDifícil atualização de bibliotecas

Crescimento sem fim do banco relacionalElevado consumo de memória

9

Alto AcoplamentoLentidão na comunicação entre módulos

Criação de estadosServiços com muitas regras de negócio

Módulos morrem, código legado nãoDifícil atualização de bibliotecas

Crescimento sem fim do banco relacionalElevado consumo de memória

Difícil limpar dados não utilizados

10

Alto AcoplamentoLentidão na comunicação entre módulos

Criação de estadosServiços com muitas regras de negócio

Módulos morrem, código legado nãoDifícil atualização de bibliotecas

Crescimento sem fim do banco relacionalElevado consumo de memória

Difícil limpar dados não utilizadosDifícil identificar origem de Slow Queries

11

Analytics Badge Ranking Login GM

MySQL Redis MySQLApenas o Analytics acessa o BANCO da plataforma

Apenas os módulos da plataforma acessam o Redis

O GM acessa seu

próprio BANCO

Todos os módulos da plataforma comunicam com o Analytics, e da mesma forma o Analytics se

comunica com todos os módulos da plataforma

Apenas o Social Share

Comunica com o GM

O GM se comunica apenas com o Social Share

Event Share

Dashboard

Todos os módulos da plataforma comunicam com o Dashboard. O Dashboard também se comunica

com os eles

Alto AcoplamentoLentidão na comunicação entre módulos

Criação de estadosServiços com muitas regras de negócio

Módulos morrem, código legado nãoDifícil atualização de bibliotecas

Crescimento sem fim do banco relacionalElevado consumo de memória

Difícil limpar dados não utilizadosDifícil identificar origem de Slow Queries

Dificuldade de Onboarding de novos Devs

12

Alto AcoplamentoLentidão na comunicação entre módulos

Criação de estadosServiços com muitas regras de negócio

Módulos morrem, código legado nãoDifícil atualização de bibliotecas

Crescimento sem fim do banco relacionalElevado consumo de memória

Difícil limpar dados não utilizadosDifícil identificar origem de Slow Queries

Dificuldade de Onboarding de novos DevsEquipe enxuta

13

Alto AcoplamentoLentidão na comunicação entre módulos

Criação de estadosServiços com muitas regras de negócio

Módulos morrem, código legado nãoDifícil atualização de bibliotecas

Crescimento sem fim do banco relacionalElevado consumo de memória

Difícil limpar dados não utilizadosDifícil identificar origem de Slow Queries

Dificuldade de Onboarding de novos DevsEquipe enxuta

Dificuldade de gerenciar diversos serviços

14

Analytics

Usuários

MySQL Alto AcoplamentoLentidão na comunicação entre módulos

Criação de estadosServiços com muitas regras de negócio

Módulos morrem, código legado nãoDifícil atualização de bibliotecas

Crescimento sem fim do banco relacionalElevado consumo de memória

Difícil limpar dados não utilizadosDifícil identificar origem de Slow Queries

Dificuldade de Onboarding de novos DevsEquipe enxuta

Dificuldade de gerenciar diversos serviçosDesenvolvimento duplicado

ARQUITETURA PERFEITA

"Applications built from microservices aim to be as decoupled and

as cohesive as possible"

Martin Fowler

ARQUITETURA PERFEITA

"Set of very small, granular, independent collaborating services."

Benjamin Wooton

Microservices - Not A Free Lunch

Fonte: http://highscalability.com/blog/2014/4/8/microservices-not-a-free-lunch.html

- Substantial DevOps Skills Required

- Distributed System Complexity

- It can be difficult to recreate environments in a consistent way for either manual or automated testing.

15

Alto AcoplamentoLentidão na comunicação entre módulos

Criação de estadosServiços com muitas regras de negócio

Módulos morrem, código legado nãoDifícil atualização de bibliotecas

Crescimento sem fim do banco relacionalElevado consumo de memória

Difícil limpar dados não utilizadosDifícil identificar origem de Slow Queries

Dificuldade de Onboarding de novos DevsEquipe enxuta

Dificuldade de gerenciar diversos serviçosDesenvolvimento duplicado

Quebra de paradigmas

Alto AcoplamentoLentidão na comunicação entre módulos

Criação de estadosServiços com muitas regras de negócio

Módulos morrem, código legado nãoDifícil atualização de bibliotecas

Crescimento sem fim do banco relacionalElevado consumo de memória

Difícil limpar dados não utilizadosDifícil identificar origem de Slow Queries

Dificuldade de Onboarding de novos DevsEquipe enxuta

Dificuldade de gerenciar diversos serviçosDesenvolvimento duplicado

Quebra de paradigmas

14

Containerização dos serviços

Alto AcoplamentoLentidão na comunicação entre módulos

Criação de estadosServiços com muitas regras de negócio

Módulos morrem, código legado nãoDifícil atualização de bibliotecas

Crescimento sem fim do banco relacionalElevado consumo de memória

Difícil limpar dados não utilizadosDifícil identificar origem de Slow Queries

Dificuldade de Onboarding de novos DevsEquipe enxuta

Dificuldade de gerenciar diversos serviçosDesenvolvimento duplicado

Quebra de paradigmas

12

Alto AcoplamentoLentidão na comunicação entre módulos

Criação de estadosServiços com muitas regras de negócio

Módulos morrem, código legado nãoDifícil atualização de bibliotecas

Crescimento sem fim do banco relacionalElevado consumo de memória

Difícil limpar dados não utilizadosDifícil identificar origem de Slow Queries

Dificuldade de Onboarding de novos DevsEquipe enxuta

Dificuldade de gerenciar diversos serviçosDesenvolvimento duplicado

Quebra de paradigmas

10

DASH Login

Search Apps

Analytics Badge

sAnalytics CC

GM Share

Referral AUTH

Event

API

Ranking

Hooks

Notification

Stats

Micro serviços

Alto AcoplamentoLentidão na comunicação entre módulos

Criação de estadosServiços com muitas regras de negócio

Módulos morrem, código legado nãoDifícil atualização de bibliotecas

Crescimento sem fim do banco relacionalElevado consumo de memória

Difícil limpar dados não utilizadosDifícil identificar origem de Slow Queries

Dificuldade de Onboarding de novos DevsEquipe enxuta

Dificuldade de gerenciar diversos serviçosDesenvolvimento duplicado

Quebra de paradigmas

8

DASH Login

Search Apps

Analytics Badge

sAnalytics CC

GM Share

Referral AUTH

Event

API

Ranking

Hooks

Notification

Stats

Micro serviços

Alto AcoplamentoLentidão na comunicação entre módulos

Criação de estadosServiços com muitas regras de negócio

Módulos morrem, código legado nãoDifícil atualização de bibliotecas

Crescimento sem fim do banco relacionalElevado consumo de memória

Difícil limpar dados não utilizadosDifícil identificar origem de Slow QueriesDificuldade de Onboarding de novos Devs

Equipe enxutaDificuldade de gerenciar diversos serviços

Desenvolvimento duplicadoQuebra de paradigmas

3

DASH Login

Search Apps

Analytics Badge

sAnalytics CC

GM Share

Referral AUTH

Event

API

Ranking

Hooks

Notification

Stats

Micro serviços

Alto AcoplamentoLentidão na comunicação entre módulos

Criação de estadosServiços com muitas regras de negócioMódulos morrem, código legado não

Difícil atualização de bibliotecasCrescimento sem fim do banco relacional

Elevado consumo de memóriaDifícil limpar dados não utilizados

Difícil identificar origem de Slow QueriesDificuldade de Onboarding de novos Devs

Equipe enxutaDificuldade de gerenciar diversos serviços

Desenvolvimento duplicadoQuebra de paradigmas

2

DASH Login

Analytics Badge

Event

Ranking

Micro serviços

Alto AcoplamentoLentidão na comunicação entre módulos

Criação de estadosServiços com muitas regras de negócio

Módulos morrem, código legado nãoDifícil atualização de bibliotecas

Crescimento sem fim do banco relacionalElevado consumo de memória

Difícil limpar dados não utilizadosDifícil identificar origem de Slow Queries

Dificuldade de Onboarding de novos DevsEquipe enxuta

Dificuldade de gerenciar diversos serviçosDesenvolvimento duplicado

Quebra de paradigmas

2

Bibliotecas em 10 linguagens

C, C++, Java, Go, Node.js, Python, Ruby, Objective-C, PHP e C#.

Feita para ser o padrão do google

Alta performance Alto AcoplamentoLentidão na comunicação entre módulos

Criação de estadosServiços com muitas regras de negócio

Módulos morrem, código legado nãoDifícil atualização de bibliotecas

Crescimento sem fim do banco relacionalElevado consumo de memória

Difícil limpar dados não utilizadosDifícil identificar origem de Slow Queries

Dificuldade de Onboarding de novos DevsEquipe enxuta

Dificuldade de gerenciar diversos serviçosDesenvolvimento duplicado

Quebra de paradigmas

1

gRPC

Testes no Google Cloud Pub/Sub

0

30

60

90

120

0

7,5

15

22,5

30

gRPC HTTP1.1/JSON

Throughput 3x maior

Throughput (MB/s) per CPU

gRPC HTTP1.1/JSON

Throughput (MB/s)

Gasto de CPU 11x menor

JSON/HTTPVS

Fonte: https://cloud.google.com/blog/big-data/2016/03/announcing-grpc-alpha-for-google-cloud-pubsub

STEAM DE DADOS

PUB

Users Service

Events Service

Search Service

Certs Service

Monitoring Service

Analytics Service

Notification Service

Facebook service

Android Service

iOS Service

Email Service

SMS Service

SUB

Add-ons

Alto AcoplamentoLentidão na comunicação entre módulos

Criação de estadosServiços com muitas regras de negócio

Módulos morrem, código legado nãoDifícil atualização de bibliotecas

Crescimento sem fim do banco relacionalElevado consumo de memória

Difícil limpar dados não utilizadosDifícil identificar origem de Slow Queries

Dificuldade de Onboarding de novos DevsEquipe enxuta

Dificuldade de gerenciar diversos serviçosDesenvolvimento duplicado

Quebra de paradigmas

0

OBRIGADO!

Especialistas em Retenção

BRUNO ANDRADE ALVES bruno@dito.com.br

www.dito.com.br facebook.com/ditointernet

top related