De 1 a 1.000.00 de usuários

91
De 1 a 1.000.000 de usuários

Transcript of De 1 a 1.000.00 de usuários

Page 1: De 1 a 1.000.00 de usuários

De 1 a 1.000.000 de usuários

Page 2: De 1 a 1.000.00 de usuários

Felipe Klerk Signorini

DevOps - ativo.com

● Arquiteto de software● Infra estrutura● Desenvolvimento.

Page 3: De 1 a 1.000.00 de usuários

Por onde começar?

Page 4: De 1 a 1.000.00 de usuários
Page 5: De 1 a 1.000.00 de usuários
Page 6: De 1 a 1.000.00 de usuários

Não seja o programador StackOverflow

Page 7: De 1 a 1.000.00 de usuários

"Aqui as coisas sempre funcionaram assim..."

Cultura e conhecimento

Page 8: De 1 a 1.000.00 de usuários
Page 9: De 1 a 1.000.00 de usuários

Para os primeiros milhões de usuários a linguagem não importa.

Page 10: De 1 a 1.000.00 de usuários

Não importa a ferramenta➔ Estude os conceitos, o porque aquela ferramenta foi feita.

➔ Aplicação e servidores andam juntos

➔ Se questione o porque utiliza determinadas ferramentas.

➔ Pense primeiro na arquitetura e por último em quais ferramentas utilizar

➔ A capacidade em visualizar o todo impacta direto na escalabilidade do sistema

Page 11: De 1 a 1.000.00 de usuários

"Meoo coloca um MongoDB que sua aplicação vai voar"

NoSQL, você realmente precisa?

Page 12: De 1 a 1.000.00 de usuários

Começe com um banco relacional➔ Tecnologias maduras e estáveis

➔ Documentação e comunidade

➔ Ferramentas de mercadoSistema de monitoramento, análises, forks e afins

➔ Se bem estruturado seu banco relacional dará conta dos seus primeiros milhões de usuários.

➔ Sua estrutura de dados normalmente é relacional

Page 13: De 1 a 1.000.00 de usuários

Quando pensar em NoSQL➔ Sua estrutura de dados é baseado em meta dados

➔ Base sem esquema

➔ Massiva quantidade de dados (TB`s)

➔ Massiva quantidade de registros (muitos mesmos)

Page 14: De 1 a 1.000.00 de usuários

"Isso não é minha responsabilidade."

Arquitetura de aplicações

Page 15: De 1 a 1.000.00 de usuários

Arquitetura?

Infraestrutura

Como as máquinas se relacionam, banco de dados, serviços, sistema de cache, firewall e afins.

“Contanization”, “Infra is code”, “LoadBalances/AutoScaling”

Serviços

Como os aplicativos se comunicam, relação entre gateways, APIs, sistemas e afins.

“ESB”, “Microservices”, “monoliticos”

Aplicativo

Estrutura em nível de aplicação, como as classes e funções se relacionam.

“OOP”, “Design Pattern”

Page 16: De 1 a 1.000.00 de usuários

"O problema está no servidor."

Escalabilidade é responsabilidade da Infra?

Page 17: De 1 a 1.000.00 de usuários

Escalabilidade Vs

Performance

Page 18: De 1 a 1.000.00 de usuários

1 Usuário

Page 19: De 1 a 1.000.00 de usuários
Page 20: De 1 a 1.000.00 de usuários

Apache/PHP e DB

Page 21: De 1 a 1.000.00 de usuários

>10 Usuários

Page 22: De 1 a 1.000.00 de usuários

Escalabilidade?

4 GBs1 CPU

8 GBs2 CPUs

16 GBs4 CPUS

2 GBs

● Consiste em aumentar o poder computacional

● Exige downtime do aplicativo● Muito caro● Haverá um limite

Page 23: De 1 a 1.000.00 de usuários

Escalabilidade ?

4 GBs1 CPU

4 GBs1 CPU

4 GBs1 CPU

● Mais barato que a escalabilidade vertical

● Garante failbacks no aplicativo● SOA● Alta disponibilidade● A longo prazo se torna o único

caminho

Page 24: De 1 a 1.000.00 de usuários

Apache/PHP

DataBase

Page 25: De 1 a 1.000.00 de usuários

>100 Usuários

Page 26: De 1 a 1.000.00 de usuários

CacheGuardar algo temporáriamente para uso posterior

Page 27: De 1 a 1.000.00 de usuários

● Aumenta a performance da aplicação● Diminui gastos em recursos computacionais● Aumenta o uso de IO (file cache)● Considero o cache o item mais importante para

começar a escalar a aplicação

Page 28: De 1 a 1.000.00 de usuários

HTTP

Cache - App

Routes Controller

DataBase

View

MIddleware

Page 29: De 1 a 1.000.00 de usuários

HTTP

Cache - App

Routes Controller

DataBase

View

MIddleware

Cache

Page 30: De 1 a 1.000.00 de usuários

View Object

Cache - View

Render

Controller

View Object Render

View Object Render

Page 31: De 1 a 1.000.00 de usuários

View Object

Cache - View

Render

Controller

View Object Render

View Object Render

Cache

Page 32: De 1 a 1.000.00 de usuários

Model

Cache - Models

Database

Controller

Model Database

Page 33: De 1 a 1.000.00 de usuários

Model

Cache - Models

Database

Controller

Model Database

Cache

Page 34: De 1 a 1.000.00 de usuários

get_file_contents

Cache - Request

HTTP

Controller

get_file_contents HTTP

Controller

Page 35: De 1 a 1.000.00 de usuários

get_file_contents

Cache - Request

HTTP

Controller

get_file_contents HTTP

Controller

Cache

Page 36: De 1 a 1.000.00 de usuários
Page 37: De 1 a 1.000.00 de usuários
Page 38: De 1 a 1.000.00 de usuários

SuperCache - Wordpress

Page 39: De 1 a 1.000.00 de usuários

Cache - Memoria

Page 40: De 1 a 1.000.00 de usuários

PHP/Script

Cache - OpCache

Parser Compile Execute

OutPut

Page 41: De 1 a 1.000.00 de usuários

PHP/Script

Cache - OpCache

Parser Execute

OutPut

Compile

Page 42: De 1 a 1.000.00 de usuários

Cache - Nginx

HTTP Routes Controller

DataBase

View

MIddleware

Page 43: De 1 a 1.000.00 de usuários

Cache - Nginx

HTTP Routes Controller

DataBase

View

MIddleware

Cache

Page 44: De 1 a 1.000.00 de usuários

Cache - Nginx

Page 45: De 1 a 1.000.00 de usuários

ReplicaBanco "não" escala, mais existe opções.

Page 46: De 1 a 1.000.00 de usuários

MySQL - Replica

App

Master ReplicaEscritaEscrita

Leitura

Page 47: De 1 a 1.000.00 de usuários
Page 48: De 1 a 1.000.00 de usuários

Existe a possibilidade da criação de clusters, e/ou utilização de técnicas de sharding data, porém ainda não é o momento

Page 49: De 1 a 1.000.00 de usuários

nginx/php+fpmReverse Cache

Master Replica

Page 50: De 1 a 1.000.00 de usuários

>1000 Usuários

Page 51: De 1 a 1.000.00 de usuários

ConcorrênciaAgora sim vamos falar de LoadBalances e AutoScaling.

Page 52: De 1 a 1.000.00 de usuários
Page 53: De 1 a 1.000.00 de usuários
Page 54: De 1 a 1.000.00 de usuários

Entenda que cada máquina deve ser Stateless, não pode conter nenhuma informação vital.

● Uploads de arquivos● Sessões do php● Logs

Page 55: De 1 a 1.000.00 de usuários

nginx/php+fpm

LoadBalance

Master Replica

nginx/php+fpm

LoadBalance

Page 56: De 1 a 1.000.00 de usuários

nginx/php+fpm

LoadBalance

Master Replica

nginx/php+fpmstorage

Static files

Page 57: De 1 a 1.000.00 de usuários

nginx/php+fpm

LoadBalance

Master Replica

nginx/php+fpm

CDN

CDNs

storage

Page 58: De 1 a 1.000.00 de usuários
Page 59: De 1 a 1.000.00 de usuários

Some web systems rely on “sticky sessions” – that is, caching user session data in memory of the app’s process and expecting future requests from the same visitor to be routed to the same process. Sticky sessions are a violation of twelve-factor and should never be used or relied upon. Session state data is a good candidate for a datastore that offers time-expiration, such as Memcached or Redis

Page 60: De 1 a 1.000.00 de usuários

nginx/php+fpm

LoadBalance

MasterReplica

nginx/php+fpmstorage

Sessões

Memcached

Page 61: De 1 a 1.000.00 de usuários

session_drive=memcachedsession.save_handler = memcachesession.save_path = tcp://10.1.1.1:11211'

Page 62: De 1 a 1.000.00 de usuários

Sessões

Page 63: De 1 a 1.000.00 de usuários

nginx/php+fpm

LoadBalance

Master

nginx/php+fpmstorage

Logs

ELK

Page 64: De 1 a 1.000.00 de usuários

Logs - ELK - Stack

Page 65: De 1 a 1.000.00 de usuários

Logs

Page 66: De 1 a 1.000.00 de usuários

AutoScalingCrescimento e redução automática de clusters.

Page 67: De 1 a 1.000.00 de usuários

nginx/php+fpm

LoadBalance

MasterReplica

nginx/php+fpmstorage

Autscaling

Memcached

Page 68: De 1 a 1.000.00 de usuários

Autscaling

Page 69: De 1 a 1.000.00 de usuários

IndexaçãoResultados de buscas, listagem de dados, seleção de dados de forma geral.

Page 70: De 1 a 1.000.00 de usuários

Servidores de busca

Page 71: De 1 a 1.000.00 de usuários

nginx/php+fpm

LoadBalance

MasterReplica

nginx/php+fpmstorage

Servidores de busca

MCElastic Search

Page 72: De 1 a 1.000.00 de usuários

>100.000 Usuários

Page 73: De 1 a 1.000.00 de usuários

Topologia

Page 74: De 1 a 1.000.00 de usuários

DevOpsDevOps is a new term emerging from the collision of two major related trends. The first was also called “agile system administration” or “agile operations”; it sprang from applying newer Agile and Lean approaches to operations work.The second is a much expanded understanding of the value of collaboration between development and operations staff throughout all stages of the development lifecycle when creating and operating a service, and how important operations has become in our increasingly service-oriented world.

-Ernest Mueller, Aug 2, 2010 – Last Revised Jan 16, 2016

Page 75: De 1 a 1.000.00 de usuários

nginx/php+fpm

LoadBalance

Master

nginx/php+fpmstorage

MC Elastic Search

nginx/php+fpm

Replica Replica

Page 76: De 1 a 1.000.00 de usuários

nginx/php+fpm

LoadBalance

Master

nginx/php+fpmCDN

MC Elastic Search

nginx/php+fpm

Replica Replica

storage

Page 77: De 1 a 1.000.00 de usuários

nginx/php+fpm

LoadBalance

Master

nginx/php+fpmCDN

MC Elastic Search

nginx/php+fpm

Replica Replica

storage

Elastic Search Elastic Search

Page 78: De 1 a 1.000.00 de usuários

nginx/php+fpm

LoadBalance

Master

nginx/php+fpmCDN

MC Elastic Search

nginx/php+fpm

Replica Replica

storage

Elastic Search Elastic SearchMC MC

Page 79: De 1 a 1.000.00 de usuários

nginx/php+fpm

LoadBalance

nginx/php+fpmAkamai nginx/php+fpm

storage

Akamai

Page 80: De 1 a 1.000.00 de usuários

nginx/php+fpm

LoadBalance

nginx/php+fpm

Akamai

nginx/php+fpm

Page 81: De 1 a 1.000.00 de usuários

>1.000.000 Usuários

Page 82: De 1 a 1.000.00 de usuários

SOAService-Oriented Architecture.

Page 83: De 1 a 1.000.00 de usuários

SOA na prática➔ Serviços por módulos independentes

➔ Administrados e escalados independentemente

➔ Flexibilidade e entendimento de cada função

➔ Automatizar processos operacionais

➔ SOA + Modularização = Agilidade

Page 84: De 1 a 1.000.00 de usuários
Page 85: De 1 a 1.000.00 de usuários

MicroServices

Page 86: De 1 a 1.000.00 de usuários

LoadBalance

Route 53

LoadBalance

nginx/php+fpm nginx/php+fpm nginx/php+fpm nginx/php+fpm

LoadBalance

Master

Replica Replica

LBs, LBs e LBs

Page 87: De 1 a 1.000.00 de usuários

Master

Master

Master

Master

Master

Master

Master

Master

DataBase - Shard

Page 88: De 1 a 1.000.00 de usuários

Brokers

Page 89: De 1 a 1.000.00 de usuários

RabbitMq

Worker - P API Pedidos

Pagamento - Adquirente

Checkout Ativo

- Checkout Ativo- Cielo- Redes- Stone

RabbitMq

Cielo Redes Stone Trap

Gateway - Cielo

API - Redis

Redis

1 - Teste de Cartão de crédito

Processo depagamento

FailBackEntre as adquirentes

Status de processo

Cielo Redes Stone

API Users

Consulta existência do cartão

API Geradores

Page 90: De 1 a 1.000.00 de usuários

nginx/php+fpm

LoadBalance

Master

nginx/php+fpmCDN

MCElastic Search

nginx/php+fpm

Replica Replica

storage

Elastic Search

Elastic SearchMC MC

Worker Worker

Worker Worker

RabbitMQ

Worker Worker

Worker Worker

RabbitMQ

Worker Worker

RabbitMQ