Palestra feito na PHPConf - 2016
Apresento uma estrutra de escabilidade, passando pelos passos de crescimento de um software web.
Conceitos como cache, concorrências, storage para arquivos estáticos, servidores de busca, sessões em memória e afins.
10. 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
11. "Meoo coloca um MongoDB que sua aplicação vai voar"
NoSQL,
você realmente precisa?
12. 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
13. 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)
14. "Isso não é minha responsabilidade."
Arquitetura de aplicações
15. 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”
16. "O problema está no servidor."
Escalabilidade é
responsabilidade da Infra?
22. 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
23. 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
27. ● 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
59. 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
74. 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
83. 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
89. 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