O post de hoje nasceu de uma discussão interna com o time da PowerTuning, estamos migrando um cliente que possui estrutura on-premises com Sql Server 2008 para o Azure e nas discussões iniciais o ambiente proposto havia sido desenhado com o Sql Managed Instance (PaaS) pelo desejo de num futuro próximo poder usufruir da licença Enterprise e do banco de leitura.

O ambiente proposto estava em torno de R$10.000,00/mês com as otimizações e configurações necessárias, mas (sempre tem um mas) que surgiu uma dúvida, não seria mais barato subir o sql server me uma máquina Virtual?

A princípio a resposta seria sim, mas para sermos justos precisamos comparar maçãs com maçãs e esse é meu objetivo no post de hoje.

Para começarmos vou usar a seguinte especificação:

  • 8 cores
  • 4 TB de espaço em disco
  • Região: Brazil South (apesar das regiões americanas serem mais baratas quero usar o mesmo exemplo que usei internamente com o time)
Nota 1: Não é possível igualar o comparativo de memória, que no caso no Managed Instance temos 5GB de memória por core e na VM temos 64GB na configuração escolhida. Logo nos casos aonde Memória é super importante a VM tem 60% mais memória.
💡
Caso queira uma comparação mais específica para seu cenário, entre em contato conosco. Podemos auxiliar desde a estimativa do ambiente até a migração para a nuvem.

Primeira comparação

Azure SQL Managed Instance
Virtual Machine com SQL Server

Antes de compararmos valores quero pontuar que quando estiverem considerando usar Máquinas Virtuais para banco de dados prefiram as máquinas da família E que possuem uma relação CPU x Memória maior que as outras, como no sql server pagamos o custo de licença por vCore utilizado a família E nos permite aumentar a memória sem aumentar consideravelmente o número de cores, diminuindo assim o custo com licenciamento.

A primeira coisa que aprendemos quando estamos lidando com bastante espaço em disco é que armazenamento na nuvem é infinito e barato, armazenamento gerenciado não!

  • Dos $2,231.99 do Sql Managed Instance $887.98 é referente aos 4TB de armazenamento. ~40%
  • Dos $1,961.76 da Máquina Virtual $856.11 é referente aos 4TB de armazenamento. ~44%

A desvantagem do armazenamento gerenciado é que pagamos pelo volume contratado e não pelo volume armazenado como no Azure Blob Storage, por exemplo.
A maior vantagem é justamente não precisamos nos preocupar com backup e tarefas do dia a dia. (relacionadas ao disco e não ao conteúdo).

Nessa comparação simples temos ~12% de redução usando máquina virtual, o que ao longo de alguns anos pode ser uma diferença significativa⁣, mas toda vez que comparamos serviços não podemos comparar apenas preço, temos que comparar benefícios de um sobre o outro.

Segunda Comparação

Para sermos justos precisamos no mínimo incluir o serviço de backup tanto para a VM quando para o Banco, uma vez que no Managed Instance não precisamos nos preocupar com Sistema Operacional e nem backup.

Máquina Virtual + Sql Server + Backup

As coisas estão começando a ficar interessantes, agora com os ajustes de backup temos o seguinte cenário:

  • Managed Instance: $3,010.04
  • Máquina Virtual: $3,285.78

O cenário com Máquina Virtual passou a ficar ~10% mais caro.

Terceira comparação

As coisas mudam de patamar mesmo quando falamos do Sql Server Enterprise, o desejo do cliente é usar alguns recursos do SQL Server Enterprise após a migração, especialmente rebuild online de índice.
A justando os valores do Managed Instance para a camada Business Critical e do licenciamento da VM temos o seguinte cenário:

  • Managed Instance: $4,959.42
  • Máquina Virtual: $4,891.78

Aparentemente uma diferença insignificativa que poderíamos escolher um ou outro, MAS (aqui entra um GRANDE MAS) a camada Business Critical do Sql Managed Instance além da licença Enterprise ela conta com o Always ON configurado, isso nos garante 2 benefícios GIGANTES:

  • Sempre 3 instâncias do servidor rodando em 3 nós diferentes, sendo assim temos alta disponibilidade de fato gerenciado direto pelo Azure.
  • Acesso ao banco de leitura, mudando apenas a string de conexão, com isso ganhamos mais 8 cores para leitura em um nó secundário sem precisar alterar em nada arquitetura do ambiente e sistemas.
High availability - Azure SQL Managed Instance
Learn about the Azure SQL Managed Instance service high availability capabilities and features.

Para termos o mesmo cenário em VMs teríamos que ter mais 2 VMs rodando, o que praticamente triplicaria nossos custos.

Quarta Comparação

Para não falarmos que o Managed Instance seria a melhor opção em todos os cenários, quero mostrar um cenário onde Máquina Virtual seria mais adequado.

Para casos onde a quantidade de memória disponível é mais importante temos que mudar o Tipo de Hardware na nossa configuração. (lembrando que os valores são com licença enterprise)

  • Máquina Virtual - 64GB - $4,891.78
  • MI Standard - 40GB - $4,959.42
  • MI Premium Series - 56GB - $6,965.66
  • MI Memory Optimized - 108GB - $8,610.35

Considerando o uso da VM sem alta disponibilidade temos uma redução de ~30% em relação à camada Premium Series.

Se colocarmos o recurso Always ON em consideração teríamos:

  • Máquina Virtual - 64GB (x3) - $14,675.34
  • MI Standard - 40GB - $4,959.42
  • MI Premium Series - 56GB - $6,965.66
  • MI Memory Optimized - 108GB - $8,610.35

No cenário de Always ON o Sql Managed Instance Premium sairia ~53% mais barato em relação ao cenário com VM.

Resource limits - Azure SQL Managed Instance
This article provides an overview of the resource limits for Azure SQL Managed Instance.

Bônus: Sql Database - Hyperscale

Se você chegou até aqui, eu queria compartilhar uma dica bônus com você.
A comparação foi feita usando Sql Server Managed Instance x Máquina Virtual, pois é o cenário que atende o cliente que não é compatível com o Sql Azure Database.

Em casos aonde o banco é compatível temos preferido migrar para o Azure Sql Database na camada Hyperscale, que é o produto Cloud Native da Microsoft.

Azure Sql Database Hyperscale
  • Managed Instance: $4,959.42
  • Hyperscale: $3,966.05

Com os mesmos benefícios em termos de plataforma e recursos temos uma redução de ~20% utilizando o Azure Sql Database Hyperscale.

What is the Hyperscale service tier? - Azure SQL Database
This article describes the Hyperscale service tier in the vCore-based purchasing model in Azure SQL Database and explains how it’s different from the General Purpose and Business Critical service tiers.

Conclusão

Espero que tenham gostado dessa comparação e entendido um pouco mais sobre a diferença entre PaaS x IaaS na nuvem.
Deixa aqui nos comentários qual cenário você escolheria.

💡
Caso queira uma comparação mais específica para seu cenário, entre em contato conosco. Podemos auxiliar desde a estimativa do ambiente até a migração para a nuvem.

[]s e até a próxima.

💡
Podemos te ajudar com uma revisão 100% gratuita do seu ambiente cloud.
Share this post