• Nenhum resultado encontrado

SISTEMA MULTIAGENTE ORIENTADO A MICROSSERVIÇOS

Um agente é proativo no sentido de que ele toma iniciativas para executar uma determinada tarefa e busca alcançar os próprios objetivos sem estímulos externos. Sendo comunicativo, ele pode interagir com outras entidades para auxiliá-las a alcançar os objetivos próprios ou de outros. Assim, a capacidade proativa consiste em tomar decisões em relação a alterações do ambiente, que por sua vez é monitorado (WOOLDRIDGE, 2009; MCARTHUR et al., 2007).

Diante deste contexto, o agente rastreador (TAg) atua de forma proativa gerando informações relevantes que podem auxiliar na tomada de decisão e a interação. Estas informações são utilizadas pelos demais atores para realizar procedimentos antes que ocorra um evento negativo. Assim, as informações disponibilizadas pelo TAg podem ser utilizadas pelos demais agentes do SMA para prever resultados e interagir com o aluno a qualquer momento, melhorando assim a experiência do aluno no ambiente.

Pode-se apresentar como exemplo dois agentes: o de Interface (IAg) e o de Conhecimento (KAg). O IAg pode utilizar informações disponibilizadas pelo TAg para a interação com o usuário por meio da interface do Moodle. Já o KAg pode utilizar os dados obtidos para prever eventos e agir antecipadamente antes de um evento ocorrer, permitindo com que os atores analisem as informações e realizem ações mitigando diversos problemas, como a evasão do aluno, por exemplo.

Pesquisas foram realizadas sobre as aplicações do paradigma dos microsserviços como uma estrutura para a construção do SMA mais aderentes ao estado da arte. O estudo tem como objetivo diminuir a lacuna existente entre os esforços da indústria e os acadêmicos (BORKHARDT, 2018;

COLLIER, et al., 2015; HIGASHINO et al., 2018). Assim, para garantir que os microsserviços atendam a essas expectativas, várias especificações e padrões foram propostos e criados, e os produtos de middleware estão se tornando mais robustos.

No mercado, existem diversas plataformas de desenvolvimento orientado a agentes. Para este trabalho, utilizou-se como base a plataforma desenvolvida por Haendchen Filho (2017) em sua tese de doutorado, o MIDAS. O MIDAS é uma plataforma para o desenvolvimento do SMA. Sua arquitetura é composta por um Agent Server (AS) e Agent Containers (AC), conforme detalhado na Figura 6.

O AS é responsável pelas regras de integração da plataforma, com a sincronização dos contêineres e interoperação com aplicativos externos. Ele contém três interfaces principais: (i) uma interface HTTP para comunicação intraplataforma entre o AS e os ACs; (ii) uma interface REST (Representational State Transfer) que permite a comunicação com aplicativos externos; (iii) uma interface web para gerenciamento e configuração humana.

Cada AC é um contêiner leve que abriga agentes de software e/ou microsserviços. Ele é capaz de catalogar a interface de seus próprios serviços e prover serviços de comunicação entre seus próprios agentes e agentes residentes em outros containers. Os contêineres podem se registrar em um servidor MIDAS, expondo seus serviços e agentes, permitindo a colaboração distribuída com outros contêineres no mesmo servidor de domínio.

Figura 6. Arquitetura genérica da plataforma Fonte: Haendchen Filho (2017).

Complementarmente, o AS realiza a integração e a descoberta entre seus contêineres filhos, eliminando a complexidade da pesquisa de serviço e solicitações remotas entre contêineres. Os agentes de aplicativo são instanciados em contêineres e desenvolvidos estendendo a classe abstrata, a partir da qual o comportamento específico do aplicativo pode ser implementado.

Colocados no AS e AC, estão os agentes de middleware. Esses agentes são compostos pelo Broker, Proxy, Catalog, Blackboard e Manager. Eles fornecem serviços de infraestrutura, desempenhando colaborativa e proativamente as funções definidas pela arquitetura de referência.

A introdução do conceito de agente para desempenhar essas funções está em conformidade com a tendência atual e os requisitos não funcionais para arquiteturas orientadas a microsserviços:

flexibilidade, comportamento dinâmico, proatividade e adaptabilidade. Eles abstraem o código padrão necessário para implementar essas características, como protocolos de comunicação, controle de concorrência, gerenciamento do ciclo de vida, descoberta e interoperabilidade de serviços, permitindo que o desenvolvedor concentre o desenvolvimento apenas em características específicas do negócio.

O agente Broker concentra-se nos aspectos arquitetônicos relacionados ao transporte de mensagens. Ele desempenha tarefas de enviar, receber, empacotar, descompactar e gerenciar exceções. Ele traduz a solicitação de agentes e serviços em fluxos HTTP. Já o agente Catalog foca em relevantes aspectos relacionados ao conceito de recursos de um modelo orientado a serviços. Uma descrição de recurso é uma representação de metadados executável em máquina que possibilita a um humano ou a um programa de software localizar serviços e agentes no ecossistema.

O agente Proxy desempenha as funções definidas pelo modelo orientado a serviços, que se concentra nos aspectos arquitetônicos relacionados ao processamento de mensagens. Ele atua como um representante do provedor de serviços, sendo responsável pela configuração dinâmica e pela criação de instâncias. A configuração dinâmica concentra-se na capacidade de redirecionar mensagens para diferentes provedores durante o tempo de execução, sempre que o agente Catalog atualiza o modelo de recursos. O Agente Manager é o mais complexo da arquitetura, desempenhando as funções definidas nos níveis de gerenciamento e política. Ele envolve um conjunto de tarefas que permitem o controle sobre a plataforma, como gerenciamento do ciclo de vida, atividades de verificação, estatísticas, relatórios de QoS (Qualidade de Serviços) e assistentes da GUI (Interface Gráfica do Usuário).

Por fim, o agente do Blackboard assume a responsabilidade pela implementação de técnicas de troca de informações simbólico cognitivo no SMA. Sua estrutura segue o padrão básico do Blackboard. Assim, as fontes de conhecimento representam os agentes, a estrutura de dados é visível para todos os agentes e o controlador é responsável por notificar os agentes sobre as mudanças no ambiente.

Quando um AC está sendo executado no modo independente, ele possui um agente local do Blackboard que lida com a comunicação intracontêiner. No entanto, quando um AC se conecta a um AS, cada agente local do Blackboard e cada AC são sincronizados com o AS Blackboard para fornecer comunicação transparente em todo o ecossistema. A abordagem apresentada é uma tendência para o desenvolvimento de sistemas e traz como vantagens a modularidade, possibilitando assim, a reutilização de componentes e a facilidade de manutenção.