Nesta unidade trataremos de um importante aliado da computação em nuvem: o modelo de arquitetura orientado ao serviço, o SOA. Abordaremos seus conceitos, seu papel na computação em nuvem e seus principais pontos positivos e negativos.

MODELOS E ARQUITETURAS MODERNAS PARA EXECUÇÃO DE APLICAÇÕES

Independente da linguagem de programação, o uso da metodologia adequada torna o produto final, o sistema, a aplicação, devidamente efetivo. Neste sentido, uma etapa importante no que é hoje o sucesso dos serviços em nuvem reside na popularização da metodologia de desenvolvimento SOA (Service-Oriented Architecture) ou arquitetura orientada para serviço. Mas antes de seguirmos nas conceituações, e reafirmar o que representa a SOA, Furtado (2009: 9) resgata que:

Primeiramente, SOA é um conceito. Existem diversas definições para SOA na literatura, mas é importante deixar claro algumas definições de SOA que NÃO procedem. SOA não é um produto, não é uma solução, não é uma tecnologia, não pode ser reduzido a produtos de software e, finalmente, não atende todos os desafios tecnológicos aos quais estão submetidos os negócios de hoje.

Se computação em nuvem é, do ponto de vista do cliente usuário, uma forma de serviço, nada mais lógico que construir suas aplicações pensando no fluxo deste serviço, pensando em como um sistema local pode ser portado para o ambiente web e com isso construir uma aplicação que seja melhor que seu similar offline. Portanto, SOA é uma metodologia que guia a construção das aplicações pelos desenvolvedores e, conforme defende Newcomer e Lomow (2005 apud FURTADO, 2009: 9):

SOA é um estilo de projeto que guia todos os aspectos de criação e uso de serviços de negócio através de todo o ciclo de vida de desenvolvimento (desde a fase de concepção até a aposentadoria de serviços), bem como trata da definição e do provisionamento da infraestrutura de TI que permite que diferentes aplicações troquem dados e participem de processo de negócio independente dos sistemas operacionais onde estas aplicações estão executando ou linguagens de programação utilizadas para suas implementações.

Ao se adotar a SOA, cria-se um projeto que começa com uma forma específica de leitura das necessidades, dos requisitos que o sistema a ser entregue precisa conter, a forma com que o sistema opera e os seus requisitos em termos de infraestrutura. Embora seja possível construir uma aplicação que não siga o conceito de SOA fica claro que o resultado poderá ser inferior, se não em qualidade, em agilidade e compatibilidade com demais serviços integrados ao tipo de sistema produzido.

A leitura que um projeto de sistema em SOA faz promove com seu sistema finalizado uma aplicação totalmente integrada ao seu meio, seu ecossistema e este fato significa que aplicações construídas com SOA possuem componentes padronizados e que juntos são capazes de entregar algo novo e, ao mesmo tempo, perfeitamente integrado ao que a empresa cliente possui como parte de seus sistemas. Para Furtado (2009: 12) em geral existe muita rigidez nas arquiteturas de TI:

O estado das arquiteturas de TI atualmente pode ser caracterizado como rígido, constituído de sistemas legados pesados, aplicações inflexíveis e um portfólio de aplicações que demandam softwares de integração. Porém, as questões mais importantes são flexibilidade e reutilização que poderão dar suporte aos processos de negócio que mudam frequentemente com as mudanças e forças globais. SOA não vai alcançar o sucesso a menos que o processo de arquitetura mude de sua forma estática para um que se molde ativamente, com implementações flexíveis e reutilizáveis que deem o suporte apropriado ao processo de negócio.

Um software desenvolvido em SOA se torna muito mais capaz de se adaptar aos requisitos de uma gama maior de clientes do provedor, bem como suas atualizações (que seguem mesma metodologia) permitem uma sobrevida maior que a de sistemas produzidos nos demais métodos, mas é preciso que seja cada vez mais construído de forma flexível, escalonável.

ARQUITETURA ORIENTADA A SERVIÇO (SOA) EM APLICAÇÕES NA NUVEM

O fato das aplicações em nuvem serem, ao menos do ponto de vista do cliente e usuário, estritamente serviços faz com que a arquitetura de desenvolvimento SOA seja uma obrigação, o que foge da realidade. Claro que ao se produzir um sistema para a nuvem sob o conceito da SOA se tem maior possibilidade de gerar aplicações efetivas, ágeis, de maior sucesso e melhor casamento com as necessidades e peculiaridades do cliente que o provedor tem em vista. Portanto, conforme resgata Guedes (2017: online) SOA representa:

Uma solução fundamentada em SOA geralmente possui uma arquitetura baseada em padrões para a criação de uma infraestrutura de TI, visando simplificar as relações entre sistemas distintos, aperfeiçoando seu funcionamento e facilitando a incorporação de novos elementos. Sendo assim, caso haja mudanças nas necessidades do negócio, estes fatores permitem que a empresa responda a isso de forma rápida.

Podemos até encaixar o SOA como uma metodologia ágil, tanto pelo que entrega ao usuário quanto pela forma com que tende a lidar com os processos em suas etapas de desenvolvimento, desta forma podemos elencar os seguintes elementos de uma arquitetura SOA:

De acordo com Miguel, Santos e Silva (2017: 8) “A arquitetura distribuída do SOA pode permitir a criação de serviços distintos em nuvens diferentes, de maneira a se aproveitar as melhores características de cada plataforma.” Portanto podemos afirmar que a arquitetura SOA não necessariamente nasceu para as aplicações em nuvem, porém pode produzir excelentes aplicativos com este fim, conforme defende Guedes (2017: online):

Não, não basta criarmos e expormos web services para dizer que estamos utilizando uma arquitetura orientada a serviços. Perceba que temos um problema que vai muito além da questão técnica de criar ou não um web service em uma determinada linguagem. Temos a barreira do negócio. O modelo de negócio da organização fica exposto nos serviços quando estamos utilizando SOA. Por isso, é essencial uma completa integração entre o setor de negócios e o setor de tecnologia. Essa é outra intenção da utilização da arquitetura SOA: implementar tecnologia de ponta para o negócio da empresa, tornando-a mais competitiva no mercado.

Temos, portanto, o SOA quase como uma questão de cultura organizacional, o que significa que não se segue um método para se produzir uma aplicação web sob o SOA, a empresa precisa se posicionar como uma empresa orientada para serviços.

VANTAGENS DAS ARQUITETURAS ORIENTADAS A SERVIÇOS (SOA)

Quando se adota a SOA como metodologia de desenvolvimento de sistemas não necessariamente estão sendo produzidos sistemas web, muito menos que atendem empresas que buscam aplicações em nuvem, embora todo o conceito de SOA indique que este é o caminho. Principalmente para o universo em nuvem, desenvolver aplicações em SOA apresenta as seguintes vantagens: