SOA é um conceito abstrato para desenvolvimento de software que visa definir a integração entre os diversos serviços que compõem uma aplicação sem, entretanto, entrar nos méritos de sua implementação.
Em resumo, uma arquitetura orientada a serviços é uma arquitetura de sistemas distribuídos tipicamente caracterizada pelas seguintes propriedades [w3c_wsarch]:
Visão lógica: o serviço é definido em termos funcionais, tipicamente implementando operações de negócios. A visão lógica do serviço o abstrai dos programas, bases de dados, processos de negócios, etc, necessários à sua implementação;
Orientado a mensagens: o serviço é formalmente definido em termos de mensagens trocadas entre unidades de software provedoras e consumidoras do serviço. A estrutura interna das unidades de software, incluindo sua linguagem de programação, sua estrutura de dados, etc. são deliberadamente abstraídas na SOA. Este baixo acoplamento entre aplicações provedoras e consumidoras de um serviço traz benefícios significativos para sistemas legados: a transparência da implementação interna das aplicações de uma arquitetura SOA permite que qualquer componente de software ou aplicação seja envolvido por uma interface de mensagens e adaptado a uma definição de serviços formal
Orientado a descrição: um serviço é descrito por uma meta-linguagem processável por máquinas. A descrição suporta a natureza pública da SOA: apenas os detalhes do serviço relevantes a seu uso são incluídos na descrição;
Granularidade: serviços tendem a utilizar um pequeno número de operações com mensagens relativamente grandes e complexas;
Orientado a redes: serviços tendem a ser disponibilizados e utilizados através de uma rede, embora este não seja um requisito obrigatório;
Independência de plataforma: mensagens são enviadas num formato padrão, independente da plataforma, através de interfaces bem definidas.
fonte: http://professor.ufabc.edu.br/~joao.kleinschmidt/aulas/ger2013/ger_web2.pdf