3. Quiiii Máriiiioooo?
17+ anos na lida
Desenvolvedor Delphi, Python, JavaScript e LUA
Gestão de Desenvolvimento na CONTACT STUDIO Software
Ênfase em soluções para a área de Contact Center
Discador, Chat, URA, Integrações e por aí vai
Mantenedor do blog: http://eugostododelphi.blogspot.com.br
4. Arquitetura sugerida para uma grande
solução
Se você está buscando criar uma grande solução que seja resiliente, escalável e
disponível sugere-se a adoção das seguintes abordagens, mesmo que se comece
pequeno porém pensando grande:
API First (REST/JSON): bom para web, mobile, IoT, e integrações ROA
A camada de apresentação será a mais conveniente para o seu negócio: De
FoxPro à HTML/JavaScript passando pelo mobile
Serviço de Mensageria: desacoplamento entre os artefatos
Adoção de Microsserviços: escala horizontal
5. Big Data e os 5 V’s
Big Data embute muitos desafios. Armazenamento é um deles e é este o foco
desta apresentação. O que fazer com os dados é outro problema.
Precisamos ter em mente ao menos 3 dos 5 V’s:
★ Volume: Haja disco!
★ Velocidade: “Não interessa como estava o trânsito há dez minutos!”
★ Variedade: Formatos complexos e não estruturados (90% dos dados)
6. Paradigmas noSQL
noSQL: Not Only SQL
Uma grande solução requer várias abordagens de armazenamento
complementares.
Um banco dito SQL adota o paradigma relacional (e.g. SQL Server)
Já no mundo noSQL temos 4 paradigmas em destaque:
Orientado a Documento: mongoDB, CouchDB
Orientado a Chave e Valor: REDIS, memcached
7. CONTACT STUDIO
O Contact Studio é uma grande plataforma de comunicação, com abordagem
SaaS, e sua principal motivação foi o de centralizar os sistemas espalhados
pelos Call Centers.
É totalmente “agnóstica” em termos de tecnologia: Delphi, C++, Python,
JavaScript e LUA como linguagens de desenvolvimento assim como SQL
Server, REDIS, mongoDB, Apache Cassandra e Neo4J como storages.
A equipe é composta por 10 desenvolvedores e essa transição começou há
três anos. E não: Não está sendo fácil. Mas está sendo recompensador!
8. Problemas que enfrentamos lá atrás
Em 2010 fizemos uma primeira tentativa de migração do modelo
Client/Server para o modelo Multi Camada.
Erros que merecem destaques (e quem liga para os acertos né?)
Utilizamos um protocolo de comunicação proprietário (KBM)
Utilizamos o banco de dados relacional para resolver a fome do mundo:
Chegou um momento que era proibido tirar relatório em horário comercial
E a importação do mailing tinha que ser feito às 7 da manhã para dar tempo de acabar
antes da operação começar… às 9.
9. Em 2014 caiu a ficha:
REDIS + MongoDB + Cassandra + Neo4J
Velocidade: Esses bancos foram concebidos para trabalhar em cluster o que possibilita leitura e
escrita concorrentes
Disponibilidade: Se um nó cai, temos outros para suportar a carga
Diminuição da impedância representacional: Não é necessário transformar um dataset em um
JSON aninhado conveniente para o frontend
Schema-free: Maior fluidez no desenvolvimento e respostas mais rápidas às mudanças de regras
de negócios: 100+ tabelas se resumiu a 15 collections!
Novas oportunidades: Estamos investindo em predição e aprendizado de máquina.
10. CAMADA DE MICROSSERVIÇOS E TELEFONIA (Delphi & Python & C++ & FreeSWITCH)
Topologia Atual Simplificada
NGNIX
CAMADA REST (Delphi/DataSnap & Python/Tornado)
MENSAGERIA (REDIS)
LEGADO
(SQL Server)
CACHE,
SESSÃO
(REDIS)
CADASTROS
& File System
(mongoDB)
CARDEX
(mongoDB)
FÓSSIL
(mongoDB)
Analytics
(Cassandra)
FRONTEND: Delphi, AngularJS, Mobile, Integrações de Terceiros (e.g. Maquininha da Cielo)
11. Sorteio dos Livros
Três e-Books da Casa do Código para os três primeiros que enviar o nome e
e-mail para o link acima.
Valendo!
12. REDIS - O que é?
https://redis.io/
Banco de Dados orientado à Chave e Valor
Baseado em memória
Abordagem bloqueante
Oferece várias tipos de dados e operações
TTL e Suporta script LUA
13. REDIS - Como usa?
Use o driver do Daniele Teti
https://github.com/danieleteti/delphiredisclient
Em produção dê preferência a um servidor Linux
Para Windows baixe os binários em:
https://github.com/MSOpenTech/redis/releases
Tem uma interface gráfica em:
https://redisdesktop.com/download
14. mongoDB - O que é?
https://www.mongodb.com/
Banco de Dados orientado a Documento
Oferece várias operações
Armazena JSON, só que no formato BSON
Oferece operações de MAP/REDUCE (em JavaScript) e AGREGAÇÃO
Ideal para:
17. mongoDB - Como usa?
Basta acionar o mongod com os parâmetros adequados
É possível rodar como serviço
As instruções CRUD são feitas com argumentos em JSON
Não olhe para o mongoDB com o mesmo mapa mental que você tem em
relação a um banco relacional:
É um sofrimento desnecessário.
18. Comece a usar o mongoDB agora!
Aprenda tudo sobre mongoDB com Delphi com o Thulio Bittencourt:
Curso de MongoDB com Delphi
https://www.youtube.com/playlist?list=PLvrBgLo9icwMz1N9vh59OMf-
J4XXZGdsw
19. Apache Cassandra - O que é?
http://cassandra.apache.org/
Banco de Dados orientado a Coluna
Rígido em sua modelagem mas, em troca, estupidamente rápido
Ideal para:
Dados analíticos
Armazenamento de arquivos em “pedaços” para recuperação via streaming
20. Apache Cassandra - Como usa?
A modelagem da coleção deve ser orientada às respostas que você quer.
Suporta uma linguagem de consulta denominada CQL, com sintaxe idêntica
ao bom e velho SQL.
É o mais mais complexo de se entender e manter.
Também, o que esperar de algo feito em Java né?
21. Neo4J - O que é?
https://neo4j.com/
Banco orientado a Grafo
Ainda está sendo estudado pela equipe
Ideal para:
Determinar relacionamentos entre conceitos
Quais agentes estão falando com quais consumidores da cidade de Florianópolis?
22. Neo4J - Idéia básica
Basicamente temos “nós” com
propriedades e as “arestas”
entre estes nós. A “aresta” em
si também possui
propriedades.
Viu, agora dá para criar aquela
rede social :)
24. Mensagem final
Existem outros paradigmas de storage e outros vendors.
Não é o caso de colocar o mongoDB no lugar do seu SQL Server de uma
hora para outra: baby steps!
A ferramenta certa para o problema certo: Analise o problema e crie
repertório para resolvê-lo.
Achou o noSQL bacana? Saiba que existe o newSQL…
Basicamente são bancos multiparadigmas
25. Cuidados importantes
Verifique a profundidade do lago antes de mergulhar.
Cuide da sua equipe: tenha consciência que toda mudança causa
resistência.
Não magoe o seu DBA: convide-o a participar do processo - Cientista de
Dados é o novo sexy.
26. Livros bacanas
NoSQL Essencial
https://novatec.com.br/livros/nosql-essencial/
Introdução ao MongoDB
https://novatec.com.br/livros/introducao-ao-mongodb/
Armazenando dados com Redis
https://www.casadocodigo.com.br/products/livro-redis
MongoDB - Construa novas aplicações com novas tecnologias
https://www.casadocodigo.com.br/products/livro-mongodb
NoSQL - Como armazenar os dados de uma aplicação moderna
https://www.casadocodigo.com.br/products/livro-nosql