SlideShare uma empresa Scribd logo
1 de 51
Baixar para ler offline
Building	
  scalable	
  applica/ons	
  

Rachad	
  Honein	
  
Gerente	
  de	
  Engenharia	
  SaaS	
  -­‐	
  Locaweb	
  
O	
  Que	
  fazemos	
  no	
  SaaS?	
  
Webstore	
  
•  ~	
  3600	
  lojas	
  a/vas	
  
	
  
•  >	
  250.000	
  Page	
  views	
  /	
  dia	
  
•  Picos	
  de	
  2500	
  visitas	
  a/vas	
  

Google	
  Analy/cs:	
  Domingo	
  6/10/2013	
  as	
  13:30	
  
Email	
  Marke/ng	
  
•  >	
  32.000	
  Contas	
  a/vas	
  
•  Media	
  de	
  10.000	
  contatos	
  por	
  conta	
  
•  Contas	
  com	
  mais	
  que	
  5	
  Milhões	
  de	
  contatos	
  
•  Acima	
  de	
  1	
  Bi	
  de	
  envios	
  por	
  mês	
  
COMO	
  ESCALAMOS?	
  
ANTES	
  DE	
  MAIS	
  
NADA…	
  
COMO	
  
TRABALHAMOS?	
  
METODOLOGIAS	
  	
  ÁGEIS	
  
Scrum	
  
Pair	
  Programming	
  
Kanban	
  

Stand	
  up	
  mee/ngs	
  
Retrospec/ves	
  
Planning	
  
TIMES	
  DE	
  2	
  A	
  5	
  DEVS	
  
PARA	
  CADA	
  PRODUTO	
  
3	
  DEPLOYS/SEMANA	
  
POR	
  PRODUTO	
  
Como	
  trabalhamos?	
  
Linguagens	
  de	
  programação:	
  
	
  
–  Ruby	
  

–  Python	
  
–  Lua	
  
–  Go	
  
–  Java	
  
	
  
–  Javascript	
  
Como	
  trabalhamos?	
  
Base	
  de	
  dados:	
  
Como	
  trabalhamos?	
  
Linux:	
  
	
  
	
  

Debian	
  Squeeze	
  /Wheezy	
  
Como	
  trabalhamos?	
  
Stacks:	
  
	
  
	
  
Como	
  trabalhamos?	
  
Organização	
  =	
  Produ/vidade	
  
	
  
	
  
But	
  
HOW	
  TO	
  SCALE?	
  
How	
  to	
  scale?	
  
Não	
  poderíamos	
  jogar	
  vários	
  servidores	
  na	
  
receita	
  e	
  resolver	
  o	
  problema?	
  
	
  
	
  
How	
  to	
  scale?	
  

	
  
	
  Mas	
  o	
  que	
  é	
  escalabilidade?	
  
Escalabilidade	
  
É	
  isso:	
  
	
  
É	
  uma	
  desejável	
  
propriedade	
  do	
  sistema	
  
que	
  indica	
  a	
  habilidade	
  de	
  
suportar	
  grande	
  
quan/dade	
  de	
  trabalho,	
  
ou	
  	
  facilidade	
  de	
  
crescimento	
  quando	
  há	
  
demanda.	
  

Mas	
  não	
  é	
  isso:	
  
•  Recursos	
  de	
  servidor	
  
(2Ghz,	
  24Gb	
  Ram	
  …)	
  
•  Sistema	
  operacional	
  
(Solaris,	
  Linux,	
  
windows)	
  
•  Technologia	
  (	
  Java	
  vs	
  
Django	
  vs	
  Cake	
  PHP	
  vs	
  
Ruby	
  on	
  Rails)	
  
Performance	
  vs	
  Scalability	
  
	
  
	
  
Performance	
  

VS	
  
Scalibility	
  
How	
  to	
  scale?	
  
	
  
	
  
	
  
Quanto	
  ao	
  Solware,	
  usaríamos	
  C?	
  
	
  
	
  
How	
  to	
  scale?	
  
	
  
	
  

	
  

	
  

	
  	
  

	
  
Não!	
  	
  
Vamos	
  usar	
  PHP,	
  Ruby	
  e	
  Python	
  
How	
  to	
  scale?	
  
	
  
	
  

	
  

	
  

	
  	
  

	
  
Mas	
  PHP,	
  Ruby	
  e	
  Python	
  não	
  são	
  lentos?	
  
How	
  to	
  scale?	
  
	
  
	
  
Isso	
  não	
  importa!	
  São	
  rápidos	
  o	
  suficiente.	
  
	
  
	
  
O	
  que	
  importa:	
  Tempo	
  de	
  desenvolvimento	
  
How	
  to	
  scale?	
  

• 
• 
• 
• 
• 
• 
• 
	
  

O	
  que	
  desejamos?	
  
	
  
Escalabilidade	
  
Alta	
  disponibilidade	
  
Performance	
  
Gerenciamento	
  
Custo	
  mais	
  baixo	
  (o/mização)	
  
Muitas	
  funcionalidades	
  
Gerar	
  receita	
  $$$$	
  
How	
  to	
  scale?	
  
Verdade	
  #1:	
  
Seu	
  sistema	
  não	
  vai	
  escalar	
  se	
  não	
  foi	
  
desenhado	
  para	
  escalar	
  
How	
  to	
  scale?	
  
Verdade	
  #2:	
  
Mesmo	
  se	
  for	
  desenhado	
  para	
  escalar,	
  vai	
  doer!	
  

Quase	
  sempre	
  
Caso	
  de	
  uso:	
  Um	
  produto	
  de	
  muito	
  sucesso	
  

Fases	
  de	
  crescimento	
  
Fase	
  1:	
  Boostrapping	
  –	
  The	
  happy	
  beginning	
  
	
  
Fase	
  1:	
  Boostrapping	
  –	
  The	
  happy	
  beginning	
  
	
  
•  Arquitetura	
  simples:	
  
–  Firewall	
  +	
  Load	
  Balancer	
  (F5,	
  LVS,	
  HaProxy	
  …)	
  
–  Alguns	
  servidores	
  web	
  
–  Base	
  de	
  dados	
  
–  Storage	
  

•  Complexidade	
  baixa	
  
•  Risco	
  baixo	
  
•  Não	
  tem	
  muita	
  redundância,	
  custo	
  operacional	
  
baixo	
  =>	
  Melhor	
  cenário	
  para	
  Startups	
  em	
  geral	
  
Load	
  Balancer	
  

Internet	
  

Fase	
  1:	
  Boostrapping	
  –	
  The	
  happy	
  beginning	
  
	
  

WebServers	
  

Database	
  

Storage	
  
Success:	
  O	
  négocio	
  está	
  dando	
  certo,	
  gerando	
  
receita	
  	
  

	
  

Risco	
  não	
  é	
  mais	
  uma	
  opção	
  
Fase	
  2:	
  O	
  mesmo,	
  mas	
  começando	
  a	
  crescer	
  
	
  
•  Mais	
  redundâncias	
  
–  Mais	
  Servidores	
  Web	
  	
  
–  Mais	
  Load	
  Balancers	
  
–  Replicação	
  de	
  Base	
  de	
  dados	
  
	
  

•  Ainda	
  simples	
  de	
  ponto	
  de	
  vista	
  Aplicação	
  
–  A	
  aplicação	
  con/nua	
  a	
  mesma,	
  é	
  só	
  infra	
  
Fase	
  2:	
  O	
  mesmo,	
  mas	
  começando	
  a	
  crescer	
  
	
  

Load	
  Balancer	
  

Internet	
  

Slave	
  

WebServers	
  

Master	
  
Database	
  

Storage	
  
Publicidade	
  
	
  
	
  
– Google	
  Ads	
  
– Ar/gos	
  nas	
  revistas	
  
– Eventos	
  de	
  patrocino	
  
Fase	
  3:	
  A	
  dor	
  começou	
  
	
  
•  Mais	
  redundâncias	
  ainda!	
  
–  Servidor	
  de	
  Varnish	
  
–  Mais	
  o/mização	
  no	
  banco	
  
–  Mais	
  redondância	
  no	
  banco	
  

•  Necessário	
  mexer	
  na	
  aplicação	
  
–  Servidor	
  de	
  sessão	
  
–  Mais	
  Cache	
  	
  
=>	
  mais	
  cache	
  para	
  invalidar	
  direito	
  

	
  
Fase	
  3:	
  A	
  dor	
  começou	
  
	
  
Memcached/Redis	
  

Load	
  Balancer	
  

Internet	
  

Slaves	
  

Database	
  

Varnish	
  
WebServers	
  

SSD	
  
Sta/c	
  Files	
  
Storage	
  
Fase	
  3:	
  A	
  dor	
  começou	
  
	
  

Gerenciar	
  está	
  mais	
  complexo	
  e	
  mais	
  
dolorido!	
  
Produto	
  de	
  sucesso	
  
	
  
Muitas	
  assinaturas	
  
Churn	
  Baixo	
  
Mais	
  Inves/mento	
  =	
  Mais	
  Publicidade	
  
	
  
Entrevista	
  dos	
  founders	
  na	
  TV	
  
Mais	
  Google	
  Ads	
  
Mais	
  Eventos	
  de	
  patrocino	
  
Fase	
  4:	
  Está	
  doendo	
  mais	
  ainda!	
  
	
  

•  Ainda	
  mais	
  cache	
  

–  Clusters	
  Memcached,	
  Redis	
  e	
  outros	
  

•  Replicação	
  não	
  funciona	
  	
  para	
  tudo	
  
–  Replicação	
  leva	
  muito	
  tempo	
  (slaves	
  replicam	
  
devagar)	
  
–  Isola	
  escrita	
  da	
  leitura	
  

•  “Database	
  par//oning”	
  salva	
  o	
  dia	
  

–  Algumas	
  das	
  funcionalidades	
  tem	
  os	
  próprios	
  bancos	
  

•  Repensar	
  na	
  modelagem	
  da	
  base	
  de	
  dados	
  
–  “Denormalizar"	
  a	
  modelagem	
  
Fase	
  4:	
  Está	
  doendo	
  mais	
  ainda!	
  
	
  

Repensar	
  o	
  código	
  para	
  suportar	
  toda	
  essa	
  loucura	
  
–  Devs	
  nunca	
  fizeram	
  isso	
  antes	
  
–  Google	
  não	
  tem	
  resposta	
  
–  StackOverflow	
  também	
  
Fase	
  4:	
  Está	
  doendo	
  mais	
  ainda!	
  
	
  
Clusters	
  
Memcached/Redis	
  

Load	
  Balancer	
  

Internet	
  

Reads	
  Cluster

Varnish	
  
Cluster	
  

WebServers	
  

Writes	
  
Cluster	
  
SSD	
  

Sta/c	
  Files	
  

SSD	
  
Storage	
  Cluster	
  
Produto	
  de	
  sucesso	
  
	
  
Muitas	
  assinaturas	
  VS	
  Churn	
  Baixo	
  

Mais	
  Inves/mento	
  =	
  Mais	
  Publicidade	
  
	
  
Spot	
  no	
  fantás/co	
  
Mais	
  Google	
  Ads	
  
Está	
  bombando	
  de	
  assinaturas.	
  	
  
	
  
Fase	
  5:	
  Pânico!	
  
	
  
•  Alguém	
  pode	
  nos	
  ajudar???	
  
•  Por	
  que	
  não	
  fizemos	
  isso	
  na	
  fase	
  de	
  desenho	
  
da	
  arquitetura?	
  
•  Criar	
  clusters	
  por	
  usuários	
  
–  Divide	
  and	
  Conquer	
  
–  Baseado	
  em	
  grupos	
  de	
  usuários,	
  criar	
  ambientes	
  
totalmente	
  separados	
  

•  Smart	
  rou/ng	
  para	
  saber	
  onde	
  cada	
  usuário	
  
está	
  
Fase	
  5:	
  Swimlane	
  
	
  

Internet	
  

Redis	
  

Smart	
  Router	
  

Usuários	
  com	
  
Login	
  de	
  A	
  a	
  C	
  

Usuários	
  com	
  
Login	
  de	
  D	
  a	
  F	
  

Usuários	
  com	
  
Login	
  de	
  G	
  a	
  I	
  
Fase	
  6:	
  Está	
  melhorando!	
  
	
  
•  Aplicação	
  escalável	
  
•  Performance	
  desejável	
  
•  Agora	
  podemos	
  retomar	
  o	
  desenvolvimento	
  
de	
  novos	
  features	
  
•  O/mização	
  de	
  código	
  e	
  refatoração	
  
•  Ainda	
  crescendo,	
  mas	
  gerenciável	
  
Fase	
  7:	
  O	
  futuro	
  é	
  o	
  horizonte!	
  
	
  

	
  

Se	
  sobrevivemos	
  até	
  aqui,	
  
provavelmente	
  nós	
  vamos	
  
sobreviver	
  pra	
  sempre!	
  Ou	
  
não	
  …	
  
Bônus	
  
• 
• 
• 
• 
• 
• 

Envio	
  de	
  emails	
  é	
  sempre	
  assíncrono	
  
MongoDB	
  é	
  caro!	
  Nosso	
  mente	
  é	
  relacional	
  
Redis	
  é	
  seu	
  amigo	
  mais	
  fiel	
  
Memcached	
  também	
  
Usem	
  NewRelic	
  em	
  produção	
  
Usem	
  Configura/on	
  Management	
  
–  Chef	
  
–  Puppet	
  
–  CF	
  Engine	
  

•  Nunca	
  servem	
  imagens	
  pela	
  VM!	
  Usem	
  CDN,	
  Varnish	
  com	
  storage,	
  
S3,	
  CloudFront	
  
•  Divide	
  sua	
  aplicação	
  em	
  várias	
  aplicações	
  
•  Nginx	
  +	
  Lua	
  Module	
  =	
  Smart	
  Rou/ng	
  made	
  easy	
  
Obrigado	
  
PERGUNTAS?	
  
Email:	
  rachad.honein@gmail.com

	
  Twi•er:	
  @racx	
  

Mais conteúdo relacionado

Mais procurados

Fazendo milagres com WordPress
Fazendo milagres com WordPressFazendo milagres com WordPress
Fazendo milagres com WordPressRafael Funchal
 
Performance - Acelere seu site! Na web tempo é mais que dinheiro.
Performance - Acelere seu site! Na web tempo é mais que dinheiro.Performance - Acelere seu site! Na web tempo é mais que dinheiro.
Performance - Acelere seu site! Na web tempo é mais que dinheiro.Gustavo Corrêa Alves
 
Instalando e configurando o WordPress local
Instalando e configurando o WordPress localInstalando e configurando o WordPress local
Instalando e configurando o WordPress localDeblyn Prado
 
Conteúdo web
Conteúdo webConteúdo web
Conteúdo webMateada
 
Dicas e truques para desenvolver projetos web utilizando WordPress
Dicas e truques para desenvolver projetos web utilizando WordPressDicas e truques para desenvolver projetos web utilizando WordPress
Dicas e truques para desenvolver projetos web utilizando WordPressLeo Baiano
 
CMS Livres Gestao de conhecimento para web
CMS Livres   Gestao de conhecimento para webCMS Livres   Gestao de conhecimento para web
CMS Livres Gestao de conhecimento para webPaulino Michelazzo
 
Fazendo de tudo com WordPress
Fazendo de tudo com WordPressFazendo de tudo com WordPress
Fazendo de tudo com WordPressRafael Funchal
 
Melhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPressMelhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPressJulian Fernandes
 
Reduzindo Tempo de Resposta do Servidor - WordCamp BH 2014
Reduzindo Tempo de Resposta do Servidor - WordCamp BH 2014Reduzindo Tempo de Resposta do Servidor - WordCamp BH 2014
Reduzindo Tempo de Resposta do Servidor - WordCamp BH 2014Celso Fernandes
 
Performance Front-end
Performance Front-endPerformance Front-end
Performance Front-endDescomplica
 
20 coisas que você precisa saber sobre hospedagem de sites
20 coisas que você precisa saber sobre hospedagem de sites20 coisas que você precisa saber sobre hospedagem de sites
20 coisas que você precisa saber sobre hospedagem de sitesUOLHOST
 
FISL17 - Vinícius Lourenço | WordPress - Como começar e o que dá para ser feito?
FISL17 - Vinícius Lourenço | WordPress - Como começar e o que dá para ser feito?FISL17 - Vinícius Lourenço | WordPress - Como começar e o que dá para ser feito?
FISL17 - Vinícius Lourenço | WordPress - Como começar e o que dá para ser feito?Vinícius Lourenço
 
Desenvolvendo para WordPress com Docker, Git e WP-CLI
Desenvolvendo para WordPress com Docker, Git e WP-CLIDesenvolvendo para WordPress com Docker, Git e WP-CLI
Desenvolvendo para WordPress com Docker, Git e WP-CLIRudá Almeida
 
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvensDrupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvensPaulino Michelazzo
 
Como eu aprendo WordPress?
Como eu aprendo WordPress?Como eu aprendo WordPress?
Como eu aprendo WordPress?Breno Alves
 
WordCamp Fortaleza 2016 - Vinícius Lourenço | tAPIoca com WooCommerce
WordCamp Fortaleza 2016 - Vinícius Lourenço | tAPIoca com WooCommerceWordCamp Fortaleza 2016 - Vinícius Lourenço | tAPIoca com WooCommerce
WordCamp Fortaleza 2016 - Vinícius Lourenço | tAPIoca com WooCommerceVinícius Lourenço
 
Springpoint São Paulo 2016 - Vinícius Lourenço | WordPress for Dummies
Springpoint São Paulo 2016 - Vinícius Lourenço | WordPress for DummiesSpringpoint São Paulo 2016 - Vinícius Lourenço | WordPress for Dummies
Springpoint São Paulo 2016 - Vinícius Lourenço | WordPress for DummiesVinícius Lourenço
 
Automattic a empresa por trás do WordPress.com e muito mais
Automattic a empresa por trás do WordPress.com e muito maisAutomattic a empresa por trás do WordPress.com e muito mais
Automattic a empresa por trás do WordPress.com e muito maisRafael Funchal
 

Mais procurados (20)

Fazendo milagres com WordPress
Fazendo milagres com WordPressFazendo milagres com WordPress
Fazendo milagres com WordPress
 
Performance - Acelere seu site! Na web tempo é mais que dinheiro.
Performance - Acelere seu site! Na web tempo é mais que dinheiro.Performance - Acelere seu site! Na web tempo é mais que dinheiro.
Performance - Acelere seu site! Na web tempo é mais que dinheiro.
 
Instalando e configurando o WordPress local
Instalando e configurando o WordPress localInstalando e configurando o WordPress local
Instalando e configurando o WordPress local
 
Conteúdo web
Conteúdo webConteúdo web
Conteúdo web
 
Dicas e truques para desenvolver projetos web utilizando WordPress
Dicas e truques para desenvolver projetos web utilizando WordPressDicas e truques para desenvolver projetos web utilizando WordPress
Dicas e truques para desenvolver projetos web utilizando WordPress
 
CMS Livres Gestao de conhecimento para web
CMS Livres   Gestao de conhecimento para webCMS Livres   Gestao de conhecimento para web
CMS Livres Gestao de conhecimento para web
 
Fazendo de tudo com WordPress
Fazendo de tudo com WordPressFazendo de tudo com WordPress
Fazendo de tudo com WordPress
 
Melhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPressMelhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPress
 
Minicurso Web. Front-end e HTML5 (parte 2)
Minicurso Web. Front-end e HTML5 (parte 2)Minicurso Web. Front-end e HTML5 (parte 2)
Minicurso Web. Front-end e HTML5 (parte 2)
 
Reduzindo Tempo de Resposta do Servidor - WordCamp BH 2014
Reduzindo Tempo de Resposta do Servidor - WordCamp BH 2014Reduzindo Tempo de Resposta do Servidor - WordCamp BH 2014
Reduzindo Tempo de Resposta do Servidor - WordCamp BH 2014
 
Performance Front-end
Performance Front-endPerformance Front-end
Performance Front-end
 
20 coisas que você precisa saber sobre hospedagem de sites
20 coisas que você precisa saber sobre hospedagem de sites20 coisas que você precisa saber sobre hospedagem de sites
20 coisas que você precisa saber sobre hospedagem de sites
 
FISL17 - Vinícius Lourenço | WordPress - Como começar e o que dá para ser feito?
FISL17 - Vinícius Lourenço | WordPress - Como começar e o que dá para ser feito?FISL17 - Vinícius Lourenço | WordPress - Como começar e o que dá para ser feito?
FISL17 - Vinícius Lourenço | WordPress - Como começar e o que dá para ser feito?
 
Desenvolvendo para WordPress com Docker, Git e WP-CLI
Desenvolvendo para WordPress com Docker, Git e WP-CLIDesenvolvendo para WordPress com Docker, Git e WP-CLI
Desenvolvendo para WordPress com Docker, Git e WP-CLI
 
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvensDrupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
 
CMS Livres na Dataprev
CMS Livres na DataprevCMS Livres na Dataprev
CMS Livres na Dataprev
 
Como eu aprendo WordPress?
Como eu aprendo WordPress?Como eu aprendo WordPress?
Como eu aprendo WordPress?
 
WordCamp Fortaleza 2016 - Vinícius Lourenço | tAPIoca com WooCommerce
WordCamp Fortaleza 2016 - Vinícius Lourenço | tAPIoca com WooCommerceWordCamp Fortaleza 2016 - Vinícius Lourenço | tAPIoca com WooCommerce
WordCamp Fortaleza 2016 - Vinícius Lourenço | tAPIoca com WooCommerce
 
Springpoint São Paulo 2016 - Vinícius Lourenço | WordPress for Dummies
Springpoint São Paulo 2016 - Vinícius Lourenço | WordPress for DummiesSpringpoint São Paulo 2016 - Vinícius Lourenço | WordPress for Dummies
Springpoint São Paulo 2016 - Vinícius Lourenço | WordPress for Dummies
 
Automattic a empresa por trás do WordPress.com e muito mais
Automattic a empresa por trás do WordPress.com e muito maisAutomattic a empresa por trás do WordPress.com e muito mais
Automattic a empresa por trás do WordPress.com e muito mais
 

Semelhante a Building Scalable Apps: 4 Phases of Growth

Matando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejistaMatando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejistaJosé Roberto Araújo
 
Pangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformPangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformAndré Paulovich
 
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOpsComo automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOpsRafael Salerno de Oliveira
 
O que vi na QCon 2012 São Paulo
O que vi na QCon 2012 São PauloO que vi na QCon 2012 São Paulo
O que vi na QCon 2012 São PauloIsmael
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsJosé Alexandre Macedo
 
TDC2016SP - Versionando sua infraestrutura: Como e porque fazer, baseado em c...
TDC2016SP - Versionando sua infraestrutura: Como e porque fazer, baseado em c...TDC2016SP - Versionando sua infraestrutura: Como e porque fazer, baseado em c...
TDC2016SP - Versionando sua infraestrutura: Como e porque fazer, baseado em c...tdc-globalcode
 
De zero a cem em cloud computing transformando idéias em aplicações em pouco...
De zero a cem em cloud computing  transformando idéias em aplicações em pouco...De zero a cem em cloud computing  transformando idéias em aplicações em pouco...
De zero a cem em cloud computing transformando idéias em aplicações em pouco...Ricardo Martinelli de Oliveira
 
Guiao demotecnica
Guiao demotecnicaGuiao demotecnica
Guiao demotecnicaSilvio Dias
 
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...Mario Guedes
 
Precisamos de um barco maior introdução ao dimensionamento de aplicações
Precisamos de um barco maior introdução ao dimensionamento de aplicaçõesPrecisamos de um barco maior introdução ao dimensionamento de aplicações
Precisamos de um barco maior introdução ao dimensionamento de aplicaçõesJackson F. de A. Mafra
 
Carreira de Desenvolvimento
Carreira de DesenvolvimentoCarreira de Desenvolvimento
Carreira de DesenvolvimentoAlvaro Viebrantz
 
Comércio Eletrônico - Aula 8 - Planejamento e Implementação - Parte 1
Comércio Eletrônico - Aula 8 - Planejamento e Implementação - Parte 1Comércio Eletrônico - Aula 8 - Planejamento e Implementação - Parte 1
Comércio Eletrônico - Aula 8 - Planejamento e Implementação - Parte 1Ueliton da Costa Leonidio
 
TDC2018SP | Trilha UX - Deploy Continuo de Software Legado: Loucura ou Genial...
TDC2018SP | Trilha UX - Deploy Continuo de Software Legado: Loucura ou Genial...TDC2018SP | Trilha UX - Deploy Continuo de Software Legado: Loucura ou Genial...
TDC2018SP | Trilha UX - Deploy Continuo de Software Legado: Loucura ou Genial...tdc-globalcode
 
Big Data, Performance, Posix, RTB no mercado de publicidade online
Big Data, Performance, Posix, RTB no mercado de publicidade onlineBig Data, Performance, Posix, RTB no mercado de publicidade online
Big Data, Performance, Posix, RTB no mercado de publicidade onlineTiago Peczenyj
 
Iniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando PimentaIniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando Pimentamichel adriano medeiros
 
Webinar: Introdução à Distribuição Contínua na AWS
Webinar: Introdução à Distribuição Contínua na AWSWebinar: Introdução à Distribuição Contínua na AWS
Webinar: Introdução à Distribuição Contínua na AWSAmazon Web Services LATAM
 
Lean, Kanban e Kaizen para sua área de Tecnologia
Lean, Kanban e Kaizen para sua área de TecnologiaLean, Kanban e Kaizen para sua área de Tecnologia
Lean, Kanban e Kaizen para sua área de TecnologiaRodrigo Yoshima
 
Vivenciando dev ops para além da automação de infraestrutura 2.0
Vivenciando dev ops para além da automação de infraestrutura 2.0Vivenciando dev ops para além da automação de infraestrutura 2.0
Vivenciando dev ops para além da automação de infraestrutura 2.0Diego Pacheco
 

Semelhante a Building Scalable Apps: 4 Phases of Growth (20)

Matando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejistaMatando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejista
 
Pangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformPangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud Platform
 
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOpsComo automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
 
O que vi na QCon 2012 São Paulo
O que vi na QCon 2012 São PauloO que vi na QCon 2012 São Paulo
O que vi na QCon 2012 São Paulo
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
 
TDC2016SP - Versionando sua infraestrutura: Como e porque fazer, baseado em c...
TDC2016SP - Versionando sua infraestrutura: Como e porque fazer, baseado em c...TDC2016SP - Versionando sua infraestrutura: Como e porque fazer, baseado em c...
TDC2016SP - Versionando sua infraestrutura: Como e porque fazer, baseado em c...
 
De zero a cem em cloud computing transformando idéias em aplicações em pouco...
De zero a cem em cloud computing  transformando idéias em aplicações em pouco...De zero a cem em cloud computing  transformando idéias em aplicações em pouco...
De zero a cem em cloud computing transformando idéias em aplicações em pouco...
 
Guiao demotecnica
Guiao demotecnicaGuiao demotecnica
Guiao demotecnica
 
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
 
Precisamos de um barco maior introdução ao dimensionamento de aplicações
Precisamos de um barco maior introdução ao dimensionamento de aplicaçõesPrecisamos de um barco maior introdução ao dimensionamento de aplicações
Precisamos de um barco maior introdução ao dimensionamento de aplicações
 
Carreira de Desenvolvimento
Carreira de DesenvolvimentoCarreira de Desenvolvimento
Carreira de Desenvolvimento
 
Comércio Eletrônico - Aula 8 - Planejamento e Implementação - Parte 1
Comércio Eletrônico - Aula 8 - Planejamento e Implementação - Parte 1Comércio Eletrônico - Aula 8 - Planejamento e Implementação - Parte 1
Comércio Eletrônico - Aula 8 - Planejamento e Implementação - Parte 1
 
TDC2018SP | Trilha UX - Deploy Continuo de Software Legado: Loucura ou Genial...
TDC2018SP | Trilha UX - Deploy Continuo de Software Legado: Loucura ou Genial...TDC2018SP | Trilha UX - Deploy Continuo de Software Legado: Loucura ou Genial...
TDC2018SP | Trilha UX - Deploy Continuo de Software Legado: Loucura ou Genial...
 
Uma Olhada no Netbeans 6
Uma Olhada no Netbeans 6Uma Olhada no Netbeans 6
Uma Olhada no Netbeans 6
 
Big Data, Performance, Posix, RTB no mercado de publicidade online
Big Data, Performance, Posix, RTB no mercado de publicidade onlineBig Data, Performance, Posix, RTB no mercado de publicidade online
Big Data, Performance, Posix, RTB no mercado de publicidade online
 
Iniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando PimentaIniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando Pimenta
 
JEE nas nuvens: uma introdução ao openshift
JEE nas nuvens:  uma introdução ao openshiftJEE nas nuvens:  uma introdução ao openshift
JEE nas nuvens: uma introdução ao openshift
 
Webinar: Introdução à Distribuição Contínua na AWS
Webinar: Introdução à Distribuição Contínua na AWSWebinar: Introdução à Distribuição Contínua na AWS
Webinar: Introdução à Distribuição Contínua na AWS
 
Lean, Kanban e Kaizen para sua área de Tecnologia
Lean, Kanban e Kaizen para sua área de TecnologiaLean, Kanban e Kaizen para sua área de Tecnologia
Lean, Kanban e Kaizen para sua área de Tecnologia
 
Vivenciando dev ops para além da automação de infraestrutura 2.0
Vivenciando dev ops para além da automação de infraestrutura 2.0Vivenciando dev ops para além da automação de infraestrutura 2.0
Vivenciando dev ops para além da automação de infraestrutura 2.0
 

Building Scalable Apps: 4 Phases of Growth

  • 1. Building  scalable  applica/ons   Rachad  Honein   Gerente  de  Engenharia  SaaS  -­‐  Locaweb  
  • 2. O  Que  fazemos  no  SaaS?  
  • 3. Webstore   •  ~  3600  lojas  a/vas     •  >  250.000  Page  views  /  dia   •  Picos  de  2500  visitas  a/vas   Google  Analy/cs:  Domingo  6/10/2013  as  13:30  
  • 4. Email  Marke/ng   •  >  32.000  Contas  a/vas   •  Media  de  10.000  contatos  por  conta   •  Contas  com  mais  que  5  Milhões  de  contatos   •  Acima  de  1  Bi  de  envios  por  mês  
  • 6. ANTES  DE  MAIS   NADA…  
  • 8. METODOLOGIAS    ÁGEIS   Scrum   Pair  Programming   Kanban   Stand  up  mee/ngs   Retrospec/ves   Planning  
  • 9. TIMES  DE  2  A  5  DEVS   PARA  CADA  PRODUTO  
  • 11. Como  trabalhamos?   Linguagens  de  programação:     –  Ruby   –  Python   –  Lua   –  Go   –  Java     –  Javascript  
  • 12. Como  trabalhamos?   Base  de  dados:  
  • 13. Como  trabalhamos?   Linux:       Debian  Squeeze  /Wheezy  
  • 15. Como  trabalhamos?   Organização  =  Produ/vidade      
  • 16. But   HOW  TO  SCALE?  
  • 17. How  to  scale?   Não  poderíamos  jogar  vários  servidores  na   receita  e  resolver  o  problema?      
  • 18. How  to  scale?      Mas  o  que  é  escalabilidade?  
  • 19. Escalabilidade   É  isso:     É  uma  desejável   propriedade  do  sistema   que  indica  a  habilidade  de   suportar  grande   quan/dade  de  trabalho,   ou    facilidade  de   crescimento  quando  há   demanda.   Mas  não  é  isso:   •  Recursos  de  servidor   (2Ghz,  24Gb  Ram  …)   •  Sistema  operacional   (Solaris,  Linux,   windows)   •  Technologia  (  Java  vs   Django  vs  Cake  PHP  vs   Ruby  on  Rails)  
  • 22. How  to  scale?         Quanto  ao  Solware,  usaríamos  C?      
  • 23. How  to  scale?                 Não!     Vamos  usar  PHP,  Ruby  e  Python  
  • 24. How  to  scale?                 Mas  PHP,  Ruby  e  Python  não  são  lentos?  
  • 25. How  to  scale?       Isso  não  importa!  São  rápidos  o  suficiente.       O  que  importa:  Tempo  de  desenvolvimento  
  • 26. How  to  scale?   •  •  •  •  •  •  •    O  que  desejamos?     Escalabilidade   Alta  disponibilidade   Performance   Gerenciamento   Custo  mais  baixo  (o/mização)   Muitas  funcionalidades   Gerar  receita  $$$$  
  • 27. How  to  scale?   Verdade  #1:   Seu  sistema  não  vai  escalar  se  não  foi   desenhado  para  escalar  
  • 28. How  to  scale?   Verdade  #2:   Mesmo  se  for  desenhado  para  escalar,  vai  doer!   Quase  sempre  
  • 29. Caso  de  uso:  Um  produto  de  muito  sucesso   Fases  de  crescimento  
  • 30. Fase  1:  Boostrapping  –  The  happy  beginning    
  • 31. Fase  1:  Boostrapping  –  The  happy  beginning     •  Arquitetura  simples:   –  Firewall  +  Load  Balancer  (F5,  LVS,  HaProxy  …)   –  Alguns  servidores  web   –  Base  de  dados   –  Storage   •  Complexidade  baixa   •  Risco  baixo   •  Não  tem  muita  redundância,  custo  operacional   baixo  =>  Melhor  cenário  para  Startups  em  geral  
  • 32. Load  Balancer   Internet   Fase  1:  Boostrapping  –  The  happy  beginning     WebServers   Database   Storage  
  • 33. Success:  O  négocio  está  dando  certo,  gerando   receita       Risco  não  é  mais  uma  opção  
  • 34. Fase  2:  O  mesmo,  mas  começando  a  crescer     •  Mais  redundâncias   –  Mais  Servidores  Web     –  Mais  Load  Balancers   –  Replicação  de  Base  de  dados     •  Ainda  simples  de  ponto  de  vista  Aplicação   –  A  aplicação  con/nua  a  mesma,  é  só  infra  
  • 35. Fase  2:  O  mesmo,  mas  começando  a  crescer     Load  Balancer   Internet   Slave   WebServers   Master   Database   Storage  
  • 36. Publicidade       – Google  Ads   – Ar/gos  nas  revistas   – Eventos  de  patrocino  
  • 37. Fase  3:  A  dor  começou     •  Mais  redundâncias  ainda!   –  Servidor  de  Varnish   –  Mais  o/mização  no  banco   –  Mais  redondância  no  banco   •  Necessário  mexer  na  aplicação   –  Servidor  de  sessão   –  Mais  Cache     =>  mais  cache  para  invalidar  direito    
  • 38. Fase  3:  A  dor  começou     Memcached/Redis   Load  Balancer   Internet   Slaves   Database   Varnish   WebServers   SSD   Sta/c  Files   Storage  
  • 39. Fase  3:  A  dor  começou     Gerenciar  está  mais  complexo  e  mais   dolorido!  
  • 40. Produto  de  sucesso     Muitas  assinaturas   Churn  Baixo   Mais  Inves/mento  =  Mais  Publicidade     Entrevista  dos  founders  na  TV   Mais  Google  Ads   Mais  Eventos  de  patrocino  
  • 41. Fase  4:  Está  doendo  mais  ainda!     •  Ainda  mais  cache   –  Clusters  Memcached,  Redis  e  outros   •  Replicação  não  funciona    para  tudo   –  Replicação  leva  muito  tempo  (slaves  replicam   devagar)   –  Isola  escrita  da  leitura   •  “Database  par//oning”  salva  o  dia   –  Algumas  das  funcionalidades  tem  os  próprios  bancos   •  Repensar  na  modelagem  da  base  de  dados   –  “Denormalizar"  a  modelagem  
  • 42. Fase  4:  Está  doendo  mais  ainda!     Repensar  o  código  para  suportar  toda  essa  loucura   –  Devs  nunca  fizeram  isso  antes   –  Google  não  tem  resposta   –  StackOverflow  também  
  • 43. Fase  4:  Está  doendo  mais  ainda!     Clusters   Memcached/Redis   Load  Balancer   Internet   Reads  Cluster Varnish   Cluster   WebServers   Writes   Cluster   SSD   Sta/c  Files   SSD   Storage  Cluster  
  • 44. Produto  de  sucesso     Muitas  assinaturas  VS  Churn  Baixo   Mais  Inves/mento  =  Mais  Publicidade     Spot  no  fantás/co   Mais  Google  Ads  
  • 45. Está  bombando  de  assinaturas.      
  • 46. Fase  5:  Pânico!     •  Alguém  pode  nos  ajudar???   •  Por  que  não  fizemos  isso  na  fase  de  desenho   da  arquitetura?   •  Criar  clusters  por  usuários   –  Divide  and  Conquer   –  Baseado  em  grupos  de  usuários,  criar  ambientes   totalmente  separados   •  Smart  rou/ng  para  saber  onde  cada  usuário   está  
  • 47. Fase  5:  Swimlane     Internet   Redis   Smart  Router   Usuários  com   Login  de  A  a  C   Usuários  com   Login  de  D  a  F   Usuários  com   Login  de  G  a  I  
  • 48. Fase  6:  Está  melhorando!     •  Aplicação  escalável   •  Performance  desejável   •  Agora  podemos  retomar  o  desenvolvimento   de  novos  features   •  O/mização  de  código  e  refatoração   •  Ainda  crescendo,  mas  gerenciável  
  • 49. Fase  7:  O  futuro  é  o  horizonte!       Se  sobrevivemos  até  aqui,   provavelmente  nós  vamos   sobreviver  pra  sempre!  Ou   não  …  
  • 50. Bônus   •  •  •  •  •  •  Envio  de  emails  é  sempre  assíncrono   MongoDB  é  caro!  Nosso  mente  é  relacional   Redis  é  seu  amigo  mais  fiel   Memcached  também   Usem  NewRelic  em  produção   Usem  Configura/on  Management   –  Chef   –  Puppet   –  CF  Engine   •  Nunca  servem  imagens  pela  VM!  Usem  CDN,  Varnish  com  storage,   S3,  CloudFront   •  Divide  sua  aplicação  em  várias  aplicações   •  Nginx  +  Lua  Module  =  Smart  Rou/ng  made  easy  
  • 51. Obrigado   PERGUNTAS?   Email:  rachad.honein@gmail.com  Twi•er:  @racx