De 1 a 1.000.00 de usuários
-
Upload
felipe-klerk-signorini -
Category
Software
-
view
54 -
download
1
Transcript of De 1 a 1.000.00 de usuários
De 1 a 1.000.000 de usuários
Felipe Klerk Signorini
DevOps - ativo.com
● Arquiteto de software● Infra estrutura● Desenvolvimento.
Por onde começar?
Não seja o programador StackOverflow
"Aqui as coisas sempre funcionaram assim..."
Cultura e conhecimento
Para os primeiros milhões de usuários a linguagem não importa.
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
"Meoo coloca um MongoDB que sua aplicação vai voar"
NoSQL, você realmente precisa?
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
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)
"Isso não é minha responsabilidade."
Arquitetura de aplicações
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”
"O problema está no servidor."
Escalabilidade é responsabilidade da Infra?
Escalabilidade Vs
Performance
1 Usuário
Apache/PHP e DB
>10 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
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
Apache/PHP
DataBase
>100 Usuários
CacheGuardar algo temporáriamente para uso posterior
● 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
HTTP
Cache - App
Routes Controller
DataBase
View
MIddleware
HTTP
Cache - App
Routes Controller
DataBase
View
MIddleware
Cache
View Object
Cache - View
Render
Controller
View Object Render
View Object Render
View Object
Cache - View
Render
Controller
View Object Render
View Object Render
Cache
Model
Cache - Models
Database
Controller
Model Database
Model
Cache - Models
Database
Controller
Model Database
Cache
get_file_contents
Cache - Request
HTTP
Controller
get_file_contents HTTP
Controller
get_file_contents
Cache - Request
HTTP
Controller
get_file_contents HTTP
Controller
Cache
SuperCache - Wordpress
Cache - Memoria
PHP/Script
Cache - OpCache
Parser Compile Execute
OutPut
PHP/Script
Cache - OpCache
Parser Execute
OutPut
Compile
Cache - Nginx
HTTP Routes Controller
DataBase
View
MIddleware
Cache - Nginx
HTTP Routes Controller
DataBase
View
MIddleware
Cache
Cache - Nginx
ReplicaBanco "não" escala, mais existe opções.
MySQL - Replica
App
Master ReplicaEscritaEscrita
Leitura
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
nginx/php+fpmReverse Cache
Master Replica
>1000 Usuários
ConcorrênciaAgora sim vamos falar de LoadBalances e AutoScaling.
Entenda que cada máquina deve ser Stateless, não pode conter nenhuma informação vital.
● Uploads de arquivos● Sessões do php● Logs
nginx/php+fpm
LoadBalance
Master Replica
nginx/php+fpm
LoadBalance
nginx/php+fpm
LoadBalance
Master Replica
nginx/php+fpmstorage
Static files
nginx/php+fpm
LoadBalance
Master Replica
nginx/php+fpm
CDN
CDNs
storage
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
nginx/php+fpm
LoadBalance
MasterReplica
nginx/php+fpmstorage
Sessões
Memcached
session_drive=memcachedsession.save_handler = memcachesession.save_path = tcp://10.1.1.1:11211'
Sessões
nginx/php+fpm
LoadBalance
Master
nginx/php+fpmstorage
Logs
ELK
Logs - ELK - Stack
Logs
AutoScalingCrescimento e redução automática de clusters.
nginx/php+fpm
LoadBalance
MasterReplica
nginx/php+fpmstorage
Autscaling
Memcached
Autscaling
IndexaçãoResultados de buscas, listagem de dados, seleção de dados de forma geral.
Servidores de busca
nginx/php+fpm
LoadBalance
MasterReplica
nginx/php+fpmstorage
Servidores de busca
MCElastic Search
>100.000 Usuários
Topologia
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
nginx/php+fpm
LoadBalance
Master
nginx/php+fpmstorage
MC Elastic Search
nginx/php+fpm
Replica Replica
nginx/php+fpm
LoadBalance
Master
nginx/php+fpmCDN
MC Elastic Search
nginx/php+fpm
Replica Replica
storage
nginx/php+fpm
LoadBalance
Master
nginx/php+fpmCDN
MC Elastic Search
nginx/php+fpm
Replica Replica
storage
Elastic Search Elastic Search
nginx/php+fpm
LoadBalance
Master
nginx/php+fpmCDN
MC Elastic Search
nginx/php+fpm
Replica Replica
storage
Elastic Search Elastic SearchMC MC
nginx/php+fpm
LoadBalance
nginx/php+fpmAkamai nginx/php+fpm
storage
Akamai
nginx/php+fpm
LoadBalance
nginx/php+fpm
Akamai
nginx/php+fpm
>1.000.000 Usuários
SOAService-Oriented Architecture.
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
MicroServices
LoadBalance
Route 53
LoadBalance
nginx/php+fpm nginx/php+fpm nginx/php+fpm nginx/php+fpm
LoadBalance
Master
Replica Replica
LBs, LBs e LBs
Master
Master
Master
Master
Master
Master
Master
Master
DataBase - Shard
Brokers
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
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
linkedin.com/in/felipe-klerk-signorini
facebook.com/felipesignorini