• Nenhum resultado encontrado

Para chegar na arquitetura do ConManager, utilizamos na fase de elicitação de requisitos o trabalho feito por Salehie e Tahvildari (2009), que traz um estudo sobre softwares autoadaptativos. Nele são detalhadas as características e aspectos que o de- senvolvedor deve levar em consideração no instante do desenvolvimento desse tipo de sistema, além de apresentar uma metodologia de elicitação de requisitos voltada para os softwares autoadaptativos. Através das conhecidas perguntas: Onde, Quando, O quê, Por quê e Como. Sendo que as respostas precisam estar inseridas no contexto de softwares autoadaptativos, levando em consideração suas características na hora do levantamento dos requisitos. Será dado um exemplo de um requisito de cada pergunta abaixo, enquanto que todos os requisitos elicitados podem ser conferidos no Apêndice A.

Onde: Quais artefatos e em quais camadas ocorrerão as mudanças? Quais outras camadas do software, em que nível de granularidade que essa mudança precisa acontecer?

Estes requisitos estão organizados de acordo com as camadas identificadas no ambiente. Por exemplo:

Camada: Hardware/S.O.: Os dados que deverão ser coletados diretamente do hardware/ sistema operacional são:

1. Processamento

• Porcentagem de utilização do CPU: Porcentagem ocioso, Utilizado por usuários, Utilizado pelo sistema, Espera IO;

• Carga de processamento (load average): Carga média do último minuto, Carga média dos últimos 5 minutos, Carga média dos últimos 15 minutos;

• Quantidade de núcleos do processador

Quando: São levados em consideração os aspectos temporais, por exemplo: a mudança é factível para aquele momento ou ela acarretará sobrecarga no sistema? Há restrições para mudanças a qualquer momento? Por exemplo:

• A adaptação acontecerá em duas camadas: Na camada do gerenciador de contêiner acontecerá de forma reativa, quando um dos servidores de aplicação estiver sobrecar- regado e de forma proativa quando o ConManager, baseado na tabela de horários e no histórico de intervenções para aquela aula, redimensionar os recursos para um valor que melhor atenda a demanda. Na camada do balanceador de cargas acontecerá quando um contêiner é incluído ou excluído nos grupos de balanceamento.

O quê: Com essa questão é possível identificar quais atributos ou artefatos de um sistema podem ser mudados com ações de adaptação e qual mudança é necessária em cada uma

Capítulo 4. Projeto ConManager 45

das situações. Que artefatos se deve considerar? Tenho outras alternativas para executar as mudanças?

Esses requisitos também estão organizados em camadas, por exemplo:

Camada: Gerenciador de contêiner: Os artefatos que podem sofrer alteração na camada de gerenciador de contêiner são:

1. Contêineres ativos

• Criar contêiner. Checar na listagem dos contêineres. • Excluir container. Checar na listagem dos contêineres.

• Iniciar contêiner. Checando o número de contêineres executando. • Parar executando. Checando o número de contêineres rodando.

Por quê: Essa pergunta deve ser respondida com as motivações que se tem para construir um software autoadaptativo. Esse tipo de pergunta serve para definir os objetivos do sistema como robustez, disponibilidade, confiabilidade, etc. Por exemplo:

• A abordagem escolhida para solucionar o desafio de criar e gerenciar vários servidores de aplicação que atendessem o ambiente de acesso remoto montado nos laboratórios de informática foi a utilização de contêineres compartilhando recursos do hardware. Por esse fato, há sobrecarga de recursos em alguns servidores, enquanto em outros o recurso é subutilizado, gerando perda de desempenho nos computadores do labora- tório com muita utilização. O ConManager é um sistema que monitora o uso dos servidores e autoadapta o provisionamento dos recursos entre instâncias para prover o melhor aproveitamento deles, otimizando os recursos do hardware.

Quem: Aqui foi definido o grau de automação e o envolvimento humano no software. Nesse tipo de sistema, espera-se que o humano tenha a mínima intervenção possível, uma vez que o sistema deve ser capaz de se ajustar às diferentes situações em tempo de execução. Mesmo que a intervenção humana seja mínima, essa interação do sistema com os proprietários e gestores é necessária para construir confiança e definição das regras de negócio. Por exemplo:

• O ConManager deverá ser capaz de seguir as fases determinadas pelo Mape-K de maneira autônoma. No entanto, o sistema deve ser capaz de prover o máximo de informações que auxiliem o administrador nos casos que a intervenção humana for necessária. Essa intervenção consiste na adaptação dos recursos dos contêineres e adaptação do serviço de balanceamento de cargas. Para isso, é necessário que o sistema avise ao administrador que há sobrecarga de recursos, exiba a quantidade de

Capítulo 4. Projeto ConManager 46

recursos distribuída entre os contêineres, exiba também os gráficos de utilização do ambiente, além da tabela de horário das aulas. Essas informações auxiliarão a tomar a decisão mais acertada.

Como: Por fim, é descrito como as ações de adaptação ocorrerão no ambiente. São mapeadas as possíveis condições que o sistema enfrentará em tempo de execução e decidido se a mudança é apropriada dada as condições vigentes e os possíveis impactos de cada ação. Por exemplo:

1. Reiniciar servidor de aplicação

• Descrição da ação: Essa ação reinicia um servidor de aplicação. • Parâmetros:

– ID:Inteiro: Identificador do servidor de aplicação a ser reiniciado;

• Implementação: Esta ação é implementada através de um método da API OpenVZ fazendo uso de chamadas ao comando vzctl. A seguinte chamada precisa ser realizada para reiniciar o servidor de aplicação indicado.

– Vzctl restart $id;

• Pré-condição: O servidor deve estar com o status “running”.

• Pós-condição: O servidor é reiniciado, logo todos seus processos são reiniciados. Ainda na fase de análise do software, a criação dos diagramas de casos de uso auxiliou na tarefa de pensar nas funcionalidades do sistema, como o usuário iria interagir com os componentes antes mesmo deles serem desenvolvidos. Esse diagrama mostra as funcionalidades do sistema e a ordem sequencial que eles são exibidos neste documento é a mesma que deve ser obedecida na configuração do ConManager, bem como a demonstração de sua utilização para gerenciar o ambiente. Todos os casos de usos podem ser conferidos no Apêndice B.

Documentos relacionados