Por Hernando Santana Pinto
Em 18/04/2017 no site Profissionais de TI
A primeira pergunta que devemos responder é: O meu aplicativo está na nuvem? Se está, via de regra, o banco de dados também deve estar. Parece óbvio, mas já observei sérios problemas em sistemas web por questões de latência – demora para estabelecer a conexão entre o aplicativo e o banco de dados. Como quase tudo na área de TI, há exceções, mas via de regra o banco de dados deve estar na mesma rede do aplicativo web conectado a ele.
Para casos específicos, soluções específicas. Se o seu sistema é um app Android, iOS ou Windows, existe a grande possibilidade de você precisar de um cache local para armazenamento dos dados principais, perfis de usuário, etc… Há diversas soluções possíveis, muitas fornecidas pelos próprios fabricantes dos sistemas operacionais, como Google e Microsoft, mas nesse artigo o foco são os aplicativos web, aqueles acessados a partir de um navegador como Chrome ou Firefox.
Se o seu aplicativo já está na nuvem, ou ainda vai ser desenvolvido na nuvem, o ideal é deixar o banco de dados na mesma nuvem. Não faz sentido hospedar o seu sistema na AWS e usar o banco de dados SQL Database no Azure. Como falamos no artigo anterior, há diversas opções a diferentes custos e de diferentes portes, a seguir vamos tratar de alguns. Quando se trata de armazenamento de dados na nuvem há uma infinidade de produtos e soluções muito diferentes, aqui trataremos em especial dos bancos de dados relacionais, como SQL Server, Oracle, DB2, MySQL e similares.
A AWS possui essencialmente duas maneiras para armazenar os seus dados, o serviço de banco de dados gerenciado RDS e a possibilidade de utilizar VMs no serviço EC2. No RDS estão disponíveis MySQL, SQL Server, PostgreSQL, Oracle, MariaDB e uma excelente opção proprietária chamada Aurora, baseada no serviço S3 e totalmente compatível com o MySQL, há uma versão beta compatível com PostgreSQL.
Utilizar uma máquina virtual te dá a sensação de administrar um banco de dados “on premise”, uma instalação totalmente customizada, apesar de existirem alguns templates já configurados com a pré-instalação do sistema operacional e aplicação. Nesse caso tanto a AWS quanto o Azure são muito similares.
Sobre banco de dados gerenciados, o RDS oferece muitas opções: você escolhe o tamanho da instância baseado na necessidade de processador, memória e throughput de rede necessários, seleciona o tipo de disco (prefira sempre SSD) e a sua capacidade. Outra opção é se vai utilizar a classe Standard, Multi-AZ ou read replica. Standard é uma instância standalone, que pode possuir ou não uma replicação somente para leitura (read replica). Multi-AZ é uma replicação que garante o failover em caso de problemas e também mantém o banco ativo mesmo numa janela de upgrade, pois atualiza cada uma das instâncias separadamente.
O SQL Database, do Azure, é um banco de dados gerenciado baseado em SQL Server e que também oferece uma variedade de opções e pode ser acessado normalmente via SQL Server Management Studio como uma base local, desde que o IP esteja liberado. Existem ferramentas nativas que facilitam a importação da sua base de dados local para a nuvem em ambas as plataformas, MS e AWS.
Por fim, além dos tradicionais bancos de dados relacionais há opções de bancos de dados OLAP, para relatórios gerenciais, datawarehouse e sistemas de Business Intelligence (BI). A Microsoft oferece o SQL Data Warehouse, uma solução também baseada no SQL Server, gerenciada, flexível e poderosa que pode ser integrada com diversos outros serviços como o Azure Analysis Services, entre outros.
A AWS oferece o Amazon Redshift, uma base de dados proprietária mas muito poderosa, trabalha com o conceito de cluster com processamento paralelo e, por ser compatível com o PostgreSQL, pode ser conectada com qualquer ferramenta compatível que utilize drivers JDBC ou ODBC.
Há uma infinidade de produtos como NoSQL, caches em memória, analytics, Hadoop, entre outras. Podemos tratar desses produtos ou detalhar algum dos serviços citados acima nos próximos artigos. Deixe as suas sugestões nos comentários, serão muito bem vindas e servirão de base para os próximos artigos.
Hernando Santana Pinto
- 20 anos de experiência em TI, grandes conhecimentos em arquitetura, análise e desenvolvimento de sistemas, cloud computing, integração de sistemas e administração de bancos de dados.
- Gerenciamento de projetos e equipes de desenvolvimento de software, monitoramento, melhoria contínua, aplicação de melhores práticas de mercado e constante integração com as áreas de negócio.
- Grande experiência em arquitetura de sistemas e modelagem de bancos de dados, tendo coordenado o desenvolvimento de diversos sistemas web em PHP, bancos de dados SQL Server, MySQL e NoSQL utilizando a nuvem da AWS – Amazon Web Services, entre os quais destaco o Aprova Concursos, sistemas para diversas instituições ensino a distância (EAD), tanto e-commerces (lojas virtuais) quanto e-learnings, também chamados LMS ou AVA - Ambiente Virtual de Aprendizagem.
- Conhecimento em metodologias ágeis - SCRUM.
- Microsoft Certified Professional, MCP - MCPS - Exames 70-461 e 70-462 – SQL Server 2012/2014.
- Gerenciamento de projetos e equipes de desenvolvimento de software, monitoramento, melhoria contínua, aplicação de melhores práticas de mercado e constante integração com as áreas de negócio.
- Grande experiência em arquitetura de sistemas e modelagem de bancos de dados, tendo coordenado o desenvolvimento de diversos sistemas web em PHP, bancos de dados SQL Server, MySQL e NoSQL utilizando a nuvem da AWS – Amazon Web Services, entre os quais destaco o Aprova Concursos, sistemas para diversas instituições ensino a distância (EAD), tanto e-commerces (lojas virtuais) quanto e-learnings, também chamados LMS ou AVA - Ambiente Virtual de Aprendizagem.
- Conhecimento em metodologias ágeis - SCRUM.
- Microsoft Certified Professional, MCP - MCPS - Exames 70-461 e 70-462 – SQL Server 2012/2014.
Nenhum comentário:
Postar um comentário