Considere as práticas recomendadas para o desenvolvimento de aplicativos
Nesta unidade, você explora algumas práticas recomendadas a serem aplicadas ao desenvolver aplicativos com o Banco de Dados do Azure para MySQL - Servidor Flexível que podem ajudar a garantir melhor desempenho, resiliência e segurança. Essas práticas recomendadas incluem:
- Coalocação de recursos.
- Implementando o pool de conexões.
- Escolhendo o tamanho certo do contêiner do aplicativo.
- Implementação de isolamento de rede e conectividade SSL.
- Implementação de lógica de repetição para gerenciar falhas transitórias.
- Escolher o tamanho certo de computação e armazenamento para o banco de dados.
Essas práticas recomendadas entram em jogo em vários pontos durante o processo de desenvolvimento de aplicativos com o Banco de Dados do Azure para MySQL - Servidor Flexível, conforme mostrado no diagrama a seguir.
Nota
Esta lista de boas práticas não é exaustiva. Certifique-se de consultar a documentação do Banco de Dados do Azure para MySQL para obter guias detalhados sobre a implementação de práticas recomendadas relacionadas à rede, segurança, monitoramento, otimização de desempenho, continuidade de negócios e recuperação de desastres, etc.
Colocalizar recursos
Ao implantar seu aplicativo no Azure, certifique-se de que todas as suas dependências de recursos estejam hospedadas na mesma região. Distribuir instâncias de recursos entre regiões ou zonas de disponibilidade pode criar latência de rede, o que pode afetar o desempenho geral do seu aplicativo.
Implementar pool de conexões
O gerenciamento de conexões de banco de dados dentro de um aplicativo pode afetar significativamente o desempenho geral do aplicativo. Para melhorar o desempenho e a resiliência do aplicativo, considere implementar o pool de conexões para se conectar a um servidor flexível do MySQL. Um pool de conexões (como o ProxySQL) pode diminuir o número de conexões ociosas e reutilizar conexões existentes.
Gorjeta
Para otimizar o desempenho, em caminhos de código chave, reduza o número de vezes que as conexões são estabelecidas e o tempo necessário para estabelecer essas conexões.
Escolha o tamanho certo do contêiner do aplicativo
Como selecionar o tamanho apropriado para o contêiner do aplicativo é vital, certifique-se de que o aplicativo tenha recursos de computação e memória suficientes para lidar com as cargas esperadas. Você pode usar ferramentas como o JMeter para ajudar com o teste de carga, o que pode ajudá-lo a dimensionar corretamente seus recursos com base nos resultados.
Implementar isolamento de rede e conectividade SSL
O Banco de Dados do Azure para MySQL - Servidor flexível com integração VNet (o método de conectividade de acesso privado) oferece segurança e isolamento de rede. Você pode usar a integração VNet para bloquear o acesso do servidor somente à sua infraestrutura de rede virtual (VNet). Os terminais privados aumentam esta segurança, permitindo-lhe ligar-se ao seu servidor flexível de forma segura através de uma rede privada, evitando a exposição à Internet pública. Você pode proteger seus recursos de aplicativo e banco de dados em uma única VNet ou em diferentes VNets na mesma região ou em regiões diferentes (e conectado perfeitamente com emparelhamento de rede virtual).
Também é recomendado proteger os dados em trânsito, garantindo que seu aplicativo se conecte a um servidor flexível do MySQL usando SSL (Secure Sockets Layer).
Implementar lógica de repetição para gerenciar falhas transitórias
Como os ambientes de nuvem têm maior probabilidade de encontrar falhas transitórias, como interrupções de conectividade de rede ou tempos limite de serviço, você deve garantir que seus aplicativos implementem lógica para lidar com esses problemas, geralmente tentando novamente solicitações após um atraso.
É uma boa prática esperar cinco segundos antes da primeira tentativa. Em seguida, a cada nova tentativa subsequente, aumente o tempo de espera gradualmente, até 60 segundos. Após um número fixo de tentativas, o aplicativo pode considerar que a operação falhou e notificá-lo para que você possa investigar o erro persistente ainda mais.
Escolha o tamanho certo de computação e armazenamento para seu banco de dados
É importante analisar sua carga de trabalho e dimensionar suas instâncias de servidor flexíveis do MySQL corretamente para alcançar um equilíbrio aceitável entre o desempenho e o custo do aplicativo.
Computação
Você pode criar um servidor flexível MySQL em uma das três camadas de computação: Burstable, General Purpose e Business Critical. Como ponto de partida para escolher a camada de computação, considere os detalhes na tabela a seguir.
Escalão de computação | Cargas de trabalho de destino |
---|---|
Expansível | Ideal para cargas de trabalho que não precisam da CPU completa continuamente. Econômico para aplicativos Web menores e cargas de trabalho de desenvolvimento. |
Fins Gerais | Ideal para a maioria das cargas de trabalho de negócios que exigem computação e memória equilibradas com taxa de transferência de E/S escalável. Os exemplos incluem servidores para alojar aplicações Web e móveis e outras aplicações empresariais. |
Crítico para a Empresa | Ideal para cargas de trabalho de banco de dados de alto desempenho que exigem desempenho na memória para processamento de transações mais rápido e maior simultaneidade. Os exemplos incluem servidores para processamento de dados em tempo real e aplicações com elevado desempenho transacional ou analítico. |
Embora você também possa redimensionar servidores flexíveis do MySQL após a criação, você só pode aumentar ou diminuir a escala entre as camadas de uso geral ou crítica de negócios.
Armazenamento
Em termos de armazenamento, você pode aumentar a escala quando estiver se aproximando dos limites de capacidade de armazenamento. Você também pode habilitar o recurso de crescimento automático de armazenamento para garantir que o serviço dimensione automaticamente o armazenamento à medida que ele se aproxima dos limites de armazenamento.
Para tomar decisões informadas sobre computação e armazenamento em tempo hábil, monitore as principais métricas do Azure Monitor, como porcentagem de CPU do Host, porcentagem de memória do host, porcentagem de armazenamento, porcentagem de E/S, conexões ativas, etc., constantemente ou configure alertas para notificá-lo quando a solução se aproximar dos limites de sua implantação.
Ajuste as IOPS para um desempenho ideal
Um aprimoramento significativo disponível no Banco de Dados do Azure para MySQL - Servidor Flexível é o recurso Autoscale IOPS (Input/Output Operations Per Second), que complementa o recurso IOPS pré-provisionado existente. Esta seção explora como você pode usar IOPS pré-provisionadas e opções de IOPs de dimensionamento automático para otimizar o desempenho do banco de dados com base em requisitos de carga de trabalho variáveis.
IOPS pré-provisionadas
Você pode alocar um número específico de IOPS para sua instância de banco de dados usando IOPS pré-provisionadas. Esse recurso é crucial para cargas de trabalho que exigem desempenho consistente e previsível. Ao definir um limite de IOPS definido, você pode garantir que seu banco de dados possa lidar com um número definido de solicitações por segundo, mantendo assim um desempenho estável e confiável. Você também tem a flexibilidade de ajustar o número de IOPS provisionadas à medida que sua carga de trabalho muda, permitindo escalabilidade e controle preciso sobre o desempenho do banco de dados.
IOPS de dimensionamento automático
O dimensionamento automático de IOPS oferece dimensionamento dinâmico de desempenho, um recurso essencial para gerenciar com eficiência cargas de trabalho flutuantes. Com esse recurso habilitado, o servidor de banco de dados ajusta automaticamente as IOPS com base na demanda em tempo real, sem a necessidade de pré-provisionamento. Ter essa flexibilidade é particularmente benéfico para aplicativos de missão crítica de nível 1 que podem ter necessidades de desempenho variáveis.
Os principais benefícios do uso da funcionalidade IOPS do Autoscale incluem:
Dimensionamento dinâmico: o recurso Autoscale IOPS ajusta automaticamente os limites de IOPS com base na demanda real da carga de trabalho. Esse ajuste dinâmico ajuda a garantir que seu banco de dados opere consistentemente em níveis de desempenho ideais sem intervenção manual.
Lidando com picos de carga de trabalho: esse recurso permite que seu banco de dados lide perfeitamente com aumentos repentinos de carga, garantindo que o desempenho do aplicativo permaneça consistente durante os períodos de pico. Essa capacidade é crucial para manter a disponibilidade do serviço e a satisfação do usuário.
Eficiência de custos: Ao contrário das IOPS pré-provisionadas, em que você paga por um limite especificado independentemente do uso real, as IOPS de dimensionamento automático garantem que você pague apenas pelas operações de E/S realmente usadas. Isso pode resultar em economias de custos significativas, especialmente para bancos de dados com necessidades variáveis de E/S.
Gerenciamento simplificado: ao reduzir a necessidade de dimensionamento manual e planejamento de capacidade, o Autoscale IOPS libera recursos administrativos, permitindo que sua equipe se concentre em iniciativas mais estratégicas em vez de manutenção de rotina.