Nos dias de hoje há várias oportunidades de expormos ao menos parte da nossa aplicação para o mundo, seja por conta de um aplicativo móvel, seja por conta de integração com terceiros. Outras vezes se mostra oportuno tentarmos oferecer uma solução cloud ou invés de uma solução "on-premise". Então, sair do modelo cliente servidor para um modelo SOA nos trás desafios relacionados a escalabilidade e resiliência. Nesta palestra mostrarei uma arquitetura escalável e resiliente baseado em REST e micro serviços utilizando a abordagem noSQL.
2. 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!
3. 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!”
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
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/
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
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
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
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