06 de Novembro de 2008

Sobre SOA

Neste post, meu amigo Giscard Fernandes nos oferece a sua visão prática sobre SOA, seu relacionamento com tecnologias importantes como RFID e IMS. Giscard trabalha na NEC do Brasil, é um profissional respeitado no desenvolvimento de software para centrais telefônicas e RFID, possui experiência internacional em projetos no Japão e nos EUA.

Bom, existe hoje uma grande gama de informações sobre SOA, contudo muita gente ainda não entende o que SOA significa; principalmente pessoas que não trabalham na area de TI.

Neste artigo vou tentar responder algumas perguntas e explicar o que é uma arquitetura orientada a serviço, bem como outros items relacionados ao tema.

1. O que é uma Arquitetura Orientada a Serviço?

De uma forma bem simples podemos dizer que um serviço é algo que você faz para alguém. Também de uma forma simplificada podemos definir arquitetura como desenho, modelo ou idéia que permite atingir algum objetivo.

Portanto, podemos dizer que desenvolver uma arquitetura orientada a serviço nada mais é que conceber um modelo que vai permitir prover um determinado tipo de serviço. Abaixo vou citar alguns exemplos, por ordem de evolução:

  • Água e Esgoto: Existem empresas que utilizam uma Rede de Saneamento Básico para proverem o serviço de Água e Esgoto.
  • Energia Elétrica: Existem empresas que utilizam uma Rede Elétrica para proverem o serviço de eletricidade.
  • Telecomunicação: Existem empresas que utilizam uma Rede de Telecomunicação para promoverem o serviço de comunicação.

Alguns destes serviços são prestados fazem séculos, e ninguém fala sobre eles com entusiasmo ou como uma novidade; ao contrário de SOA; contudo pode ter certeza que quando os mesmos foram criados uma grande expectativa e debates foram colocados sobre o tema. Um ponto importante a citar é que todos os serviços citados anteriormente possuem uma característica em comum que é a dependencia de uma infra-estrutura previamente instalada. Ou seja, para poder usar o telefone é necessário existir uma rede para transportar sua voz, para utilizar a agua encanada é preciso ter um encanmento ligando sua casa a Estação de Agua e Esgoto.

Transportando esse conceito para o mundo de TI de uma forma totalmente simplificada teríamos aplicações que vão fornecer informações (serviço) para outras aplicações (ou pessoas) utilizando um “barramento” apropriado para isso. Hoje, o melhor que temos para representar este barramento é o conceito de ESB (Enterprise Service Bus).

2. Porque se fala tanto de SOA?

Vimos que SOA é um conceito simples, velho e até básico quando abordado fora do mundo de TI. Então, porque se fala tanto de SOA, porque esse novo “paradigma” no desenvolvimento de software é tão especial?

O primeiro ponto para tal explicação é que, empresas que prestam serviço possuem softwares que ajudam na automação. Ou seja, o software não foi criado para a empresa gerar negócio ou prover algo a mais para o cliente; o software foi criado para ajudar a automatizar tarefas do dia a dia. Isso não é de todo ruím, contudo o software não evolui com o negócio da empresa continua cada vez mais uma ferramenta de automação. SOA prega softwares que vão ser concebidos de modo que permita melhorar o negócio da empresa.

Para explicar um segundo ponto vou fazer analogias entre os exemplos citados acima em diferentes épocas de maturidade da tecnologia:

  • No começo: Pessoas cavavam buracos de metros para conseguir agua; empresas queimavam carvão para conseguir energia; telefones permitiam a comunicação com um pequeno grupo de pessoas; desenvolvia-se software que jamais sairiam de um computador ou falaria com alguém mais que não seu dono/codificador/testador/operador.
  • Após algumas melhorias: Pessoas se juntavam para cirar projetos de irrigação, pequenos centrais já podiam gerar energia para bairros ou cidades, telefonemas poderiam ser feito para várias pessoas desde que passasse por uma operadora (pessoa que fechava o circuito da chamada), softwares podiam comunicar um com os outros através de transferencia de dados manuais utilizando media como o disquete.
  • Serviço Maduro: Rede de Esgoto permite fornecer agua para maior parte da população, infra-estrutura de energia elétrica leva energia a milhões de pessoas a preços acessiveis, a telefonia é tão automatica quanto falar pessoalmente, softwares podem falar um com outro facilmente através de interfaces e padrões bem definidos.
  • Futuro: Surgem privadas/banheiros/pia/piscina que utilizam a Rede de Esgoto, surgem TVs/computadores/microondas que utilizam a rede de energia, surgem celulares/fax/internet que utilizam a rede de telefonia para conectar pessoas, surgem softwares com vida capaz de receber informações que encadeiam uma séria de operações e que também são capazes de gerar informações que podem desencadear uma séria de operações

O maior entusiasmo em cima de SOA não é no que SOA faz, mas sim no que vai vir a fazer. E isso é como 2+2=4, depois que se existe uma infra-estrutura para um determinado serviço, empresas a inventam produtos que podem ser acopladas a essa infra-estrutura de forma a inovar o serviço cada vez mais.

3. Porque SOA não estourou?

Apesar de termos países onde SOA é mais popular e outros menos, podemos dizer que de uma forma geral SOA ainda é uma tecnologia em crescimento (no ponto de vista comercial, porque tecnicamente está bem preparada).

O primeiro motivo disso vem do próprio conceito que SOA prega, alterar o paradigma de desenvolver aplicações afeta as empresas diretamente, pois as mesmas possuem um legado e nem sempre é facil transformar o legado em SOA. Muitas empresas pregam o uso de Conectores (que são interfaces para acoplar uma aplicação legada ao ESB) contudo SOA está longe de ser um simples plugar de software no barramento ESB. Os softwares legado tem que passar por uma alteração a mais para que o conceito de SOA seja aplicado realmente.

O segundo motivo está diretamente ligada a infra-estrutura que SOA precisa, não da pra falar da noite pro dia que vai usar SOA, muito menos fazer o próximo sistema orientado a serviço se todo os outros aplicativos da empresa não o são. SOA requer investimento em infra-estrutura (Servidores, ESBs), e com certeza vai requerer uma melhoria na Rede de Computadores para comportar as novas informações.

O terceiro motivo está ligado na capacitação das empresas de TI em entederem o negócio da empresa cliente que quer implementar SOA. Como dito anteriormente, desenvolvedores da area de TI foram educados e cresceram em um ambiente onde o software é uma ferramenta de automação e não uma ferramenta para melhorar a prestação de serviços. Com essa imaturidade o que temos no final é uma perda de credibilidade que é perceptivel a empresa cliente, o que leva a uma desconfiança e cria uma barreira ao investir na tecnologia.

Contudo acho válido citar que novas tecnologias estão nascendo já levando em conta o uso de SOA. Duas delas em especial dificilmente vamos conseguir escapar - RFID e IMS. De uma maneira bem simplista podemos descrever RFID como dar aos produtos a capacidade de emitir informações sobre si mesmo e IMS como uma plataforma para prestar serviços multimedia (telefonia, video, mensagem, etc) utilizando a rede IP. Uma pergunta básica e inevitavel é: voce enxerga hoje um mundo sem código de barras ou sem comunicação (seja por telefone ou internet)?; se a resposta é não comece a levar em consideração SOA pois RFID e IMS vão estar intimamente ligados a esse conceito.

4. O que fazer para SOA virar uma realidade?

Eu acredito que existem três conceitos macros a serem seguidos para ajudar SOA a ser implantado. Um deles dependem das empresas clientes e os outros dois das empresas que se propõe a implantar SOA.

Primeiro a obrigação do cliente, SOA deve ser vendido para a diretoria como um investimento em infra-estrutura. Tentar vender a idéia de que a nova aplicação a ser comprada pela empresa vai trazer com ela SOA por um preço e prazo a mais é pedir um não. Que diretor vai aprovar 100 da sua verba para comprar uma aplicação sendo que pode gastar 40 pela mesma aplicação. Se você trabalha em uma empresa que vai comprar SOA e acredita no potencial de SOA, venda SOA pelo o que ela é - uma infra-estrutura que vai permitir cirar novas aplicações ou alterar as já existentes de modo a melhor atender o negócio das empresas.

Empresas de TI tem que atuar de forma mais conjunta com seus clientes, querer enfiar SOA guela a baixo em um projeto é a mesma coisa que encher de mais o balão, ele com certeza vai estourar. E o que é pior, as vezes ele vai enchendo, enchendo, enchendo e quando estoura o barulho é grande.
Implantação de SOA tem que ser visto pelas empresas de TI como uma parceria, a infra-estrutura tem que ser gasta em conjunto - cliente entra com dinheiro e fornecedor com mão de obra qualificada - e num primeiro momento objetivando lucro baixo. Empresas de TI não tem que ganhar dinheiro com infra-estrutura de SOA e sim com as aplicações que vão rodar nessa infra-estrutura.

O último conceito é bem comercial, e consiste em vender SOA pelo que ela é, e não como um milagre que vai resolver tudo que existe no cliente. É muito comum ver empresas de TI mostrar ferramentas de sOA onde é possivel desenhar o processo da empresa e deixar implicito que qualquer leigo vai poder alterar o sistema de forma milagrosa e tudo vai funcionar. Isso num primeiro momento impressiona, mas ninguém fecha negócio no ato, quando se para um pouco para pensar percebe-se que tudo não passou de uma jogada comercial.

Pessoalmente, gosto muito de pensar em SOA como redes de computadores (vou chamar de Rede IP para simplificar). Quando as Redes IPs começaram a ser implantadas, muitos achavam caro, esperaram para investir, pensavam que não precisavam. Agora me diga se hoje existe alguma empresa que se arrepende de ter criado uma infra-estrutura de Rede IP na empresa? Que empresa compra um desktop ou notebook sem levar em consideração que o mesmo vai ser conectado a intranet? Que empresa acha que não deveria ter um servidor de email porque o software requer investimento?

SOA não vai ser diferente, pense nisso…

[]’s
Giscard Fernandes

Leave a response

Your response: