28 Dezembro 2018

Implementação de escalabilidade através do Integration Services do SQL Server

Nos dias de hoje muitas das aplicações de software que se encontram no mercado são compostas por diversos sistemas de gestão. Do módulo mais simplificado, que visa a gestão das telecomunicações e das redes entre clientes, ao mais robusto, responsável pela gestão de ligações e falhas. Todos estes, são constituídos por utilizadores e servidores que realizam trocas de informação entre si, por intermédio de chamadas de procedimentos remotos (RPC) configuradas sobre um sistema de processamento distribuído.

Tendo em conta a função, presente e futura, do software, este deve ser dotado das mais diversas características de flexibilidade, sustentabilidade e funcionalidade. Porém, uma peculiaridade, por vezes, é deixada simplesmente ao acaso – A escalabilidade. Esta é a característica que será abordada ao longo do artigo.

Antes de proceder à exploração técnica da utilização da escalabilidade, é necessário proceder à análise do próprio conceito. A escalabilidade é refletida na capacidade de um software, aquando do seu desenvolvimento, de suportar de forma eficiente a implementação em pequena ou em larga escala. Uma vez que, com o tempo, poderá ser necessário adicionar capacidade para suportar mais utilizadores e/ou para proceder a uma melhoria na qualidade de serviço apresentada. Deste modo, é possível afirmar que a escalabilidade é uma particularidade desejável que permite a um sistema acomodar um número crescente de recursos.

Em todo o caso, como é expectável, a presença de uma escalabilidade reduzida conduz a um baixo desempenho apresentado pelo sistema. Por conseguinte, torna-se obrigatória a repetição, em excesso, de atividades algorítmicas dissipadoras de recursos. Estas atividades, são executadas com o objetivo de minimizar uma possível reengenharia que conseguisse atingir o total aproveitamento do paralelismo.

De seguida, são definidos dois métodos que possibilitam o aumento da escalabilidade em softwares que sejam executados sobre o SQL Server.

O primeiro método apresentado é relativo à escalabilidade estrutural (também conhecido como Vertical Scaling ou Scale-up). Neste, o objetivo passa por adicionar mais recursos (capacidade de processamento do CPU, memória RAM disponível e armazenamento) a uma única máquina. Esta opção é escolhida quando o utilizador não pretende efetuar grandes alterações na atual arquitetura.

O segundo método é relativo à escalabilidade de carregamento (Horizontal Scaling ou Scale-out). Ao contrário do anterior, são adicionados nós a um mesmo sistema que permitem a plena execução quando existe um aumento do tráfego de informação. Contudo, esta não é a única forma de expandir o sistema. É possível explorar diversas configurações, como a replicação peer-to-peer e AlwaysOn.

escalabilidade sql server

Imagem 1. Representação estrutural dos dois métodos

Fonte: https://turbonomic.com/blog/on-turbonomic/to-scale-up-or-scale-out-that-is-the-question/

Até à versão do SQL Server 2016, o componente SQL Server Integration Services (SSIS) era dotado apenas de uma execução limitada de pacotes. Somente uma execução por máquina. Por intermédio da introdução da funcionalidade Scale Out no SQL Server 2017, a Microsoft procedeu à remoção dessa lacuna. O Scale Out permite a execução de pacotes, apresentando alta performance, através da distribuição das execuções por várias máquinas de forma paralela. Esta nova funcionalidade veio mitigar os problemas acima mencionados, além dos seguintes específicos das implementações efetuadas no SSIS:

  • Aumento do número de pacotes;
  • Aumento do volume de dados provenientes de várias fontes;
  • Aumento da complexidade nas tarefas de transformação de dados.

De modo a usufruir das funcionalidades oferecidas é necessário, em primeira instância,  proceder à sua instalação e saber como configurá-la de forma correta.

Através do assistente de configuração do SQL Server – Imagem 2, aquando da escolha das características, é necessário selecionar pelo menos os seguintes itens:

  • Database Engine Services;
  • Integration Services:
    • Scale Out Master
    • Scale Out Work

escalabilidade sql server

Imagem 2. SQL Server 2017 – Seleção das funcionalidades a instalar

No próximo ecrã é possível proceder à configuração do servidor. No exemplo apresentado – Imagem 3 – optámos por continuar com os valores definidos por defeito.

escalabilidade sql server

Imagem 3. SQL Server 2017 – Configuração do servidor

Terminada a configuração do servidor, é necessário definir o modo de autenticação como Mixed Mode e de seguida escolher uma password e a lista dos administradores que possuirão acesso não-restrito à Database Engine – Imagem 4.

escalabilidade sql server

Imagem 4. SQL Server 2017 – Configuração da Database Engine.

Os próximos passos serão preponderantes para o correto funcionamento do SSIS Scale Out. O Master Node é o primeiro elemento configurado e é através deste que se torna possível receber e gerir os diversos pedidos de execução efetuados pelos utilizadores. Mais adiante, abordaremos o seu método de funcionamento e alguma da informação que é possível recolher através das views e stored procedures existentes. Relativamente à sua configuração, o número padrão do port é o 8391 e tendo em conta a inexistência de um certificado SSL, é criado um novo para o efeito – Imagem 5.

escalabilidade sql server

Imagem 5. SQL Server 2017 – Configuração do Master Node.

A configuração do Worker Node segue-se à do Master. A principal função deste nó passa pela execução de tarefas provenientes do Master e executa-as de forma local. Neste menu é apenas necessário proceder à especificação de qual o endpoint no qual cada Worker Node se deverá ligar, de modo a colocar-se a postos para receber indicações.

Imagem 6. SQL Server 2017 – Configuração do Worker Node.

Posto isto, é possível verificar o resumo de quais as funcionalidades a instalar e especificar o caminho onde será colocado o ConfigurationFile.ini – Imagem 7. Após a instalação, é necessário reiniciar do posto de trabalho e instalar o SQL Server Management Studio (SSMS), caso ainda não o possua – Imagem 8.

Imagem 7. SQL Server 2017 – Resumo da configuração.

Imagem 8. SQL Server 2017 – Instalação do SSMS.

As funcionalidades de gestão de todo o processo que são associadas ao elemento Master Node – anteriormente apresentado, são possíveis de executar devido às informações contidas no SSISDB Catalog. Como é possível verificar através da Imagem 9, neste, estão localizadas todas as informações sobre os diversos Worker Nodes, pacotes e execuções – Imagem 10.

Imagem 9. SSIS Scale Out Master – Funcionalidades SSISDB Catalog.

Imagem 10. SSIS Scale Out Master – Execução de pacotes.

Contudo, é possível aceder às mesmas funcionalidades através da execução de Views e Stored Procedures que se encontram disponíveis. De seguida, são apresentadas algumas das mais pertinentes para utilização por parte do Master Node.

  • Views:
    • [catalog].[master_properties]: Propriedades do Master Node

Imagem 11. Propriedades do Master

  • [catalog].[worker_agents]: Informações sobre os Worker Nodes
  • Stored Procedures:
    • Gestão:
      • [catalog].[disable_worker_agent]: Possibilita a remoção do Worker selecionado da atividade;

Imagem 12. Remoção do Worker

  • [catalog].[enable_worker_agent]: Possibilita a adição do Worker selecionado da atividade;

 

Imagem 13. Ativação do Worker

 

  • Execução:
    • [catalog].[create_execution]: Possibilita a criação de uma instância de execução;
    • [catalog].[add_execution_worker]: Adiciona um Worker à instância de execução;
    • [catalog].[start_execution]: Inicia a instância de execução.

O Scale Out não foi desenvolvido especialmente para programadores, que possuam um acesso privilegiado ao SQL Server Management Studio. Deste modo, a Microsoft dotou este componente de uma aplicaçao extra bastante intuitiva e de fácil acesso – via execução do ISManager.exe – no qual apresenta a seguinte interface – Imagem 14 e 15.

Imagem 14. Scale Out Manager – Informações gerais

Imagem 15. Scale Out Manager – Informação sobre cada Worker

Tal como fora apresentado, o Scale-Out do SQL Server Integration Services proporciona aos seus utilizadores a escalabilidade necessária dada a crescente necessidade para o sucesso da execução do processo. Não obstante, existem muitos fatores a ter em consideração quando é necessário planear e determinar a escolha entre a abordagem Scale-Out e a Scale-Up num determinado projeto. Em certos casos, apenas um servidor dotado de um grande poder e desempenho pode ser mais caro do que possuir diversos servidores com uma capacidade mais reduzida, principalmente quando o argumento é simplesmente financeiro. Contudo, a desvantagem da utilização de múltiplos servidores é relativa ao número de licensas SQL Server, custos relacionados com a energia e de hosting.

André Domingos
Associate Consultant
Blog