SOA: Vantagens, Desvantagens e Melhores Práticas
Classificado em Computação
Escrito em em português com um tamanho de 2,68 KB.
O que é SOA?
SOA (Service-Oriented Architecture) significa Arquitetura Orientada a Serviços. Não se trata de um software ou framework, mas de uma metodologia, um padrão de arquitetura de software onde os componentes do sistema fornecem serviços para outros componentes através de uma rede.
Vantagens do SOA
- Reutilização de Software: Rotinas complexas, necessárias para múltiplos sistemas, podem ser implementadas como webservices, evitando duplicação de código.
- Aumento de Produtividade: Conectar-se a um webservice existente é mais rápido do que desenvolver a mesma funcionalidade do zero.
- Maior Agilidade: A ausência de código duplicado agiliza a manutenção do sistema.
- Interoperabilidade: Sistemas escritos em linguagens diferentes (ex: Java, PHP, .NET) podem se comunicar de forma transparente através de webservices.
- Escalabilidade: A performance pode ser melhorada através de escalabilidade horizontal (adicionando mais servidores) e vertical (aumentando a capacidade dos servidores).
Desvantagens do SOA
- Performance: A performance pode ser afetada, pois as chamadas aos webservices transitam pela rede, introduzindo latência. Soluções para melhorar a performance existem, mas é um fator a considerar.
- Segurança: Dados trafegando pela rede podem ser interceptados. A segurança pode ser reforçada com chaves de identificação, mas isso aumenta o tempo de processamento.
- Robustez: Serviços dependentes da rede estão sujeitos a falhas (perda de conexão, mensagens perdidas ou fora de ordem). Soluções de fabricantes podem mitigar esses problemas, mas também aumentam o tempo de processamento.
- Disponibilidade: É crucial garantir a disponibilidade do servidor (ex: quedas de energia, reinicializações). Soluções de infraestrutura como replicação e balanceamento de carga são necessárias. Problemas podem surgir com serviços que armazenam estados entre chamadas.
- Testabilidade: Testar sistemas SOA pode ser complexo. Reproduzir problemas em ambiente de teste é difícil devido a fatores como acesso a logs e disponibilidade de serviços externos. Erros relacionados a XML inválidos são comuns e exigem conhecimento profundo de XML.
- Usabilidade: Rotinas demoradas, que manipulam grandes volumes de dados, podem apresentar desafios em termos de feedback ao usuário e cancelamento de solicitações, já que webservices geralmente não funcionam como threads.