SOA de Verdade: O Retorno

Todo mundo fala em SOA. Este não é meu primeiro post de SOA e não vai ser o último, neste post você vai ver algumas coisas que eu já vinha falando em outros, mas também verá coisas que eu estou escrevendo no meu blog pela primeira vez.

Aviso aos Navegantes: Neste post 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 pode ser que você descorde de outros, em alguns momentos a coisa vai ser forte, logo, se você é cardiaco recomendo que saia do meu blog e vá para algum site de aquario ou algum outra coisa mais relaxante. Se você for reproduzir este conteudo em outro site ou blog faça isso de resposábiliodade própria, eu não vou responder comentários se não forem aqui no meu blog.

Por que SOA de verdade?

Por que existe uma SOA de mentira, baseada em dispautérios, coisas que não funcionan, que ferem a inteligência das pessoas e acima de tudo que gastam muito dinheiro e não trazem nenhum retorno ao négócio da sua empresa ou o negócio do seu cliente(Se você é um consultor que nem eu :-) )



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 fecilidade, balas de prata, ferramentas mágicas e até mesmo, acredite se quizer a Fada Mágica do ROI.

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

Serviços, Arquitetura, BPEL, ESB, Custo, Reuso, Técnologia, Inovação? Bom até pode ser mas eu preciso discordar de vocês por que quando eu penso em SOA a primeira coisa que vem na minha cabeça é sem dúvída...

Muito Dinheiro

Porque? Simples, pessoas que sabem SOA ganham mais, logo qualquer um que trabalhou com WebServices ou integração de sistemas já coloca SOA no CV, por que é legal, por que dá status e por que 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 por que eu penso em dinheiro quando eu penso em SOA é pelo facto de 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 utencilios domesticos.

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. Alem de surgirem soluções bizarras usando um arsenal de soluções que vão de WS-*, W$-BPEL, E$B, BRM$, Data$ervices e tudo muito caro, frágil e adivinhem? Não atende o 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 por que eles tem problemas e toda grande empresa tem grandes problemas. Quando algo vai ser feito é por que a coisa já esta praticamente fora de controle.


Por existirem problemas de tal grandesa e na procura de algum orificio para depositar a *culpa* os Gerentes e CIOs compram SOA, logo tudo se justifica por que vem um discurso pega gerente dos big players e estes caras tem desenhos muito bonitos e 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 por que alguém ofereceu algo diferente, legal que de certa forma é simples, rasteiro e sem possíbilidade de fracasso, sabem o que é ?

SOA Lego-Lego

Imagine-se você Sr CIOs ou Gerente que tem poder de compra indo a um posto de gazolina, o Sr abastece o carro vai até a loja de conveniência e compra cerveja para beber em casa de noite, compra fraldas para o seu filho pequeno porque as mesmas estão perto da cerveja e veja que maravilha compra um serviço SOA, sim isso mesmo.

Sua empresa precisa de um serviço novo de vendas, por que não comprar por apénas R$ 19,90? E tem a promoção leve 2 pague um por R$ 29,90  você lega o serviço de envio de e-mails também. Esta idéia vendeu mas falhou, assim como a idéia das páginas amarelas da internet com UDDI.

Mas no inicio tinha-se esta idéia de comprar os tão famosos *building-blocks* a.k.a serviços. Isso vendeu por que todos os CIOs e Gerentes foram ou ainda são crianças.

CIO e Gerente Feliz da vida com SOA

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

Ferramentas SOA de ponta

Agora sim, tudo pronto, tenho sim, todinhas, 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.

Opa, ainda não eu tenho um problema, na verdade é mais uma racinha, os tais do desenvolvedores, estes caras vão estragar os meus lego-lego, poh preciso de algo contra eles, olhem só o problema que eu tenho:

Meus Desenvolvedores

Ah não estes caras não vão tocar no meu SOA, vamos ter que fazer algo, para a sua surpresa o seu vendor deve ter sugerido um santo remédio, este é tiro e queda, não tem erro é satisfação garantida ou o seu dinheiro de volta.

Pronto com isso o seu gerente fica feliz de novo, vamos sguir a adoção de SOA, por que nos temos controle, eles venderam um processo de desenvolvimento SOA e uma solução de Governança para nos, show de bola vamos adotar.



Puxa vida! 5 anos, é mágico toda adoção de SOA tem 5 anos, acho que este número é cabalistico, mas eu preciso de 5 anos para agregar valor ao negócio e ter vantagem em cima desta tal de SOA? Bom você tem que ter paciência;

Os 5 anos passam e você não tem SOA, não tem lego-lego, gastou um monte e não tem valor agragado, 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, esta é a minha solução, puxa, eu só tenho uma coisa a dizer sobre SOA se alguém vier a me perguntar...


Infelismente esta foram a maioria das adoções de SOA, recentemente o Gartner mostrou um pesquisa que a adoção de soa diminiuo em 25% por que a TI não conseguia provar o valor disso para o negócio. Então nos temos que mudar uma coisa, temos que 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) este é o paradigma que esta pror traz de soa e que deve orientar tudo o que contruimos, SOE já tem a ver com TI, com pensamento corporativo, nos 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 atinga 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 contruir uma autoestrada não tente fazer isso de cara, porque? Por que é quase impossível de atingir isso em software, faça primeiro algo mais simples que funciona e que agraga 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 você tem muito mais chances de ser bem sucedido, ainda mais contado que no inicio do projeto você não tem muito conhecimento de negócio, logo não esta boa posição de realizar boas estimativas, fazer coisas complexas que requerem conhecimento de negocio é um bom design.

Com esta abordagem de refinamento contínuo e evolução, você vai mitigando os riscos e ganhando confianças e agregando valor ao negócio conforme o tempo, depois que você vai para estrada de paralelepipido você melhora o negócio, o código e o design muito esta mais proximo do seu objetivo final.

Coisas importantes sobre SOA que ninguém fala

Contratos e serviços: Este para mim é o assunto mais imporante e vejo muito pouca gente falando de contrato, na verdade SOA é sobre pensamento e não sobre técnologia, não precisamos de técnologias 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 linguagen, desde que eu tenha o mínimo de interoperabilidade, isso 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 vantágens de SOA, perceba que no contrato eu tenho as entradas e as saidas e isto é diferente do dominio 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, consumamos ter algo chamado *service* este não é o serviço de SOA, mesmo que eu exponha com webservices? Porque? Não existe um contrato bem definido e a granularidade é a nível de tela,ou sejá, 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 possíbilita que consumidores diferentes poçam ser evoluidos sem que todos os consumidores precisem mexer no código toda hora, na pratica isso também me permite na governança que são regras gerais e não uma biblia que diz passo a passo o que deve ser feito, eu poça definir quando alguma coisa faz como 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 dinheitra da nossa empresa...



Muito Obrigado!


Material Extra

Se você quizer pode pegar a apresentação completa sobre SOA no meu slide-share aqui, ou ver os slides a baixo.




Sobre a fada do ROI...

Caso você nã acredite quando eu escrevi no post 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...


Popular posts from this blog

Kafka Streams with Java 15

Rust and Java Interoperability

HMAC in Java