O desenvolvimento de sistemas muitas vezes esbarra no modelo de negócios gerido pelas empresas. Os impasses trazem prejuízos e problemas de comunicação entre as partes, o que acaba dando origem a produtos que não cumprem com as expectativas. Para resolver esse problema, foi criada a SOA, um modelo de arquitetura de software cujo objetivo é alinhar os negócios com o desenvolvimento de tecnologia.
Domine o assunto aqui:
Definindo a SOA
Service-Oriented Architeture, ou SOA, é uma arquitetura de softwares que tem como filosofia a disponibilização de aplicações na forma de serviços. Isso quer dizer que todos os módulos desenvolvidos estarão disponibilizados através de um barramento de comunicação que permite a interoperabilidade entre diferentes tipos de serviços.
A SOA é baseada em computação distribuída e utiliza os mesmos protocolos de requisições e respostas, usados na internet. No entanto, a arquitetura vai além das especificações técnicas que definem o tipo de produto e como ele se comunica. Ela também aplica uma série de boas práticas para criação e gerenciamento dos serviços desenvolvidos.
Seu grande diferencial é permitir que serviços distintos trabalhem em conjunto. Isso quer dizer que programas desenvolvidos por empresas diferentes, usando linguagens de programação distintas, podem ser conectados dentro de um mesmo produto pelos mesmos protocolos de comunicação.
A SOA surgiu em 1994 e sua criação é atribuída a Alexander Pasik, então funcionário do Grupo Gartner. Antigamente, ela era tratada apenas como parte teórica na engenharia de software, mas atualmente seu uso vem sendo bastante aplicado a casos reais.
Cada vez mais podemos observar empresas buscando se especializar em desenvolvimentos específicos. Elas fazem a aquisição de serviços terceirizados e acoplam em seus produtos. Isso economiza tempo e mão de obra.
Um exemplo são os módulos de pagamento feitos para e-commerces. Esses módulos são, na verdade, serviços acoplados na arquitetura de desenvolvimento para realizar uma função específica (pagamento de clientes). A comunicação com o resto do sistema ocorre por meio de protocolos de rede.
As vantagens da SOA
Assim como qualquer tipo de arquitetura de software, a SOA possui vantagens e desvantagens. O DevMedia listou os 7 principais benefícios que esse tipo de arquitetura traz:
1. Reutilização
Os serviços são independentes entre si. Logo eles podem ser reaproveitados em outros programas que também empreguem a mesma filosofia de implementação. O reúso também traz produtividade às equipes, uma vez que elas podem focar em serviços que ainda não foram reutilizados.
2. Flexibilidade
O isolamento dos módulos permite uma maior flexibilidade como um todo. Novas regras de negócio podem ser concebidas alterando os serviços pertencentes ao sistema ou mudando a comunicação entre eles.
3. Fácil manutenção
Como os módulos são isolados, a manutenção se torna mais fácil. O problema é resolvido dentro de um módulo específico sem afetar os demais.
4. Alinhamento com o negócio
Os processos são visualizados de maneira mais fácil, devido aos serviços representarem cada etapa do negócio. Dessa maneira, é possível alinhar melhor seus objetivos com essa arquitetura.
5. Interoperabilidade
Os serviços são independentes da plataforma ou da tecnologia. Eles podem ser desenvolvidos usando qualquer linguagem de programação em qualquer sistema operacional, desde que consigam comunicar entre si. O resultado é a integração com outros sistemas, serviços e aplicações.
6. Padronização
Toda a SOA é baseada em padrões de comunicação. Então apesar da interoperabilidade e diversidade de aplicações e serviços dentro do produto, eles devem utilizar a mesma comunicação.
7. Abstração
Os serviços são abstraídos da implementação. Isso quer dizer que o desenvolvimento não é específico para um sistema e pode ser adaptado conforme a sua utilização.
As desvantagens da SOA
Agora que já sabemos quais são as vantagens da SOA, está na hora de conhecermos suas limitações. Veja 6 desvantagens dessa arquitetura, ainda segundo a DevMedia:
1. Complexidade
Como uma grande quantidade de serviços precisa ser coordenada, a dificuldade de gerenciamento aumenta sensivelmente. A heterogeneidade dos serviços e o fato deles serem desenvolvidos por empresas diferentes usando linguagens distintas também é um fator de complexidade.
2. Performance
O desempenho da SOA é altamente dependente do servidor onde estão hospedados os módulos. A disponibilidade da rede também pode ser causa de gargalos e lentidão dos serviços.
3. Robustez
Erros no programa podem ser incontroláveis e não tratáveis. Isso acontece porque cada módulo lida com exceções de forma diferente e a arquitetura tem dificuldade para dar manutenção a sistemas heterogêneos.
4. Disponibilidade
Esse problema é bastante similar àquele enfrentado por serviços web. Quando há queda do servidor ou da rede, todo o resto fica indisponível.
5. Testabilidade
Assim como vimos para a robustez, os testes e debugs são tarefas difíceis para os desenvolvedores, uma vez que as aplicações são heterogêneas.
6. Segurança
Os serviços disponibilizados na rede estão suscetíveis a ataques e interceptação de dados. Também estão vulneráveis à sobrecarga de usuários e a outros problemas oriundos desse tipo de plataforma.
Os desafios da SOA no mercado
O grande desafio da implementação da SOA nas empresas está em alterar seu plano de negócios. Para que funcione, é importante que no começo de um projeto as várias áreas de desenvolvimento sejam desenhadas para atuarem como módulos independentes.
Dessa maneira, o desenvolvimento poderá ser feito como se fossem serviços separados. A equipe conseguirá avaliar quais módulos precisam ser desenvolvidos e quais podem ser adquiridos por meio de terceirização ou reutilização de produtos já prontos.
Há ainda as questões de segurança e de governança de TI. É preciso definir bem quais dados serão acessados por esses serviços sem comprometer o modelo de negócios da empresa. O problema da governança tem suas limitações quando o assunto envolve os serviços terceirizados.
No entanto, os benefícios valem a pena perante os desafios. O uso da SOA aumenta a maturidade do software e transmite mais confiabilidade para os clientes. A equipe ganha foco para desenvolver as partes que realmente importam. Já os clientes se beneficiam com um produto mais estável e fluido.
A adoção da SOA traz o alinhamento entre tecnologia e processo. O mercado, no entanto, precisa apoiar essa iniciativa. Os setores de estratégia das empresas devem sofrer uma mudança organizacional para que sua filosofia seja implementada com sucesso.
Para finalizar, podemos afirmar que a aplicação da SOA vai além da criação de serviços como módulos independentes e de sua utilização através de protocolos de web services. É preciso que haja a integração completa entre o modelo de negócio proposto e a tecnologia desenvolvida que faça suporte a ele.
Gostou do nosso conteúdo sobre a SOA? Então não deixe de nos seguir no Facebook, Instagram e Linkedin para acompanhar nosso trabalho. Até a próxima!