Sugestões de Arquitetura Orientada a Serviços

Por razões de pesquisa pessoal e universitária, estou pensando em criar um CRM simples usando uma arquitetura orientada a serviços. Seu significado é apenas para explicar a arquitetura em si, e não o uso comercial.

Eu estava pensando em implementar um CRM que oferece um serviço analítico simples e atendimento ao cliente (armazenamento de usuário, comentários pessoais e algumas outras coisas).

A arquitetura que estou projetando define: - WebGUI (um cliente dos outros serviços) - AnalyticsService (um serviço que recebe, analisa e coleta dados) - CustomerCareService (um serviço que usa APIs RESTful para aplicar operações CRUD).

Cada serviço possui seu próprio banco de dados, sendo completamente independente dos outros. Eles expõem uma interface pública. A interface do curso deve fornecer algum tipo de autenticação, para negar solicitações não autorizadas.

As vantagens que gostaria de explicar nesse tipo de arquitetura é a possibilidade de ter tudo o que é necessário e a capacidade de combiná-las para oferecer novos serviços (por exemplo, se houvesse um OrderService para lidar com pedidos, seria fácil combiná-los com Cliente usando as APIs públicas). A grande vantagem para mim é que seria fácil construir outros clientes que usem esses serviços.

Eu não sei o que é algum bom método de autenticação, que poderia ser fácil de implementar, eu também não tenho certeza sobre como fazer esta APIs (use XML ou APIs REST simples com dados GET / POST). Eu trabalhei com Amazon, PayPal e outras APIs da empresa, eles parecem usar serviços REST (paypal usa um parâmetro GET feio _cmd enquanto a Amazon usa URI melhor) para saber o que fazer, mas lendo algo sobre SOA parece que as pessoas também usam XML. É claro que também preciso levar em conta que a interface web deve ser capaz de reconhecer o usuário logado, obter as permissões (token ou qualquer outra coisa) e usá-lo com serviços para mostrar informações. Então eu não tenho certeza se SOA é o tipo de arquitetura que estou realmente construindo ... é SaaS ao invés de SOA? Eu acho que seria melhor usar aplicativos RESTful, com JSON ou algo parecido para implementá-lo (eu não sou um grande fã de XML, acho que ele é muito detalhado).

Para maior clareza, estou listando aqui minhas perguntas:

Esse tipo de arquitetura é chamado SOA ou SaaS (ou ambos)?O que é uma boa implementação para o que eu quero obter? (por favor explique o mais detalhado possível)Que tipo de autenticação é mais adequado para um cliente (token de usuário vs OAuth ou similar)Você tem alguma sugestão para esse tipo de projeto?

Tenho cerca de 3 meses para fazer isso, então não posso fazer algo realmente complexo (além do fato de que não seria realista para um único programador).

Eu conheço Python (frameworks WSGI), Ruby on Rails, C / C ++ e outras linguagens (.net excluídos) e gostaria de desenvolvê-lo em um ambiente Linux (MySQL ou Postgres, ou mesmo um NoSQL se você tiver alguma sugestão para a escolha certa), eu também poderia combinar várias línguas, sendo estes programas independentes de serviços.

O que eu gostaria aqui é ter um bom ponto de vista e uma boa sugestão.

Obrigado!