SlideShare uma empresa Scribd logo
1 de 91
Baixar para ler offline
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 mercado
Sistema 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 GBs
1 CPU
8 GBs
2 CPUs
16 GBs
4 CPUS
2 GBs
● Consiste em aumentar o poder
computacional
● Exige downtime do aplicativo
● Muito caro
● Haverá um limite
Escalabilidade ?
4 GBs
1 CPU
4 GBs
1 CPU
4 GBs
1 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
Cache
Guardar 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
Replica
Banco "não" escala, mais existe opções.
MySQL - Replica
App
Master ReplicaEscrita
Escrita
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ência
Agora 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+fpmCDN
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=memcached
session.save_handler = memcache
session.save_path = tcp://10.1.1.1:11211'
Sessões
nginx/php+fpm
LoadBalance
Master
nginx/php+fpmstorage
Logs
ELK
Logs - ELK - Stack
Logs
AutoScaling
Crescimento e redução automática de clusters.
nginx/php+fpm
LoadBalance
MasterReplica
nginx/php+fpmstorage
Autscaling
Memcach
ed
Autscaling
Indexação
Resultados 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
MC
Elastic Search
>100.000 Usuários
Topologia
DevOps
DevOps 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
SOA
Service-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 de
pagamento
FailBack
Entre 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
MC
Elastic
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
Bye.
felipeklerk@yahoo.com.br
linkedin.com/in/felipe-klerk-signorini
facebook.com/felipesignorini

Mais conteúdo relacionado

Mais procurados

Alta perfomance de aplicações PHP com Nginx
Alta perfomance de aplicações PHP com NginxAlta perfomance de aplicações PHP com Nginx
Alta perfomance de aplicações PHP com Nginx
Thiago Paes
 
Yaf - Um framework que roda sob uma extensão
Yaf - Um framework que roda sob uma extensãoYaf - Um framework que roda sob uma extensão
Yaf - Um framework que roda sob uma extensão
Thiago Paes
 
Cache e Performance (in portuguese)
Cache e Performance (in portuguese)Cache e Performance (in portuguese)
Cache e Performance (in portuguese)
Bruno Pedro
 

Mais procurados (20)

Alta perfomance de aplicações PHP com Nginx
Alta perfomance de aplicações PHP com NginxAlta perfomance de aplicações PHP com Nginx
Alta perfomance de aplicações PHP com Nginx
 
Performance em Java
Performance em JavaPerformance em Java
Performance em Java
 
PHP com Docker
PHP com DockerPHP com Docker
PHP com Docker
 
L'esprit de l'escalier
L'esprit de l'escalierL'esprit de l'escalier
L'esprit de l'escalier
 
Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7
 
Alta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxAlta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com Nginx
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis ter
 
Overview Sobre Varnish
Overview Sobre VarnishOverview Sobre Varnish
Overview Sobre Varnish
 
Alta Performance de Aplicações Web em PHP - Nginx
Alta Performance de Aplicações Web em PHP - NginxAlta Performance de Aplicações Web em PHP - Nginx
Alta Performance de Aplicações Web em PHP - Nginx
 
Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]
Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]
Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]
 
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
 
NoSQL Livre
NoSQL LivreNoSQL Livre
NoSQL Livre
 
NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.
 
Yaf - Um framework que roda sob uma extensão
Yaf - Um framework que roda sob uma extensãoYaf - Um framework que roda sob uma extensão
Yaf - Um framework que roda sob uma extensão
 
Dicas para Workflow WordPress + JavaScript - WordCamp Salvador
Dicas para Workflow WordPress + JavaScript - WordCamp SalvadorDicas para Workflow WordPress + JavaScript - WordCamp Salvador
Dicas para Workflow WordPress + JavaScript - WordCamp Salvador
 
Escalando API's com NodeJS, Docker e RabbitMQ
Escalando API's com NodeJS, Docker e RabbitMQEscalando API's com NodeJS, Docker e RabbitMQ
Escalando API's com NodeJS, Docker e RabbitMQ
 
UserParameter vs Zabbix Sender - 1º ZABBIX MEETUP DO INTERIOR-SP
UserParameter vs Zabbix Sender - 1º ZABBIX MEETUP DO INTERIOR-SPUserParameter vs Zabbix Sender - 1º ZABBIX MEETUP DO INTERIOR-SP
UserParameter vs Zabbix Sender - 1º ZABBIX MEETUP DO INTERIOR-SP
 
Debug de cabo a rabo
Debug de cabo a raboDebug de cabo a rabo
Debug de cabo a rabo
 
Zabbix
ZabbixZabbix
Zabbix
 
Cache e Performance (in portuguese)
Cache e Performance (in portuguese)Cache e Performance (in portuguese)
Cache e Performance (in portuguese)
 

Destaque

Έντυπο αίτησης
Έντυπο αίτησηςΈντυπο αίτησης
Έντυπο αίτησης
Olga Paizi
 

Destaque (12)

2013 gestion de programas europeos
2013 gestion de programas europeos 2013 gestion de programas europeos
2013 gestion de programas europeos
 
Gợi ý cực chi tiết 20 món cho bé bắt đầu ăn dặm kiểu nhật
Gợi ý cực chi tiết 20 món cho bé bắt đầu ăn dặm kiểu nhậtGợi ý cực chi tiết 20 món cho bé bắt đầu ăn dặm kiểu nhật
Gợi ý cực chi tiết 20 món cho bé bắt đầu ăn dặm kiểu nhật
 
Macroscop VMS (in Persian)
Macroscop VMS (in Persian)Macroscop VMS (in Persian)
Macroscop VMS (in Persian)
 
Έντυπο αίτησης
Έντυπο αίτησηςΈντυπο αίτησης
Έντυπο αίτησης
 
New Doc 15
New Doc 15New Doc 15
New Doc 15
 
Certificazione dele Competenze. Simone Lampis
Certificazione dele Competenze. Simone Lampis Certificazione dele Competenze. Simone Lampis
Certificazione dele Competenze. Simone Lampis
 
T8 chafla stalin ppt 3.4.
T8 chafla stalin ppt 3.4.T8 chafla stalin ppt 3.4.
T8 chafla stalin ppt 3.4.
 
Pancreatitis aguda
Pancreatitis agudaPancreatitis aguda
Pancreatitis aguda
 
Movement for Liveable London Street Talks - Amy Aeron-Thomas 5th July 2011
Movement for Liveable London Street Talks - Amy Aeron-Thomas 5th July 2011Movement for Liveable London Street Talks - Amy Aeron-Thomas 5th July 2011
Movement for Liveable London Street Talks - Amy Aeron-Thomas 5th July 2011
 
Movement for Liveable London Street Talks - Alexander Baxevanis 6th December ...
Movement for Liveable London Street Talks - Alexander Baxevanis 6th December ...Movement for Liveable London Street Talks - Alexander Baxevanis 6th December ...
Movement for Liveable London Street Talks - Alexander Baxevanis 6th December ...
 
Movement for Liveable London Street Talks - Nick Searl, 2nd September 2014
Movement for Liveable London Street Talks - Nick Searl, 2nd September 2014Movement for Liveable London Street Talks - Nick Searl, 2nd September 2014
Movement for Liveable London Street Talks - Nick Searl, 2nd September 2014
 
Git and github - Verson Control for the Modern Developer
Git and github - Verson Control for the Modern DeveloperGit and github - Verson Control for the Modern Developer
Git and github - Verson Control for the Modern Developer
 

Semelhante a De 1 a 1.000.00 de usuários

Desenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveisDesenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveis
elliando dias
 

Semelhante a De 1 a 1.000.00 de usuários (20)

Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHP
 
Desenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveisDesenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveis
 
Web Seminário sobre Varnish+Nginx+Apache
Web Seminário sobre Varnish+Nginx+ApacheWeb Seminário sobre Varnish+Nginx+Apache
Web Seminário sobre Varnish+Nginx+Apache
 
Cake Php
Cake PhpCake Php
Cake Php
 
PHP 10 CodeIgniter
PHP 10 CodeIgniterPHP 10 CodeIgniter
PHP 10 CodeIgniter
 
Curso de Performance and Tuning - Linux
Curso de Performance and Tuning - LinuxCurso de Performance and Tuning - Linux
Curso de Performance and Tuning - Linux
 
Cakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudouCakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudou
 
Introdução à Servlets e JSP
Introdução à Servlets e JSPIntrodução à Servlets e JSP
Introdução à Servlets e JSP
 
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
 
NoSQL com Zend Framework 2
NoSQL com Zend Framework 2NoSQL com Zend Framework 2
NoSQL com Zend Framework 2
 
Palestra
PalestraPalestra
Palestra
 
Big data para programadores convencionais
Big data para programadores convencionaisBig data para programadores convencionais
Big data para programadores convencionais
 
Cake PHP
Cake PHPCake PHP
Cake PHP
 
Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?
 
Palestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl WorkshopPalestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl Workshop
 
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearchXen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
 
Mongo Db - PHP Day Workshop
Mongo Db - PHP Day WorkshopMongo Db - PHP Day Workshop
Mongo Db - PHP Day Workshop
 
Programação Multiplataforma em Ambiente Web
Programação Multiplataforma em Ambiente WebProgramação Multiplataforma em Ambiente Web
Programação Multiplataforma em Ambiente Web
 
Apache Flink a Quarta Geração do Big Data
Apache Flink a Quarta Geração do Big DataApache Flink a Quarta Geração do Big Data
Apache Flink a Quarta Geração do Big Data
 

De 1 a 1.000.00 de usuários