+ All Categories
Home > Technology > Técnicas para ser escalável com PHP

Técnicas para ser escalável com PHP

Date post: 22-Nov-2014
Category:
Upload: filipe-la-ruina
View: 857 times
Download: 0 times
Share this document with a friend
Description:
Uma visão das diversas técnicas disponíveis para melhorar a escalabilidade de uma aplicação. Exibição de ferramentas que trabalham bem com o PHP e que são muito utilizadas pela comunidade.
68
07/07/2012 The Developer's Conference 1 Técnicas para ser escalável com
Transcript
Page 1: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 1

Técnicas para ser escalável com

Page 2: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 2

Filipe La RuinaWorks @ ecompete.com.br

@filaruina

Page 3: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 3

Escalabilidade

Page 4: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 4

EscalabilidadeTécnicas não são regras!

Page 5: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 5

O que é?

Page 6: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 6

O que é?O que não é?

Page 7: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 7

O que é?O que não é?

➔ Performance

Page 8: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 8

O que é?O que não é?

➔ Performance

➔ Usar Tecnologia X

Page 9: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 9

O que é?O que não é?

➔ Performance

➔ Usar Tecnologia X

➔ Separação de Responsabilidades

Page 10: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 10

O que é?O que não é?

➔ Performance

➔ Usar Tecnologia X

➔ Separação de Responsabilidades

Page 11: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 11

Escalabilidade é uma característica desejável em todo o sistema, em uma rede ou em um processo, que indica sua habilidade de manipular uma porção crescente de trabalho de forma uniforme, ou estar preparado para crescer.

Page 12: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 12

O que é?

➔ Aguenta aumento no uso

Page 13: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 13

O que é?

➔ Aguenta aumento no uso

➔ Aguenta aumento nos dados

Page 14: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 14

O que é?

➔ Aguenta aumento no uso

➔ Aguenta aumento nos dados

➔ Fácil manutenção

Page 15: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 15

Vamos por Partes

Page 16: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 16

1º Passo Desenvolvimento

Page 17: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 17

Desenvolvimento

➔ Separação de Conceitos (OOP, Camadas, etc)

Page 18: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 18

Desenvolvimento

➔ Separação de Conceitos (OOP, Camadas, etc)

API Cliente

Page 19: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 19

Desenvolvimento

API

LB

API

API ClientDB

➔ Separação de Conceitos (OOP, Camadas, etc)

Page 20: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 20

Desenvolvimento

API

➔ Arquitetura Orientada a Serviços

Authentication

Product

Email

Client

Page 21: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 21

Desenvolvimento

➔ Use Controle de Versão

Page 22: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 22

Desenvolvimento

➔ Use Controle de Versão

Usa esse blz?

Page 23: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 23

Desenvolvimento

➔ Integração Contínua

Page 24: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 24

Desenvolvimento

➔ Integração Contínua

➔ Build Automatizado (e rápido)

Page 25: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 25

Desenvolvimento

➔ Integração Contínua

➔ Build Automatizado (e rápido)

➔ Testes

Page 26: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 26

Desenvolvimento

➔ Integração Contínua

➔ Build Automatizado (e rápido)

➔ Testes

➔ Verifique Qualidade

http://phpqatools.org

Page 27: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 27

Desenvolvimento

➔ Atualize-se

Page 28: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 28

Desenvolvimento

➔ Atualize-se

THIS

Page 29: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 29

2º Passo Monitoramento

Page 30: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 30

Monitoramento

➔ Por que?

Page 31: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 31

Monitoramento

➔ Por que?

Page 32: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 32

Monitoramento

➔ Por que?

➔ Identificar Gargalos (+ usuários => + tempo gasto)

Page 33: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 33

Monitoramento

➔ Por que?

➔ Identificar Gargalos (+ usuários => + tempo gasto)

➔ Prevenir Problemas

Page 34: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 34

Monitoramento

➔ Por que?

➔ Identificar Gargalos (+ usuários => + tempo gasto)

➔ Prevenir Problemas

➔ Poder dormir tranquilo

Page 35: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 35

Monitoramento

➔ Ferramentas

Page 36: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 36

Monitoramento

➔ Ferramentas

➔ Top (é sério)

Page 37: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 37

Monitoramento

➔ Ferramentas

➔ Top (é sério)

Load: 1, 5, 15 minutos

Page 38: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 38

Monitoramento

➔ Ferramentas

➔ Top (é sério)

Load: 1, 5, 15 minutos

Memória e Swap

Page 39: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 39

Monitoramento

➔ Ferramentas

➔ Top (é sério)

Load: 1, 5, 15 minutos

Memória e Swap

Processos

Page 40: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 40

Monitoramento

➔ Ferramentas

➔ Profiling

Page 41: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 41

Monitoramento

➔ Ferramentas

➔ MySql SHOW (tem tudo lá! http://dev.mysql.com/doc/refman/5.0/en/show.html)

➔ Slow Query Log

➔ Explain Query

Page 42: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 42

Monitoramento

➔ Ferramentas

➔ Monitoramento de Infra

Page 43: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 43

3º Passo Crescimento

Page 44: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 44

Crescimento

➔ Formas de Crescer

Page 45: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 45

Crescimento

➔ Formas de Crescer

➔ Horizontalmente

AppServerAppServer AppServer AppServerAppServer

Client

Load Balancer

Page 46: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 46

Crescimento

➔ Formas de Crescer

➔ Horizontalmente

➔ VerticalmenteAppServer AppServer

Client

Load Balancer

Page 47: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 47

Crescimento

➔ Cache

Page 48: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 48

Crescimento

➔ Cache

➔ HTTP Cache (Diminui quantidade de requests)

Page 49: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 49

Crescimento

➔ Cache

➔ Opcode Cache (APC)

http://www.php.net/apc

Page 50: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 50

Crescimento

➔ Cache

➔ Memory Cache (memcached)

https://github.com/php-memcached-dev/php-memcachedhttp://pecl.php.net/package/memcached

AppDB Memcached

Page 51: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 51

Crescimento

➔ Replicação

➔ Master (Escritas)

➔ Slaves (Leituras)

App

MasterSlave

SlaveSlave

SlaveSlave

Read

Slave

Write

Page 52: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 52

Crescimento

➔ Índices em tabelas

Page 53: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 53

Crescimento

➔ Índices em tabelas

Page 54: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 54

Crescimento

➔ Índices em tabelas

Page 55: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 55

Crescimento

➔ Índices em tabelas

➔ Preferência a campos com baixa cardinalidade

Page 56: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 56

Crescimento

➔ Índices em tabelas

➔ Preferência a campos com baixa cardinalidade

➔ Ocupam mais espaço em disco

Page 57: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 57

Crescimento

➔ Índices em tabelas

➔ Preferência a campos com baixa cardinalidade

➔ Ocupam mais espaço em disco

➔ Índices são agrupamentos

Page 58: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 58

Crescimento

➔ Índices em tabelas

➔ Preferência a campos com baixa cardinalidade

➔ Ocupam mais espaço em disco

➔ Índices são agrupamentos

➔ Diminuem o tempo de escrita

Page 59: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 59

Crescimento

➔ Distribuição de Tarefas

Page 60: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 60

Crescimento

➔ Distribuição de Tarefas

➔ Gearmanhttp://gearman.org/

http://php.net/gearman

Page 61: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 61

Crescimento

➔ Distribuição de Tarefas

➔ Gearmanhttp://gearman.org/

http://php.net/gearman

Page 62: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 62

Crescimento

➔ Distribuição de Tarefas

➔ Gearmanhttp://gearman.org/

http://php.net/gearman

Page 63: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 63

Mais Umas Coisas

Page 64: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 64

Mais Umas Coisas

➔ Entenda o que está acontecendo

➔ Análise os custos antes de tomar uma decisão

➔ Use um proxy reverso (nginx, squid, Varnish)

➔ Lado cliente é importante

Page 65: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 65

Case – Bolsa de Mulher

by: @zanaca

Page 66: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 66

Case – Bolsa de Mulher

~ 7K Simultâneosby: @zanaca

Page 67: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 67

ReferênciasCases interessantes

Tumblr: http://bit.ly/z4cdCG

YouPorn: http://bit.ly/Hhz0PV (Sério!)

Facebook: http://b.qr.ae/gB5C6b

Digg: http://bit.ly/Xp4NW

Flickr: http://bit.ly/1Jywk1

Livros

http://oreil.ly/N7LH6b http://oreil.ly/pnKqJG http://oreil.ly/LwjPXd

Page 68: Técnicas para ser escalável com PHP

07/07/2012 The Developer's Conference 68

Obrigado!Agradecimentos:● @alganet e @duodraco pela oportunidade● @searleoliveira pela ajuda com MySql● @zanaca pela lembrança da arquitetura do Bolsa de Mulher● @igorpsantos pela ajuda com a Infra

@filaruina


Recommended