Quando iniciamos a arquitetura de um novo sistema, seja um pequeno aplicativo de uma startup ainda sem grandes pretensões, um grande ERP ou CRM, desenhado para uso interno ou disponível como serviço em cloud para o mundo todo, há algumas preocupações em comum.
Uma das principais, sem sombra de dúvidas, é o banco de dados. Aonde vou armazenar os dados desse novo sistema? Uma decisão errada no início do projeto pode custar muito caro, e costuma acontecer. A resposta correta é: depende!
Não pode existir uma resposta certeira, uma fórmula mágica, um banco de dados que seja considerado ideal para qualquer tipo de aplicação, e de fato não existe. Cada aplicação possui as suas particularidades, seu orçamento, sua equipe técnica, suas expectativas.
Há uma infinidade de produtos no mercado, desde soluções open source, passando pelos consagrados e bem sucedidos líderes do mercado e chegando finalmente nas soluções de banco de dados como serviço, tanto relacionais quanto NoSQL.
Existem os tradicionais “casamentos”, como os aplicativos web desenvolvidos em PHP com banco de dados MySQL, a tecnologia Microsoft com C# ou VB .Net com o SQL Server e ainda se ouve que para grandes volumes de dados a única solução é o bom e velho Oracle.
Eu já atuei como DBA em projetos que mesclavam muito as tecnologias, e conseguimos obter excelentes resultados quando aproveitamos o que há de melhor em cada produto, fugindo um pouco desses agrupamentos tradicionais. Para citar um exemplo, desenvolvemos um e-commerce que comercializa cursos online, bem como um e-learning que consome esse conteúdo, em PHP com banco de dados principal em SQL Server 2012 e utilizando outros serviços na cloud da Amazon – AWS, como NoSQL e tecnologias de cache.
Mesmo com a grande quantidade de novas tecnologias e produtos que surgem quase diariamente, quando se fala em bancos de dados a evolução não se dá de uma maneira tão rápida como as linguagens de programação e demais serviços em cloud, um sistema web desenvolvido a 10 anos e um desenvolvido hoje tem a arquitetura muito diferente, mas o banco de dados ainda é muito parecido.
A AWS, líder mundial em cloud computing, costuma recomendar o uso regular de bancos de dados relacionais para sistemas até 1.000.000 de usuários, acima disso o uso de NoSQL e demais tecnologias começa a se fazer necessário. A própria Amazon oferece diversos serviços proprietários, nas mais variadas plataformas. O serviço de banco de dados RDS oferece desde os tradicionais MySQL, PostgreSQL, Oracle e SQL Server além do MariaDB e uma implementação própria do MySQL com foco em performance chamada Aurora, que vale a pena conhecer. Há também os serviços especializados criados para DataWarehousing ou Big Data. A AWS possui o RedShift baseado no PostgreSQL e a sua solução própria de Hadoop, o EMR.
Outros gigantes da tecnologia também oferem as suas soluções de banco de dados como a Microsoft com a implementação do SQL Server no Windows Azure, além de bases especializadas para Hadoop, DataWarehouse e NoSQL. O SQL Server é uma suite de aplicativos e possui uma solução integrada para Business Intelligence (BI).
O sistema que está sendo desenvolvido possui determinadas características, orçamento, arquitetura, estimativa de número de usuários, tamanho inicial e expectativa de crescimento, necessidade de replicação, alta disponibilidade e escalabilidade, utilização de outros serviços que vão além das capacidades de um database engine tradicional, entre tantas outras variáveis que devem ser levadas em conta ao escolher a tecnologia a ser utilizada.
Quanto maior o sistema, número de usuários e tamanho da base, maior a probabilidade de utilização de diferentes produtos simultaneamente, via de regra a base principal continua sendo relacional, com a utilização de bases NoSQL e mecanismos de cache em memória, replicação, réplicas secundárias para rotinas de backup e relatórios, integração com sistemas legados e eventualmente aplicações secundárias, inclusive com acessos offline.
Nos próximos artigos pretendo me deter de maneira mais profunda nos pontos mais importantes, fazer comparações entre alguns produtos e dar algumas sugestões baseadas em casos reais.
Seja qual for a opção escolhida, a qualidade dos profissionais envolvidos no projeto é que vai determinar a qualidade do produto final. Instalações “next -> next -> finish” ou a utilização dos melhores produtos do mercado, mas sem a aplicação das melhores práticas em relação a performance, segurança, integridade e demais características será causa certeira de fracasso.
No final das contas, as pessoas são sempre a melhor tecnologia a serviço de qualquer tipo de projeto. Profissionais qualificados, treinados e motivados, esse é o segredo do sucesso das mais bem sucedidas empresas ao redor do mundo.
Nenhum comentário:
Postar um comentário