Arquitetura de Informação

2 jul, 2010

SOA de Verdade: O Retorno

Publicidade

Todo mundo fala em SOA (Service Oriented Architecture), e este não é meu primeiro artigo sobre o assunto, e não vai
ser o último. Vermos aqui algumas coisas que eu já falei em outros textos e outras que coloco aqui pela primeira vez.

Aviso aos Navegantes: neste artigo estou falando da minha opinião
pessoal do que é SOA e, melhor ainda, de como SOA deve ser. Pode ser que
você concorde com alguns pontos e discorde de outros,
em alguns momentos a coisa vai ser forte. Logo, se você é cardíaco,
recomendo que vá para algum site de aquários ou
algum outra coisa mais relaxante
.

Por que SOA de verdade?

Porque existe uma SOA de mentira, baseada em despautérios, coisas que
não funcionam, que ferem a inteligência das pessoas e, acima de tudo, que
gastam muito dinheiro e não trazem nenhum retorno ao negócio da sua
empresa ou do seu cliente.

Sim, existe uma SOA que foi imposta! Por Vendors, por
grandes empresas que achavam mais uma forma de tirar dinheiro fácil de
gerentes e CIOs que não pensam muito e querem respostas fáceis, como
caixas prontas que você abre e acha a felicidade, balas de prata,
ferramentas mágicas e, até mesmo, acredite se quiser, a “Fada Mágica do
ROI”.

Qual é a primeira coisa que vem à cabeça de vocês quando pensam em
SOA?

Serviços, Arquitetura, BPEL, ESB, Custo, Reuso, Tecnologia, Inovação. Que tal?
Bom, até pode ser, mas eu preciso discordar, porque quando eu
penso em SOA, a primeira coisa que vem na minha cabeça é sem dúvida…

Muito Dinheiro

Por quê? Simples! Pessoas que sabem
SOA ganham mais, logo, qualquer um que trabalhou com WebServices ou
integração de sistemas já coloca SOA no Currículo, porque é legal, porque dá
status e porque abre portas. Como os Gerentes e CIOs não sabem o que é
SOA de verdade, eles acreditam em qualquer coisa que tenha pelo menos um
ESB e se possível BPEL.

Outro motivo porque eu associo SOA com dinheiro é que sempre que penso em $OA lembro de grandes empresas como Oracle e IBM vendendo todo tipo de SOA-Stuff como Software, Ferramental,
Metodologia, Hardware, Camiseta, Cueca, Chaveiro, Camiseta e outros
utensílios domésticos.

Muitas e muitas adoções de SOA são lentas, doloridas, sem foco no
negócio e nada agregavam para o seu negócio, se não custos e mais custos.
Além de surgirem soluções bizarras usando um arsenal gigantesco de soluções
que vão de WS-*, W$-BPEL, E$B, BRM$ até Data$ervices, e tudo muito caro,
frágil e, adivinhem?, que não atendem ao negócio, gastam grana e mais grana e
nada.

Mas existem problemas…

O pessoal também costuma justificar os gastos absurdos em adoção de SOA, dizendo que eles têm problemas e toda grande empresa tem grandes problemas.
Quando algo vai ser feito é porque a coisa já está praticamente fora de
controle.

Por existirem problemas de tal grandeza, e na procura de algum lugar para depositar a “culpa”, os Gerentes e CIOs compram SOA. Logo,
tudo se justifica, porque vêm com um discurso que alcança os gerentes dos big players, e
esses caras têm desenhos muito bonitos, que pegam e vendem e se
vendem.

…e tudo isso cola…

Sim, as pessoas gastam rios de dinheiro, mas como que eles compram isso?
Compram porque alguém ofereceu algo diferente, legal, que de certa
forma é simples, rasteiro e sem possibilidade de fracasso. Sabem o que é?

SOA Lego-Lego

Imagine-se você, Sr CIO ou Gerente, que tem poder de compra, indo a um
posto de gasolina. O senhor abastece o carro, vai até a loja de conveniência e
compra cerveja para beber em casa de noite, fraldas para o seu
filho pequeno (que estão estrategicamente perto da cerveja) e, veja que
maravilha!, compra um serviço SOA! Sim, isso mesmo!

Se sua empresa precisa de um serviço novo de vendas, por que não comprar um
por apenas R$ 19,90? E tem a promoção “leve 2 pague 1” por R$ 29,90! Você leva o serviço de envio de e-mails também. Essa idéia vendeu, mas
falhou, assim como a idéia das páginas amarelas da internet com UDDI.

No início havia essa idéia de comprar os tão famosos” building-blocks”, a.k.a serviços. Isso vendeu porque todos os CIOs e
Gerentes foram, ou ainda são, crianças.

Então, uma vez que temos todas as ferramentas necessárias para
SOA, pagamos muito bem por elas e estamos prontos para começar a adoção,
tenha certeza de que você tem ferramentas que se completam como estas e que
são básicas para SOA.

Ferramentas SOA de ponta

Aí você pensa:

Agora sim, tudo pronto! Tenho todas elas! Segui o conselho do meu
vendor e antes de adotar SOA comprei um ESB e já peguei umas dicas de
como fazer a federação/clusterização do mesmo, vamos tocar ficha e
começar a adotar SOA!

Mas lembra que ainda não é a hora… você tem um problema, chamado “Desenvolvedores”.

Estes caras vão estragar os meus lego-lego, é preciso de algo contra eles!! Olhe só o problema que tenho!

Meus Desenvolvedores

Aí você logo toma a decisão de que eles não vão nem tocar no seu SOA. É preciso fazer algo. E, para sua surpresa, o seu vendor te sugeriu um remédio, que é tiro e queda, do tipo “satisfação garantida”.

Pronto! Com isso o seu gerente fica feliz de novo, pois vocês vão seguir com a adoção de SOA, porque têm controle, afinal, foi vendido um processo de desenvolvimento SOA e uma solução de Governança.

1 ano…

2 anos…

3 anos…

4 anos…

Puxa vida! 5 anos! É mágico, toda adoção de SOA tem 5 anos, acho que esse
número é cabalístico! Mas será que realmente é necessário esse tempo de cinco anos para agregar valor ao
negócio e ter vantagem em cima desta tal de SOA? Bom, você tem que ter
paciência…

Aí os 5 anos passam e você não tem SOA, não tem lego-lego, gastou um monte e
não tem valor agregado. Mas você tem uma solução. Ok, uma solução é
algo muito forte, você tem um sistema novo, que não é orientado a
serviços, mas digamos assim, ele é diferente…

Poxa vida, foi por isso
que eu congelei o meu negócio? Foi por isso que eu esperei tanto tempo? Essa é a minha solução? Puxa, eu só tenho uma coisa a dizer sobre SOA se
alguém vier a me perguntar:

Infelizmente, esse é o resultado da maioria das adoções de SOA. Recentemente, o
Instituto Gartner mostrou um pesquisa mostrando que a adoção de SOA diminuiu em 25%, porque a
TI não conseguia provar o valor disso para o negócio.

Então é preciso mudar alguma coisa. É preciso entender SOA de verdade!

SO, SOE e SOA

SOA é só uma arquitetura, nada mais que isso. Uma das coisas que mais
importa é a orientação a serviços (so). Esse é o paradigma que está por trás de SOA e que deve orientar tudo o que construímos.

SOE já tem a ver
com TI, com pensamento corporativo. Nós queremos que a TI toda seja
orientada a serviços e que se tenha o tão sonhado alinhamento com o
negócio e se atinja o que 10 em 10 empresas querem: Agilidade de
Negócio.

Não tente atingir a perfeição de cara

Faça um coisa de cada vez, um passo após ao outro; agregue valor ao
negócio de forma frequente e consistente, sem parar. Não diga que você
vai adotar SOA em X anos sem fazer um calculo de ROI. Eu gosto muito de
pensar na analogia das estradas (Coisa vindo do XP).

Se você tem que construir
uma autoestrada, não tente fazer isso de cara. Por quê? Porque é quase
impossível de atingir isso em software! Faça primeiro algo mais simples,
que funcione e que agregue valor ao negócio, como uma estrada de chão
batido.

Ok, a estrada de chão batido pode ser suja, o carro pode atolar de vez
em quando, as coisas podem ser lentas, doloridas, mas funciona e você já
começa a ter retorno. Além de que é muito mais fácil construir uma
estrada de chão batido e você tem muito mais chances de ser bem sucedido,
ainda mais contado que no início do projeto você não tem muito
conhecimento do negócio, logo, não está em uma posição para realizar boas
estimativas, fazer coisas complexas, que requerem conhecimento de negócio.

Com essa abordagem de refinamento contínuo e evolução, você vai
mitigando os riscos e ganhando confiança, além de agregar valor ao negócio
conforme o tempo. Depois que você vai para estrada de paralelepípedo
você melhora o negócio, o código e o design estarão muito mais próximos do
seu objetivo final.

Coisas importantes sobre SOA que ninguém fala

Contratos e serviços: este para mim é o assunto mais importante e vejo
muito pouca gente falando de contrato. Na verdade, SOA é sobre pensamento
e não sobre tecnologia, não precisamos de tecnologias novas para adotar
SOA, nem de novas linguagens de programação. Podemos fazer tudo isso
usando Java, .NET, Python, Ruby ou Scala por exemplo.

Sobre os contratos, eles são a chave. Uma vez bem definidos, a
implementação pode ser em qualquer linguagem, desde que eu tenha o
mínimo de interoperabilidade, o que pode ser atingido com o uso de HTTP e
REST, por exemplo.


Os contratos estão totalmente ligados com a questão do versionamento de
serviços que, este sim, é umas das principais vantagens de SOA. Perceba
que no contrato eu tenho as entradas e as saídas, e isso é diferente do
domínio do meu serviço, isso é chave para abstração e evolução do
contrato. Eu sempre exponho o menos possível de informações e nunca
exponho o meu domínio diretamente.

Outra coisa, contratos devem ter granularidade alta! Quando tempos uma
aplicação web escrita em java com spring, por exemplo, costumamos ter
algo chamado “service”; este não é o serviço de SOA, mesmo que eu exponha
com webservices. Por quê? Não existe um contrato bem definido e a
granularidade é a nível de tela, ou seja, baixa, muito baixa.

Quanto ao versionamento, eu tenho que ser capaz de rodar várias versões
do mesmo serviço em produção, ao mesmo tempo. Isso possibilita que
consumidores diferentes possam ser evoluídos sem que todos os
consumidores precisem mexer no código a todo momento. Na prática, isso também
me permite a governança, que são regras gerais e não uma bíblia que diz
passo a passo o que deve ser feito, para que eu possa definir quando alguma coisa
faz com que eu tenha que criar um novo serviço ou quantas versões do
mesmo serviço posso ter rodando em produção.

Para fechar algumas coisas

Não faça como o pessoal da primeira onda que fez tudo errado assim…


Vamos tentar fazer tudo como na segunda onda, focando no negócio,
pensando o tempo todo, gastando a cuca e não o dinheiro da nossa
empresa…


Muito Obrigado!

Material Extra


Se você quiser, pode pegar a apresentação completa sobre SOA no meu slide-share:

Soa de VerdadeView more presentations from Diego Pacheco.

Sobre a fada do ROI…

Caso você não acredite quando eu escrevi no texto que existe um “fada do
ROI” e que existe hardware SOA, você pode ver este vídeo da IBM e tirar a
suas próprias conclusões…