1
resposta

[Dúvida] Dúvida sobre Resiliência e Segurança: SQL Server em Container (Azure Container Instance) vs. Azure SQL Database

Olá, pessoal! Tudo bem?

Estou com uma dúvida conceitual e prática sobre arquitetura .NET no Azure, que surgiu após uma aula.

Contexto:
Durante a aula, desenvolvemos uma aplicação que utilizava um banco de dados SQL Server rodando localmente em um container Docker. Em um segundo momento, para simular um ambiente de produção na nuvem, publicamos essa imagem do SQL Server como uma Azure Container Instance (ACI).

A minha dúvida principal é sobre a robustez e segurança dessa abordagem em um cenário real.

Minhas Questões:

Persistência e Perda de Dados: Se o container da minha Azure Container Instance que está rodando o SQL Server cair, for reiniciado ou apresentar uma falha, o que acontece com os dados? Eles são perdidos? Como garantir a persistência dos dados nesse cenário?

Segurança da Abordagem: É considerado seguro expor um banco de dados dessa maneira, diretamente a partir de um container? O Azure SQL, como serviço gerenciado, não ofereceria camadas de segurança mais robustas e já configuradas por padrão?

Resiliência e Alta Disponibilidade: Como a resiliência de um SQL Server em uma Container Instance se compara com a do serviço PaaS (Plataforma como Serviço) Azure SQL Database? O Azure SQL já oferece SLAs (Acordos de Nível de Serviço) de disponibilidade, backups automáticos, replicação geográfica e failover. É possível (e viável) replicar esse mesmo nível de resiliência e confiabilidade usando apenas containers?

Em resumo, gostaria de entender as vantagens e desvantagens de cada abordagem e em que cenários seria recomendado utilizar um banco de dados "containerizado" em vez do serviço gerenciado que a própria Azure oferece.

Agradeço muito a quem puder compartilhar experiências e conhecimentos sobre o tema!

1 resposta

Olá, Lucas! Tudo bem?

Sua dúvida é bastante pertinente e envolve algumas considerações importantes sobre persistência, segurança e resiliência ao escolher entre rodar um SQL Server em um container no Azure Container Instance (ACI) versus utilizar o Azure SQL Database, que é um serviço gerenciado.

Persistência e Perda de Dados:
Quando você utiliza um SQL Server em um container, os dados são armazenados dentro do container, a menos que você configure volumes persistentes. Se o container for reiniciado ou removido, os dados podem ser perdidos se não estiverem em um volume persistente. Para garantir a persistência dos dados, você pode montar um volume externo ao container, como um Azure File Share, que armazena seus dados de forma persistente, mesmo que o container seja reiniciado.

Segurança da Abordagem:
Expor um banco de dados diretamente a partir de um container pode apresentar riscos de segurança, especialmente se não forem aplicadas as devidas configurações de rede e autenticação. O Azure SQL Database, por ser um serviço gerenciado, oferece várias camadas de segurança integradas, como autenticação multifator, criptografia de dados em repouso e em trânsito, e proteção contra ameaças, sem a necessidade de configuração adicional por parte do usuário.

Resiliência e Alta Disponibilidade:
O Azure SQL Database oferece um nível de resiliência e disponibilidade muito superior, com SLAs de disponibilidade, backups automáticos, replicação geográfica e failover automático. Replicar esse nível de resiliência usando containers exigiria uma configuração complexa, envolvendo múltiplos containers, orquestração com Kubernetes, e configurações de replicação e backup manualmente, o que pode não ser viável ou eficiente.

Em resumo, a escolha entre essas duas abordagens depende do seu cenário específico. Se você precisa de um ambiente altamente disponível, seguro e com menos sobrecarga de gerenciamento, o Azure SQL Database é a escolha mais adequada. No entanto, se você precisa de flexibilidade para customizações específicas ou está em um ambiente de desenvolvimento/teste, rodar o SQL Server em containers pode ser uma opção viável.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.