SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
Escalonamento horizontal
de serviços web
Estudo de caso
Who’s?
● Mantenedor do projeto OpenSource “SmartRouter PROJECT”;
● >17 anos de experiência com Linux;
● >9 anos de experiência com servidores de alta
disponibilidade;
● ~2 anos de desenvolvimento de projetos com
criptomoedas e blockchain;
● >6 anos de desenvolvimento WEB na
“PontoGestor” e mais 4 startups;
● Palestrante em eventos como FISL, FTSL,
RubyConf e demais eventos acadêmicos;
● Professor por acidente;
● “fabiosammy” googleit!;
Ponto Gestor
● Empresa que nasceu em 2013, com base de produtos e know
how da crachá digital(2001);
● Desenvolve sistema de tratamento de ponto conforme MTE;
● Possui mais de 1600 usuários finais atualmente em todo o
país, com foco no estado do Paraná(Leis trabalhistas e
sindicais);
● Utiliza de tecnologías como Rails, Postgres,
Redis e Faye;
Sumário
● Serviços web;
● Escalonamento vertical X horizontal e custos;
● Caso Ponto Gestor;
○ Persistência SGBD;
○ Filas e Uploads;
○ Auditoria;
○ Balanceador e proxy reverso;
○ Mensuração;
○ Sessões e realtime;
○ Consistência de dados e conflitos;
○ Cache;
Serviços Web
● Servidores;
● Sistemas operacionais;
● Camadas de persistência(banco de dados);
● Camadas de aplicações(linguagem utilizada);
● Camadas de serviços web(apache/nginx...);
● Serviço a ser prestado;
● ...
Escalonamentos verticais
Escalonamento horizontais
Comparativo de custos - DigitalOcean
Caso
Stack pontogestor
1° caso - SGBD
2º caso - Filas e arquivos
3º Caso - auditoria
4º Caso - LB
Estrutura nova até o 4º caso
Problemas?
5º Caso - Mensuração - Quando escalonar?
6º Caso - Sessões e REALTIME
● Usuário cai para logar no
servidor web 01;
● É direcionada a próxima
requisição para o servidor web
02;
● Perde referência da sessão e é
deslogado!
● Usuário 01 acessa o servidor
web 02;
● Usuário 02 acessa o servidor
web 03;
● Usuário 01 atualiza dado
qualquer;
● Usuário 02 não visualiza a
alteração de dado;
8º caso - Consistências e conflitos
● Usuário 01, Usuário 02, e processamento background tentam
alterar um mesmo dado em um mesmo momento;
● Cliente 01, cria, ao mesmo tempo que cliente 02, um
usuário com mesmo login e e-mail(validação única);
● ...
9º caso - cache!
=[
SGBD?
Uploads?
LOgs?
Redis?
● O SGBD ainda possui um
custo grande de manter
sincronia, mantivemos
vertical;
● Uploads somente
demandam espaço em
disco, somente adiciona
mais espaço;
● Logs mantemos somente
os últimos 90 dias;
● Redis ainda não houve
necessidade de
escalonar;
Conclusão
● Escalonamento horizontal é mais econômico que vertical a
longo prazo;
● É necessário ter um bom domínio de infra-estrutura para
interligar os nós;
● Em início de projeto, escalonamento vertical sempre é
mais simples de trabalhar;
● Nem sempre podemos obter escalonamento de todos os
serviços de modo fácil;
● Conflitos entre requisições sempre são difíceis de
tratar;
So, rails it scale?
YES MODAFOCKA!
Muito obrigado!
Perguntas?
contato: fabiosammy@gmail.com

Mais conteúdo relacionado

Semelhante a Escalonamento horizontal de serviços web: Estudo de caso Ponto Gestor

TDC2012: Apps RIA com Sencha GXT 3 e GWT
TDC2012: Apps RIA com Sencha GXT 3 e GWTTDC2012: Apps RIA com Sencha GXT 3 e GWT
TDC2012: Apps RIA com Sencha GXT 3 e GWTLoiane Groner
 
Aplicações Web Realtime
Aplicações Web RealtimeAplicações Web Realtime
Aplicações Web RealtimeGabriel Gularte
 
IntroduçãO Ao Desenvolvimento Web 2
IntroduçãO Ao Desenvolvimento Web   2IntroduçãO Ao Desenvolvimento Web   2
IntroduçãO Ao Desenvolvimento Web 2Maurício Linhares
 
Apresentação na PHP Conference Brasil 2012
Apresentação na PHP Conference Brasil 2012Apresentação na PHP Conference Brasil 2012
Apresentação na PHP Conference Brasil 2012Ariovaldo Carmona
 
Introdução ao desenvolvimento web - 2 - iDez 2010
Introdução ao desenvolvimento web - 2 - iDez 2010Introdução ao desenvolvimento web - 2 - iDez 2010
Introdução ao desenvolvimento web - 2 - iDez 2010Maurício Linhares
 
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3André Luiz Forchesatto
 
TDC2016SP - O bê-a-bá da fila de processamento para você deixar o ThreadPool ...
TDC2016SP - O bê-a-bá da fila de processamento para você deixar o ThreadPool ...TDC2016SP - O bê-a-bá da fila de processamento para você deixar o ThreadPool ...
TDC2016SP - O bê-a-bá da fila de processamento para você deixar o ThreadPool ...tdc-globalcode
 
Construindo a NuConta
Construindo a NuContaConstruindo a NuConta
Construindo a NuContaNubank
 
Rails: Porque programar deve ser divertido
Rails: Porque programar deve ser divertidoRails: Porque programar deve ser divertido
Rails: Porque programar deve ser divertidoLuiz Carvalho
 
Stream Processing - ThoughtWorks Architecture Group - 2017
Stream Processing - ThoughtWorks Architecture Group - 2017Stream Processing - ThoughtWorks Architecture Group - 2017
Stream Processing - ThoughtWorks Architecture Group - 2017Otávio Carvalho
 
Prefeitura Livre 2.0: A evolução da primeira solução GRP com inteligência geo...
Prefeitura Livre 2.0: A evolução da primeira solução GRP com inteligência geo...Prefeitura Livre 2.0: A evolução da primeira solução GRP com inteligência geo...
Prefeitura Livre 2.0: A evolução da primeira solução GRP com inteligência geo...Helton Uchoa
 
Multipart Upload, Streaming e Criptografia - Desafios de um serviço de armaze...
Multipart Upload, Streaming e Criptografia - Desafios de um serviço de armaze...Multipart Upload, Streaming e Criptografia - Desafios de um serviço de armaze...
Multipart Upload, Streaming e Criptografia - Desafios de um serviço de armaze...Diogo Giassi D'Agostin
 
Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas ...
Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas ...Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas ...
Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas ...Rodrigo Peleias
 
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...tdc-globalcode
 
Boas práticas no desenvolvimento de uma RESTful API
Boas práticas no desenvolvimento de uma RESTful APIBoas práticas no desenvolvimento de uma RESTful API
Boas práticas no desenvolvimento de uma RESTful APIFernando Camargo
 

Semelhante a Escalonamento horizontal de serviços web: Estudo de caso Ponto Gestor (20)

E so mais um campinho na tela
E so mais um campinho na telaE so mais um campinho na tela
E so mais um campinho na tela
 
TDC2012: Apps RIA com Sencha GXT 3 e GWT
TDC2012: Apps RIA com Sencha GXT 3 e GWTTDC2012: Apps RIA com Sencha GXT 3 e GWT
TDC2012: Apps RIA com Sencha GXT 3 e GWT
 
Aplicações Web Realtime
Aplicações Web RealtimeAplicações Web Realtime
Aplicações Web Realtime
 
IntroduçãO Ao Desenvolvimento Web 2
IntroduçãO Ao Desenvolvimento Web   2IntroduçãO Ao Desenvolvimento Web   2
IntroduçãO Ao Desenvolvimento Web 2
 
Qnax servidores dedicado no brasil
Qnax servidores dedicado no brasilQnax servidores dedicado no brasil
Qnax servidores dedicado no brasil
 
Apresentação na PHP Conference Brasil 2012
Apresentação na PHP Conference Brasil 2012Apresentação na PHP Conference Brasil 2012
Apresentação na PHP Conference Brasil 2012
 
Introdução ao desenvolvimento web - 2 - iDez 2010
Introdução ao desenvolvimento web - 2 - iDez 2010Introdução ao desenvolvimento web - 2 - iDez 2010
Introdução ao desenvolvimento web - 2 - iDez 2010
 
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
 
TDC2016SP - O bê-a-bá da fila de processamento para você deixar o ThreadPool ...
TDC2016SP - O bê-a-bá da fila de processamento para você deixar o ThreadPool ...TDC2016SP - O bê-a-bá da fila de processamento para você deixar o ThreadPool ...
TDC2016SP - O bê-a-bá da fila de processamento para você deixar o ThreadPool ...
 
Construindo a NuConta
Construindo a NuContaConstruindo a NuConta
Construindo a NuConta
 
Spring boot
Spring bootSpring boot
Spring boot
 
Rails: Porque programar deve ser divertido
Rails: Porque programar deve ser divertidoRails: Porque programar deve ser divertido
Rails: Porque programar deve ser divertido
 
Stream Processing - ThoughtWorks Architecture Group - 2017
Stream Processing - ThoughtWorks Architecture Group - 2017Stream Processing - ThoughtWorks Architecture Group - 2017
Stream Processing - ThoughtWorks Architecture Group - 2017
 
Prefeitura Livre 2.0: A evolução da primeira solução GRP com inteligência geo...
Prefeitura Livre 2.0: A evolução da primeira solução GRP com inteligência geo...Prefeitura Livre 2.0: A evolução da primeira solução GRP com inteligência geo...
Prefeitura Livre 2.0: A evolução da primeira solução GRP com inteligência geo...
 
Construindo um sistema distribuido usando rest
Construindo um sistema distribuido usando restConstruindo um sistema distribuido usando rest
Construindo um sistema distribuido usando rest
 
Multipart Upload, Streaming e Criptografia - Desafios de um serviço de armaze...
Multipart Upload, Streaming e Criptografia - Desafios de um serviço de armaze...Multipart Upload, Streaming e Criptografia - Desafios de um serviço de armaze...
Multipart Upload, Streaming e Criptografia - Desafios de um serviço de armaze...
 
Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas ...
Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas ...Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas ...
Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas ...
 
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
 
Status Report do TCC: SIN-NA7
Status Report do TCC: SIN-NA7Status Report do TCC: SIN-NA7
Status Report do TCC: SIN-NA7
 
Boas práticas no desenvolvimento de uma RESTful API
Boas práticas no desenvolvimento de uma RESTful APIBoas práticas no desenvolvimento de uma RESTful API
Boas práticas no desenvolvimento de uma RESTful API
 

Escalonamento horizontal de serviços web: Estudo de caso Ponto Gestor

  • 2. Who’s? ● Mantenedor do projeto OpenSource “SmartRouter PROJECT”; ● >17 anos de experiência com Linux; ● >9 anos de experiência com servidores de alta disponibilidade; ● ~2 anos de desenvolvimento de projetos com criptomoedas e blockchain; ● >6 anos de desenvolvimento WEB na “PontoGestor” e mais 4 startups; ● Palestrante em eventos como FISL, FTSL, RubyConf e demais eventos acadêmicos; ● Professor por acidente; ● “fabiosammy” googleit!;
  • 3. Ponto Gestor ● Empresa que nasceu em 2013, com base de produtos e know how da crachá digital(2001); ● Desenvolve sistema de tratamento de ponto conforme MTE; ● Possui mais de 1600 usuários finais atualmente em todo o país, com foco no estado do Paraná(Leis trabalhistas e sindicais); ● Utiliza de tecnologías como Rails, Postgres, Redis e Faye;
  • 4. Sumário ● Serviços web; ● Escalonamento vertical X horizontal e custos; ● Caso Ponto Gestor; ○ Persistência SGBD; ○ Filas e Uploads; ○ Auditoria; ○ Balanceador e proxy reverso; ○ Mensuração; ○ Sessões e realtime; ○ Consistência de dados e conflitos; ○ Cache;
  • 5. Serviços Web ● Servidores; ● Sistemas operacionais; ● Camadas de persistência(banco de dados); ● Camadas de aplicações(linguagem utilizada); ● Camadas de serviços web(apache/nginx...); ● Serviço a ser prestado; ● ...
  • 8. Comparativo de custos - DigitalOcean
  • 11. 1° caso - SGBD
  • 12. 2º caso - Filas e arquivos
  • 13. 3º Caso - auditoria
  • 15. Estrutura nova até o 4º caso
  • 17. 5º Caso - Mensuração - Quando escalonar?
  • 18. 6º Caso - Sessões e REALTIME ● Usuário cai para logar no servidor web 01; ● É direcionada a próxima requisição para o servidor web 02; ● Perde referência da sessão e é deslogado! ● Usuário 01 acessa o servidor web 02; ● Usuário 02 acessa o servidor web 03; ● Usuário 01 atualiza dado qualquer; ● Usuário 02 não visualiza a alteração de dado;
  • 19. 8º caso - Consistências e conflitos ● Usuário 01, Usuário 02, e processamento background tentam alterar um mesmo dado em um mesmo momento; ● Cliente 01, cria, ao mesmo tempo que cliente 02, um usuário com mesmo login e e-mail(validação única); ● ...
  • 20. 9º caso - cache! =[
  • 21. SGBD? Uploads? LOgs? Redis? ● O SGBD ainda possui um custo grande de manter sincronia, mantivemos vertical; ● Uploads somente demandam espaço em disco, somente adiciona mais espaço; ● Logs mantemos somente os últimos 90 dias; ● Redis ainda não houve necessidade de escalonar;
  • 22. Conclusão ● Escalonamento horizontal é mais econômico que vertical a longo prazo; ● É necessário ter um bom domínio de infra-estrutura para interligar os nós; ● Em início de projeto, escalonamento vertical sempre é mais simples de trabalhar; ● Nem sempre podemos obter escalonamento de todos os serviços de modo fácil; ● Conflitos entre requisições sempre são difíceis de tratar;
  • 23. So, rails it scale? YES MODAFOCKA!