Uma plataforma HPC Shelf orquestra a atuação de um conjunto de atores, ou intervenientes, que a veem sob diferentes perspectivas. Por exemplo, como ilustrado na Figura 19, para a perspectiva dos usuários especialistas, a nuvem oferece software como serviço (SaaS), enquanto para provedores e desenvolvedores consiste em plataforma como serviço (PaaS). Já para o mantenedor, a visão é de infraestrutura como serviço (IaaS).
4.4.1 Especialistas
Especialistas de domínio são os atores que fazem uso das funcionalidades de aplica- ções da HPC Shelf para resolver problemas de seu interesse. Esses atores são especialistas em um determinado domínio, notadamente nas áreas de ciências e engenharias. Espera-se que aplicações disponibilizem para usuários especialistas uma interface de alto nível, com abstrações adequadas que facilitem a especificação de problemas, ao modo, por exemplo, de linguagens específicas de domínio(DSLs - Domain Specific Languages). Desse modo, especialistas abstraem-se totalmente das infraestruturas computacionais sobre as quais os problemas que descreve são solucionados, bem como da própria natureza orientada a componentes dessas soluções.
possível que outros usos se façam de suas aplicações. Por exemplo, uma aplicação poderia oferecer uma interface para artefatos de propósito geral para desenvolvimento de programas paralelos, voltados a especialistas em programação paralela, como é realizado atualmente no HPE (CARVALHO JUNIOR; REZENDE, 2013).
4.4.2 Provedores
Provedores de aplicações são os atores responsáveis pela construção e disponibi- lização de aplicações para os usuários especialistas. Provedores possuem competência na composição de soluções computacionais para problemas dentro do domínio de interesse de uma determinada classe de especialistas, a partir de componentes que implementam funcionalidades necessárias. A abstração de componentes do modelo Hash torna possível que não seja necessário que provedores sejam especialistas em computação paralela. De fato, do ponto de vista do provedor, sistemas de computação paralela são enxergados como workflows científicos baseados em componentes, onde as preocupações de paralelismo encontram-se encapsuladas nos com- ponentes. Entretanto, a flexibilidade da plataforma ainda permite que interesses de paralelismo sejam expostos aos provedores em contratos contextuais dos componentes usados na composição, incluindo plataformas virtuais, quando necessário e os provedores possuam competência para tal.
4.4.3 Desenvolvedores
Desenvolvedores de componentes são os atores responsáveis pela construção de componentes paralelos que representam software especializado para fazer uso das características, possivelmente particulares, de plataformas de computação paralela oferecidas pela HPC Shelf, chamadas de plataformas virtuais e também tratadas como componentes. São esses componentes que serão usados para formar novos componentes, e poderão ser consumidos pelos provedores de aplicaçõespara montar os sistemas de computação paralela que atendem às necessidades de aplicações. Para isso, supõe-se que os desenvolvedores são especialistas em programação paralela e plataformas de computação paralela, pois necessitarão disso para otimizar cada componente segundo as características arquiteturais do perfil de plataforma virtual sobre a qual o componente executará.
Core
Back-End (infrastructure) SAFe (framework de aplicações) application user application provider infrastructure maintainer Developer Front-End (HPE) component developer register components in the catalog(others than platforms)
resolve cont ext ual cont ract s deploy components
(others than platforms)
inst ant iatiate component s (workf low) Maintainer Front-End regist er component s in the catalog (only plat forms) parallel computing system (workflow) deploy components (only platforms) interact/orchestrate components, directly
(others than platforms)
computation data source facet of connector manage infrastruct ure Provider Front-End
build/deploy application
read catalog of components
Application submit problems
receive resultsinteract
(see legend)
Figura 24 – Arquitetura da HPC Shelf
4.4.4 Mantenedores
Mantenedores de plataformas são os atores mais próximos das plataformas de compu- tação paralela, ou seja, da infraestrutura de computação paralela da HPC Shelf. São responsáveis pela criação e manutenção dos componentes que representam plataformas virtuais, que repre- sentam plataformas de computação paralela instanciadas sobre a infraestrutura física dentro do domínio de sua responsabilidade, possivelmente utilizando mecanismos de virtualização. A representação de uma plataforma virtual na HPC Shelf se dará através de um componente da espécie plataforma, o qual deve encapsular informações para instanciá-la sobre a infraestrutura do mantenedor. Como já foi dito, essas instâncias podem ser suportadas por meio de alguma tecnologia de virtualização, capaz de prover infraestrutura como serviço (IaaS), embora seja também possível o uso de plataformas de computação paralela sem virtualização. Nesse último caso, torna-se inviável explorar funcionalidades de elasticidade de computação paralela.
4.5 Arquitetura da HPC Shelf
Os elementos arquiteturais da HPC Shelf, descritos nas seções que se seguem, podem ser vistos na Figura 24. São eles: Frontend, Core e Backend.
4.5.1 Frontend (SAFe)
O SAFe (Shelf Application Framework) é o framework utilizado para construção de aplicações da HPC Shelf. Portanto, é o artefato através do qual provedores acessam os seus serviços. Para isso, o SAFe permite o desenvolvimento de soluções computacionais, na forma de workflows científicosbaseados em componentes, para os problemas descritos pelo especialista através da interface de alto nível da aplicação, os que também são chamados de sistemas de computação paralelos.
O SAFe é implementado por um conjunto de classes e interfaces Java, bem como um conjunto de diretrizes para construção das aplicações. Por exemplo, uma aplicação deve ser obtida por herança a partir da classe Application, que implementa os serviços básicos para a comunicação com o ambiente HPC Shelf. Essa classe requer a implementação do método setServices, o qual recebe como argumento um objeto que deve implementar a interface Services. Com o serviço recebido, a aplicação pode se conectar às portas dos componentes que serão orquestrados para computar a solução de problemas através de um workflow descrito com a linguagem SAFeSWL (SAFe Scientific Workflow Language). A linguagem SAFeSWL está descrita na Seção 4.6.
4.5.2 Core
O Core é o elemento arquitetural central da plataforma HPC Shelf, visto que por seu intermédio é controlado o ciclo de vida dos seus componentes. Tais componentes são expostos através do chamado catálogo de componentes, o serviço através do qual o Core expõe ao SAFe os componentes que podem ser usados pelos provedores para composição de sistemas de computação paralela.
Uma das principais características do Core é o suporte a um sistema de contratos contextuais para abstração de componentes em relação a suposições que determinam como são implementados, incluindo linguagens de programação, algoritmos e estruturas de dados, bem como a capacidade de tomar vantagem de características particulares de uma determinada arquitetura de plataforma de computação paralela. Para isso, utiliza a abstração de contexto, determinado pelos requisitos da aplicação e características da plataforma virtual no contexto do qual um componente deverá executar. Para um determinado contexto, um procedimento de resolução de contratos contextuais é capaz de encontrar o componente mais apropriado.
Contratos contextuais são detalhados, inclusive com apresentação de exemplos, na Seção 4.7. Outros exemplos de contratos contextuais são apresentados no Capítulo 5, referentes a estudos de caso deste trabalho.
Os serviços do Core são utilizados por provedores, desenvolvedores e mantenedores, os quais têm interesse em acessar o catálogo de componentes. No caso das aplicações, é através dos serviços do Core que é possível ao SAFe orquestrar a resolução, implementação e instanciação dos componentes necessários a um sistema de computação paralela, em seus workflows.
4.5.3 Backend
O Backend é o elemento responsável pelo gerenciamento da infraestrutura computa- cional da HPC Shelf. Através dos serviços de um Backend, o Core pode instanciar plataformas virtuais sobre a infraestrutura de um mantenedor. De fato, cada mantenedor pode suportar a sua própria implementação de um serviço Backend apropriado para instanciar plataformas virtuais sobre a sua infraestrutura física de computadores paralelos. A composição de tais serviços oferecidos pelo conjunto de mantenedores é o que de fato define o Backend da HPC Shelf.
Porém, do ponto de vista do SAFe, recomenda-se abstrair-se da identidade dos mantenedores das plataformas virtuais utilizadas em um sistema de computação paralela, o que é possível graças ao sistema de contratos contextuais. Em relação a componentes da espécie plataforma, contratos contextuais são chamados de perfis de plataformas virtuais, descrevendo características contextuais que guiarão a escolha de um mantenedor apropriado para instanciá-la.