DevOps – Testes e Operações – Dicas de Configurações Limítrofes de Ambientes para Testes e QA – Parte 1/2

Introdução

Esse artigo tem como finalidade, demonstrar dicas sobre possíveis problemas que seu software pode apresentar em ambientes, ao realizar testes de homologação, testes em ambientes de qualidade (para entrada em produção) e até configurações direta de ambientes de produção usando as tecnologias da Microsoft.

É muito comum configurarmos nossos ambientes quando testamos softwares ou quando preparamos um ambiente de homologação ou QA, sem restrições de acesso, sem configurações limitrofes dos aplicativos, dando assim, condições de aplicações usarem todo o ambiente sem nenhuma restrição e limites como (consumo de memória, permissões NTFS, quantidade de acessos simultaneos, alocação de conexões TCP/UDP, acesso a rede, e etc.), e por muitas vezes, isso pode mais atrapalhar do que ajudar, pois em ambientes reais de produção, há regras de controle de acessos, uso de recursos, etc.

Por exemplo:

Você realize testes em um software que utiliza um banco de dados, porém, nas suas configurações de banco, não há limites de Timeout de conexão, consumo de recursos do Microsoft SQL Server, etc. E o aplicativo, por muitas vezes, pode estar, incorretamente alocando esses recursos, e como não há nenhum limite em seu ambiente, simplesmente ele funciona “corretamente”. Porém quando se hospeda esse aplicativo em um SQL Server Corporativo, que possui regras de acesso, consumo, etc., justamente devido a esse SQL ser compartilhado com outras aplicações, necessitando ter esses ajustes de melhores práticas (quem é DBA sabe do que falo), o seu aplicativo que estava “funcionando” corretamente, começa a apresentar erros.

Para evitar ou mitigar situações assim, segue abaixo informações das principais tecnologias e dicas gerais das configurações.

Ou seja, nas configurações das Plataformas em que você irá hospedar seu aplicativo, tanto no Sistema Operacional, Banco de Dados e Servidor de Aplicativos (Web), há configurações que podem impactar diretamente no funcionamento de seu aplicativo, se ele não estiver preparado para se adequar a essas realidades de ambientes disponíveis, sendo que, por muitas vezes, seu aplicativo que deverá se adequar ao ambiente e não o ambiente à seu aplicativo.

Além disso, temos que cuidar também na questão de edição dessas tecnologias, pois, por muitas vezes, uma edição de uma Plataforma, não trás determinadas features que a outra edição trás. Um exemplo bem como é o próprio SQL Server. Dependendo da edição, ele não trás determinadas funcionalidades e isso pode impactar diretamente em seu aplicativo.

Imagine que você está desenvolvendo e testando em uma edição do Microsoft SQL Server Developer (que se compara a edição do SQL Server Enterprise) e você descobre em um fórum uma funcionalidade no SQL Server que auxilia no uso de particionamento de tabelas, acessos, etc. e resolve usar tal funcionalidade e adequa toda a sua programação em cima disso. Depois de concluído, ao liberar a aplicação, percebe-se que sua aplicação só funcionará adequadamente no Microsoft SQL Server Enterprise que custa apenas de 3 à 6 vezes mais caro que o SQL Server Standard Edition. Ou seja, você acabou de limitar e muito seu campo de atuação e venda de aplicativo, uma vez que nem todas as empresas possuem caixa para adquirir uma licença dessa edição.

Dicas Gerais

Desenvolva e teste imaginando um cenário restritivo, com:

– Windows Server ou Cliente na sua edição mais simples;

– SQL Server Express Edition;

Permissões DB_OWNER da base de dados;

– Permissões de Leitura NTFS;

– Não usar permissões NTFS e SMB (Compartilhamento) Controle Total e Todos (Everyone);

User Access Control (UAC) ativado nos servidores e computadores;

– Se sua aplicação é Windows Forms, validar se funciona no contexto de usuário logado do grupo Users ou Power Users;

– Redes com limitação de QoS (Windows) para testes de desempenho;

– Usar técnicas de Testes Não Funcionais (Desempenho, Recuperação e Falhas, Stress);

Claro que bem alinhado com os Arquitetos e Projetos para que todos concordem e entendam as necessidades de usar ambientes assim.

Microsoft SQL Server (Banco de Dados)

Principais situações encontradas:

– Ao executar uma consulta, por exemplo, de relatório, depois de um período específico da consulta rodando, apresenta um retorno de erro, informando Timeout;

– Ao tentar conectar remotamente, apresenta falha de conexão;

– Ao tentar instalar a aplicação em um ambiente de produção, o script de criação do banco de dados falha (normalmente o usuário não é o sysadmin);

– Ao executar jobs de trabalho, apresenta lentidão nas consultas, execução de Store Procedures, entre outras situações.

Locais de Configuração:

O Microsoft SQL Server possui diversos locais de configurações que definem por exemplo, Consumo de Memória, uso de Cores de Processador, Timeout de Conexão, Uso de Memória, Conexões de Rede, Named Pipes, etc.

– SQL Server Configuration Manager

image

Local onde se configura as conexões de rede do SQL Server. Usado para definir quais IPS serão usados para “escutar” o serviço do SQL Server, quais portas de conexão serão usadas, se haverá o uso de portas dinâmicas do SQL Server.

image

SQL Server Management Studio

Dica: Existe a versão Completa e Basica, disponível na mídia de instalação do Microsoft SQL Server e também disponível para download no site.

image

Ferramenta gráfica para lhe auxiliar nas configurações das instâncias do Microsoft SQL Server.

image

image

Configuração de consumo de memória máxima por instância. Lembre-se, em produção será sempre mais restritivo.

image

Configuração de conexões concorrentes.

image

Consumo máximo de Cores por instância. Haverá ambientes muito mais restritivos quando ao uso de processadores paralelos, como sua aplicação irá se comportar em larga escala?

image

Permissões de usuário. Sysadmin? Só dentro de seu ambiente. Em produção, muito improvável.

image

Configurações de paralelismo, tamanho de pacotes de rede, timeout de conexão remota.

image

Timeout de conexão com o Banco de Dados.

image

Dicas:

Não coloque o timeout de conexão com o banco de dados como 0, pois, você dificilmente irá encontrar servidores de clientes, na Azure, etc. com configurações assim, pois se faz necessária tal configuração. O que precisa ser entendindo entre as partes (Arquitetura, Testes e TI) de sua empresa que produz o software, o que é aceitável para a aplicação, e como a aplicação pode comportar-se melhor para realizar tais consultas;

Limite o consumo de memória, alinhando uma média aceitável e funcional para a aplicação bem como a realidade das empresas e hospedagens como Microsoft Azure e Parceiros de Hosting. Lembre-se que esses locais possuem alta elasticidade de alocação de recursos, porém a questão não é essa, e sim o uso incorreto por parte da aplicação por esses recursos, como por exemplo um SCAN completo no banco na simples consulta de uma informação;

Valide a criação de uso do banco de dados com usuários mais restritivos (não SYSADMIN), será bem dificil em ambientes de produção, a aplicação possuir tal acesso;

Valide quais os tipos de recursos a aplicação precisa (Conexão TCP, Named Pipes, etc.) para colocar corretamente no manual do produto;

Internet Information Server (Servidor Web)

Principais situações encontradas:

– Ao executar um acesso Web, gera uma exceção de timeout;

– Ao executar um acesso Web, gera um acesso negado;

– Em determinados momentos de funcionamento de um Web Services, ocorrem exceções no Visualizador de Eventos de falhas de funcionamento da aplicação;

Locais de Configuração:

Configurações Gerais do Site (Advanced Settings)

image

Tempo de timeout de conexão com o site.

image

Configurações do Pool de Aplicativo do Internet Information Services

Uso máximo de CPU, timeout de uma conexão ociosa.

 

image

Configuração de funcionamento de um processo de Pool de Aplicativo

image

Determinação de reciclagem de um Pool de Aplicativo.

image

Maiores Informações

Visão Geral – Edições do SQL Server

Lista de Versões do Windows Server – Wikipédia

Visão Geral – Edições do Windows Server

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s