Globalcode – Open4education
Arquitetura escalável e resiliente com
NGINX, DataSnap, REDIS e MongoDB
Globalcode – Open4education
Que Mario? Aquele ...
18+ anos aprendendo a programar
Desenvolvedor Delphi, Python, JavaScript e Lua
Gestor de Desenvolvimento na CONTACT STUDIO Software
Vivência em soluções de grande porte para Contact Center
http://eugostododelphi.blogspot.com.br
jmarioguedes@gmail.com
Em todas as redes: /jmarioguedes
Não sou eu! Sou eu!
Globalcode – Open4education
Foco desta apresentação
O objetivo maior é o de apresentar uma proposta de arquitetura
escalável e resiliente:
Escalável: Capacidade de atender de 10 a 10.000 usuários sem
reescrita de código.
“Vem monstrão!”
Resiliente: Capacidade de se recuperar .
“Não cai nem fodendo que a vaca tussa!”
Globalcode – Open4education
Macro esquema
CAMADA RESTCAMADA CLIENTE MENSAGERIA MICRO SERVIÇOCAMADA HTTP STORAGE
Globalcode – Open4education
WTF?! Qual o benefício?
Estamos procurando buscar:
Escalabilidade horizontal
Alta resiliência
Alta ortogonalidade
Baixa indisponibilidade por conta de atualizações
Um banco sem esquema permite maior velocidade às
mudanças de regras de negócios
Globalcode – Open4education
DataSnap
É o framework nativo para construção de soluções
multi-camadas no Delphi e C++ Builder
Um ótimo curso com o Rodrigo Mourão:
http://fundamentosdatasnap.rmfactory.com.br/curso
-datasnap
Globalcode – Open4education
NGNIX [engine x]
Servidor web de alta densidade
Promete suportar 10.000 conexões simultâneas
https://nginx.org/en/
Instalação para Windows (não para produção)
http://nginx.org/en/docs/windows.html
Software russo (curiosidade apenas)
Globalcode – Open4education
NGNIX - Propósitos
Extensível via linguagem Lua
Proxy reverso
Encaminhador de requisições
Balanceador
Fail over
Altamente configurável
Globalcode – Open4education
REDIS
Banco noSQL orientado à chave e valor
https://redis.io
Servidor versão Windows (não para produção):
https://github.com/MicrosoftArchive/redis/releases
Manager que eu uso:
https://redisdesktop.com
Cliente para Delphi:
http://www.danieleteti.it/redis-client/
Globalcode – Open4education
REDIS - Propósitos
Armazenamento de sessão DataSnap
Possibilidade de se usar TTL nas chaves
Extensível via linguagem Lua
Cacheamento server-side
“O processamento mais rápido é aquele que não é feito”
Mensageria
Enfileiramento
Publicação e assinatura
Globalcode – Open4education
MONGODB
Banco noSQL orientado à documento
https://www.mongodb.com
Manager que eu uso:
https://studio3t.com
Recomendo, sempre, o curso do Thulio
http://www.thuliobittencourt.com
Globalcode – Open4education
MONGODB - Propósitos
Por já armazenar JSON, diminuímos a
incompatibilidade de impedância
É o esforço de mapear os dados entre as estruturas da
linguagem e o banco de dados relacional
Aderente aos conceitos de Big Data
Utiliza agregação e map-reduce para
processamento
Globalcode – Open4education
Palavras chaves
Globalcode – Open4education
Links
Você sabe o que é Incompatibilidade de Impedância? - Banco de Dados Parte 1
Dayvson Lima
https://pt.linkedin.com/pulse/você-sabe-o-que-é-incompatibilidade-de-impedância-banco-lima
Modularização via BPL - Abordagem Prática para DataSnap & Front-end
Mario Guedes
https://pt.slideshare.net/jmarioguedes/modularizao-via-bpl-abordagem-prtica-para-data-snap-frontend
Controlando a Concorrência em Aplicações Multi-Thread com Delphi
Mario Guedes
http://eugostododelphi.blogspot.com.br/2016/10/material-sobre-threads_51.html
CodeRage Brasil III: Tudo sobre o REST Client Library
Mario Guedes
https://youtu.be/ajl2GEJonQA
Globalcode – Open4education
Obrigado!
{
“nome” : “Mário Guedes” ,
“e-mail” : “jmarioguedes@gmail.com” ,
“blog” : “http://eugostododelphi.blogspot.com.br” ,
“perfis” : [
{“linkedin” : “jmarioguedes”} ,
{“slideshare” : “jmarioguedes”} ,
{“github” : “jmarioguedes”} ,
{“prezi” : “jmarioguedes”}
]
}

Arquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDB

  • 1.
    Globalcode – Open4education Arquiteturaescalável e resiliente com NGINX, DataSnap, REDIS e MongoDB
  • 2.
    Globalcode – Open4education QueMario? Aquele ... 18+ anos aprendendo a programar Desenvolvedor Delphi, Python, JavaScript e Lua Gestor de Desenvolvimento na CONTACT STUDIO Software Vivência em soluções de grande porte para Contact Center http://eugostododelphi.blogspot.com.br jmarioguedes@gmail.com Em todas as redes: /jmarioguedes Não sou eu! Sou eu!
  • 3.
    Globalcode – Open4education Focodesta apresentação O objetivo maior é o de apresentar uma proposta de arquitetura escalável e resiliente: Escalável: Capacidade de atender de 10 a 10.000 usuários sem reescrita de código. “Vem monstrão!” Resiliente: Capacidade de se recuperar . “Não cai nem fodendo que a vaca tussa!”
  • 4.
    Globalcode – Open4education Macroesquema CAMADA RESTCAMADA CLIENTE MENSAGERIA MICRO SERVIÇOCAMADA HTTP STORAGE
  • 5.
    Globalcode – Open4education WTF?!Qual o benefício? Estamos procurando buscar: Escalabilidade horizontal Alta resiliência Alta ortogonalidade Baixa indisponibilidade por conta de atualizações Um banco sem esquema permite maior velocidade às mudanças de regras de negócios
  • 6.
    Globalcode – Open4education DataSnap Éo framework nativo para construção de soluções multi-camadas no Delphi e C++ Builder Um ótimo curso com o Rodrigo Mourão: http://fundamentosdatasnap.rmfactory.com.br/curso -datasnap
  • 7.
    Globalcode – Open4education NGNIX[engine x] Servidor web de alta densidade Promete suportar 10.000 conexões simultâneas https://nginx.org/en/ Instalação para Windows (não para produção) http://nginx.org/en/docs/windows.html Software russo (curiosidade apenas)
  • 8.
    Globalcode – Open4education NGNIX- Propósitos Extensível via linguagem Lua Proxy reverso Encaminhador de requisições Balanceador Fail over Altamente configurável
  • 9.
    Globalcode – Open4education REDIS BanconoSQL orientado à chave e valor https://redis.io Servidor versão Windows (não para produção): https://github.com/MicrosoftArchive/redis/releases Manager que eu uso: https://redisdesktop.com Cliente para Delphi: http://www.danieleteti.it/redis-client/
  • 10.
    Globalcode – Open4education REDIS- Propósitos Armazenamento de sessão DataSnap Possibilidade de se usar TTL nas chaves Extensível via linguagem Lua Cacheamento server-side “O processamento mais rápido é aquele que não é feito” Mensageria Enfileiramento Publicação e assinatura
  • 11.
    Globalcode – Open4education MONGODB BanconoSQL orientado à documento https://www.mongodb.com Manager que eu uso: https://studio3t.com Recomendo, sempre, o curso do Thulio http://www.thuliobittencourt.com
  • 12.
    Globalcode – Open4education MONGODB- Propósitos Por já armazenar JSON, diminuímos a incompatibilidade de impedância É o esforço de mapear os dados entre as estruturas da linguagem e o banco de dados relacional Aderente aos conceitos de Big Data Utiliza agregação e map-reduce para processamento
  • 13.
  • 14.
    Globalcode – Open4education Links Vocêsabe o que é Incompatibilidade de Impedância? - Banco de Dados Parte 1 Dayvson Lima https://pt.linkedin.com/pulse/você-sabe-o-que-é-incompatibilidade-de-impedância-banco-lima Modularização via BPL - Abordagem Prática para DataSnap & Front-end Mario Guedes https://pt.slideshare.net/jmarioguedes/modularizao-via-bpl-abordagem-prtica-para-data-snap-frontend Controlando a Concorrência em Aplicações Multi-Thread com Delphi Mario Guedes http://eugostododelphi.blogspot.com.br/2016/10/material-sobre-threads_51.html CodeRage Brasil III: Tudo sobre o REST Client Library Mario Guedes https://youtu.be/ajl2GEJonQA
  • 15.
    Globalcode – Open4education Obrigado! { “nome”: “Mário Guedes” , “e-mail” : “jmarioguedes@gmail.com” , “blog” : “http://eugostododelphi.blogspot.com.br” , “perfis” : [ {“linkedin” : “jmarioguedes”} , {“slideshare” : “jmarioguedes”} , {“github” : “jmarioguedes”} , {“prezi” : “jmarioguedes”} ] }