Banco de Dados

18 mai, 2019

DBA Developers Summit 2019: ORMs heróis ou vilões dentro da arquitetura de dados?

Publicidade

Voltando da hora do almoço com força total e com as baterias recarregadas, o público presente no Developer Hub foi recebido pelo nosso querido Rodrigo “pokemaobr” Cardoso, com seu stand-up “Os segredos não revelados de banco de dados”.

Depois de proporcionar boas risadas ao auditório, Pokemao passou a bola para Otávio Gonçalves no palco Developer Stage para falar sobre ORMs.

Em sua apresentação, o palestrante abordou os grandes desafios de lidar com as colunas de paradigmas que o tema pode trazer.

Ele alcançou o objetivo da palestra com perfeição e esclareceu os maiores desafios que os programadores e DBAs enfrentam para superar a evolução dos novos conceitos e técnicas.

Para dar início à sua palestra, Otávio se apresentou de forma bastante descontraída e manteve o clima bastante agradável e bem-humorado dentro do auditório.

Arquitetura & Design

Ele deu o pontapé inicial definindo o conceito de arquitetura, começando com uma comparação entre a arquitetura e o design. Segundo ele, a arquitetura é muito mais abrangente que o design e tem a responsabilidade de ter uma visão geral, e o Design, por sua vez, é algo muito mais tático e lida mais diretamente com o código.

Para ilustrar os exemplos, ele acrescentou algumas características e tipos de Design e de Arquitetura:

Arquitetura

  • Arquitetura Serverless
  • Arquitetura Orientada a Eventos
  • Arquitetura de Microserviços

Design

  • Princípio de Responsabilidade Única
  • Princípio Open Closed
  • Princípio de substituição Liskov
  • Princípio de segregação de interface
  • Princípio de inversão de dependência
  • Design Patterns

Em seguida, o palestrante destacou que nesta área, é importante dividir para conquistar.

  • “Nós podemos diminuir a complexidade, dividindo em pedaços menores, e outro ponto importante é a escalabilidade.”

Pensando nessa divisão em termos de arquitetura de software, Otávio apresentou os chamados Módulos.

Falando sobre as camadas de software, é possível garantir estabilidade ao usarmos módulos. Segundo ele, podemos dividir e criar um número maior de testes, promovendo também um aumento considerável de performance.

  • “Imagine que o seu sistema é um navio, e nele estão 7 mil pessoas. Neste mesmo navio você quer testar uma porta. Se você não dividir, para você testar essa porta você vai ter de pedir para que todas as 7 mil pessoas passem pela porta.”

Durante sua apresentação, ele apresentou o conceito de Layers e Tiers.

Esquema de Layers apresentado por Otávio.

Na metade de sua apresentação, Otávio explicou os conceitos de Paradigmas e Mappers, sem deixar de lado suas vantagens e desvantagens.

Entre algumas das principais vantagens do Mapper, estão:

  • Entidades reais
  • Menos database
  • Menos boilerplate
  • Mais visibilidade do domínio no seu sistema

Ele também recomendou os livros Clean Code, de Robert C. Martin; Domain-Driven Design, por Eric Evans, e Designing Data-Intense Applications.

Otávio afirmou que este terceiro é usado por ele como uma espécie de bíblia, guiando seu passos e apresentando novas saídas para diferentes tipos de problemas. Este livro também apresenta os maiores erros que os desenvolvedores cometem ao trabalhar com ORMs.

Ao decorrer de sua apresentação, ele abordou as delicadas questões de segurança nos bancos de dados e os problemas de colocar a senha no código.

Segundo ele, 90% dos casos de incidência com problemas de segurança nos bancos de dados estão relacionados com:

  • Hard coding
  • Plain password
  • One user

Ele fez a seguinte pergunta ao auditório: Qual a grande vantagem de usarmos clean code?

De pronto, Otávio respondeu que uma das vantagens é termos, com isso, um design a prova de balas, extinguindo a necessidade de memorizar.

Para finalizar sua apresentação, Otávio introduziu o conceito de Documento, Graph e frisou que benchmarks não são confiáveis, utilizando como exemplo, uma cena bastante exagerada da franquia norte-americana Velozes e Furiosos, na qual há um desfecho positivo impossível.