Ao longo dos anos, o InfoQ fez uma cobertura extensa sobre os princípios de SOA e sobre o que pode ajudar ou dificultar na sua adoção. Com mais de sete anos de artigos e notícias escritos sobre o tema, é possível acompanhar a evolução de SOA desde a propaganda inicial exagerada, passando pela adoção empresarial em larga escala, web services e a influência relativamente recente do REST. Ao longo desse período, muitas vezes foi difícil encontrar histórias de sucesso envolvendo SOA. Pesquisas indicam que apenas 20% dos projetos baseados em SOA obtiveram sucesso. Entretanto, a lista de casos de sucesso inclui alguns exemplos notáveis, como CISCO e eBay.
Um dos editores do InfoQ norte-americano, Jean-Jacques Dubray ajudou a acompanhar o SOA durante sua evolução e também teve muito a contribuir. Dubray influenciou o SOA e ajudou a implantar com sucesso muitos sistemas baseados nos seus princípios. É com esse histórico de experiências em mente que Jean-Jacques (ou apenas JJ) publicou recentemente em seu blog quatro princípios que acredita ajudar a obter sucesso com SOA:
1. Interfaces de serviços devem ser desacopladas de suas implementações
2. Toda a lógica de negócio deve ser normalizada
3. Mudar um serviço deve ser simples
- Mudanças devem ser escondidas dos consumidores de serviços até que estejam preparados para elas
- Mudanças devem ser fáceis de consumir, quando o consumidor estiver preparado
4. O versionamento de serviços deve ser baseado em compatibilidade
JJ acredita que, se esses princípios forem seguidos consistentemente através de todas as fases de design e desenvolvimento, as chances de sucesso são muito maiores. Infelizmente ele não entra em mais detalhes sobre esses princípios em sua publicação, embora sejam relativamente simples de entender. Em relação a "interfaces de serviço", JJ complementa:
As pessoas, na sua maioria, falham em SOA porque pensam em serviço como uma abstração, algo parecido com uma "classe" em orientação a objetos. A interface de serviço é um contrato que permite que mudanças sejam explícitas e controladas. [...] Não se preocupe com as fronteiras dos serviços; invista em construir a melhor interface de serviço possível (ou seja, que seja eficiente na gerência de mudanças).
Dubray cobre outros assuntos que causaram preocupações em torno de SOA no passado, inclusive governança. Nessa área, ele sugere:
Não "governe" em excesso. A governança deve permanecer mínima e baseada em senso comum e num horizonte de curto prazo (de três a seis meses). A governança de dados é muito mais importante, uma vez que qualquer mudança no modelo de informações geralmente causa impacto nas interfaces de serviços.
O acoplamento fraco é frequentemente citado como peça fundamental para obter sucesso em SOA. JJ sugere que isso pode ser alcançado quando:
A lógica de negócio implementada por trás da interface do serviço não é envolvida no contexto de interação com o consumidor. Não deve haver nenhuma duplicação da lógica de negócio ao gerenciar os estados de sistemas nos consumidores da interface.
Outra área de SOA que é frequentemente citada como importante, mas indicada como difícil de alcançar, é o reuso de serviços. Em 2009, Richard Watson do Burton Group disse:
Mesmo que um serviço nunca chegue a ser reutilizado, ainda pode agregar valor de outras formas: sendo adaptável e de baixo custo de manutenção; reduzindo a redundância; aumentando a segurança e a conformidade através da aplicação consistente de políticas; entre outros resultados desejados. O foco exclusivo em reuso não nos permite enxergar esses outros valores.
JJ concorda:
Ninguém pode construir um serviço hoje esperando que esteja preparado para ser usado por novos consumidores três anos depois. Isso é absurdo. Se pensar em reuso dessa forma, você irá falhar instantaneamente e chegará a conclusões tolas como "SOA não funciona". Em SOA (e também no mundo real), o reuso funciona de forma inversa: não é um consumidor novo quem está reusando um serviço antigo; é quase exclusivamente uma nova versão de um serviço (alterado para suportar novos consumidores) que pode ser reusada por consumidores antigos sem quebrá-los.
Quanto ao artigo de Richard Watson em 2009, JJ disse o seguinte nos comentários:
O que muitas pessoas ainda não entendem é que "reuso" em SOA não tem o mesmo significado, comparado com o que elas geralmente entendem quando ouvem a palavra "reuso". Reuso em SOA é reuso para a frente ou "para cima". Em SOA, reuso significa que a nova versão de um serviço construído para novos consumidores não quebra os consumidores existentes.
Veja mais opiniões de JJ sobre SOA no seu blog.