domingo, 8 de maio de 2011

SOA ainda soa bem?

Semana passada (28/04/2011) fui ao 4th International SOA & Clound Computing Conference, evento muito interessante com várias autoridades internacionais no assunto. Já não é de hoje que escutamos várias coisas sobre o SOA, este modelo arquitetural já caiu no gosto de muitos e também já "traumatizou" outros tantos.

Nem todas as iniciativas para implementação de uma arquitetura SOA tiveram sucesso, muitas vezes pelo não entendimento correto dos princípios do modelo arquitetural ou por um overflow de tecnologias e/ou burocracias para sua implementação. Vou iniciar aqui uma série de post sobre SOA, trazendo à nossa mesa algumas reflexões sobre esse tema. Pretendo iniciar essa discussão definindo alguns aspectos importantes.

SOA essentials, parte 1.

De fato, SOA se tornou uma buzzword e suas idéias muitas vezes deturpadas. Entretanto, esse modelo representa uma mudança radical no modo como o software é criado, reutilizado, gerenciado e vendido.

Hoje, já conseguimos notar que uma parcela significativa de desenvolvedores e arquitetos de software já reconhecem que SOA é muito mais que Web Services. SOA é cada vez mais reconhecida como um elemento chave na transformação dos negócios e não apenas como tecnologia para facilitar integração de sistemas. A proposta desse modelo arquitetural está principalmente focada no retorno de investimento que a empresa irá obter, uma vez que os investimentos em TI são baseados nos objetivos do negócio.

O trabalho colaborativo entre as áreas de negócio e TI visa a criação de um ambiente capaz de suportar modelos de negócio ágeis e dinâmicos, oferecendo maior flexibilidade e permitindo ao "negócio tomar decisões de negócio suportadas pela tecnologia ao invés de tomar decisões de negócio determinadas ou limitadas pela tecnologia"[1].

A adoção desse modelo arquitetural, ao contrario do que muitos acreditam, não necessariamente implica em custos para a empresa. Adquirir uma infraestrutura tecnológica não é pré-requisito para o início da implantação do modelo orientado o serviço. É preferível que a empresa se preocupe primeiramente com planejamento e governança, pois o sucesso da adoção de SOA pode estar ligado a quebra de alguns paradigmas organizacionais.

Conceituando SOA

É importante entender e definir o termo antes de usá-lo. Arquitetura Orientada a Serviços (SOA) é um termo que descreve duas coisas: o primeiro termo se refere à estrutura e o design do software. Podemos definir arquitetura como "modelos e padrões que permitem documentar, facilitar o entendimento e direcionar as diversas dimensões da construção das aplicações"[1].

O segundo termo expressa uma metodologia para desenvolvimento de software: a orientação a serviço. "O termo serviço é usado para designar uma parte distinta de um sistema de computador que gerencia um conjunto de recursos relacionados e apresenta uma funcionalid para usuário e aplicativos" [2]. No contexto SOA, um serviço pode ser definido como tarefas que são repetidas dentro de um processo de negócio. Essas tarefas são potencialmente passíveis de decomposição. Por exemplo, capturar uma ordem de compra, essa tarefa pode ser decomposta em vários serviços menores, que por sua vez podem ser reutilizados em outros processos.

Vejamos algumas definições de SOA:

"Arquitetura orientada a serviços é uma arquitetura de software voltada para a construção de aplicações que implementam processos de negócio ou serviços utilizando um conjunto de componentes "caixa-preta", fracamente acoplados, e orquestrados para prover um nível de serviço bem definido."[3]

"Arquitetura orientada a serviços é uma estrutura (framework) para integrar processos de negócio e a infra-estrutura de TI que o suporta, na forma de componentes seguros e padronizados - serviços - que podem ser reutilizados e combinados para endereçar as mudanças de prioridade do negócio." [3]

"Arquitetura orientada a serviços é um paradigma para organizar e utilizar funcionalidades distribuídas que podem estar sob controle de diferentes domínios de propriedade."[1]


As definições de SOA podem ser adaptadas ao público alvo, ou seja, para o pessoal de negócio, deve-se enfatizar a flexibilidade na disponibilização de novos negócios, baseados em processos e serviços bem definidos. Para o pessoal de tecnologia, deve-se detalhar um pouco os aspectos tecnológicos, para não tornar a definição abstrata ou abrangente demais.

SOA do ponto de vista do negócio: é uma maneira de implementar os processos de negócio da empresa na forma de funções bem definidas, flexíveis e reutilizáveis chamadas de serviços.

SOA do ponto de vista de TI: é uma arquitetura que permite a automação dos processos de negócio da empresa através da orquestração (gerenciamento) de diversos componentes com funções bem definidas, chamados de serviços. SOA se baseia em diversas tecnologias, como Web Services e BPM, priorizando características como aderência a padrões, agilidade, flexibilidade, reutilização, interoperabilidade e alinhamento ao negócio.

Daremos sequência a série de posts "SOA Essentials", onde retomarei a discussão sobre conceitos e práticas relacionadas ao SOA, espero que gostem :D

[1] JUNIOR, Antonio Carlos Benete. Roteiro para a definição de uma arquitetura SOA utilizando BPM. Monografia de MBA em Tecnologia da Informação apresentada a Politécnica da Universidade de São Paulo. Documento digital em formato PDF disponível em: www.pece.org.br/cursos/TI/monografias/MBA-MONO-AntonioCarlosJr.pdf . Acessado em 13 mar, 2009.

[2] Diversos autores. Sistemas distribuídos, Conceitos e Projeto. 4 ed. São Paulo: Bookman, 2007.

[3] Diversos autores. Service Oriented Architecture For Dummies. 1 ed. USA: Wiley Publishing. Inc, 2007.

Nenhum comentário:

Postar um comentário