Sugerencias de arquitectura orientada a servicios

Por razones de investigación personal y universitaria, estoy pensando en construir un CRM simple usando una arquitectura orientada a servicios. Su significado es solo explicar la arquitectura en sí, no el uso comercial.

Estaba pensando en implementar un CRM que ofrezca un servicio simple de análisis y atención al cliente (almacenamiento de usuarios, comentarios personales y algunas otras cosas).

La arquitectura que estoy diseñando define: - WebGUI (un cliente de los otros servicios) - AnalyticsService (un servicio que recibe datos, los analiza y recopila) - CustomerCareService (un servicio que utiliza las API de RESTful para aplicar las operaciones de CRUD).

Cada servicio tiene su propia base de datos, siendo completamente independiente de los demás. Ellos exponen una interfaz pública. La interfaz, por supuesto, debe proporcionar algún tipo de autenticación, para denegar las solicitudes no autorizadas.

Las ventajas que me gustaría explicar en este tipo de arquitectura es la posibilidad de tener todas las cosas independientes y la capacidad de combinarlas para ofrecer nuevos servicios (por ejemplo, si hubiera un OrderService para manejar los pedidos, sería fácil combinarlo con Cliente utilizando las APIs públicas). La gran ventaja para mí es que sería bastante fácil crear otros clientes que usen estos servicios.

No sé cuál es un buen método de autenticación, que podría ser fácil de implementar, tampoco estoy seguro de cómo hacer estas API (use XML o API de REST sin formato con datos GET / POST). He trabajado con Amazon, PayPal y otras API de la compañía, parecen usar servicios REST (paypal usa un parámetro GET _cmd feo mientras que Amazon usa un URI mejor) para saber qué hacer, pero al leer algo sobre SOA parece que la gente también usa XML. Por supuesto, también debo tener en cuenta que la interfaz web debe poder reconocer al usuario que ha iniciado sesión, obtener los permisos (token o cualquier otra cosa) y usarla con los servicios para mostrar información. Entonces, no estoy seguro de que SOA sea el tipo de arquitectura que realmente estoy construyendo ... ¿es SaaS en lugar de SOA? Creo que sería mejor usar aplicaciones RESTful, con JSON o algo así para implementarlo (no soy un gran fan de XML, me parece que es demasiado detallado).

Para mayor claridad estoy listando aquí mis preguntas:

¿Este tipo de arquitectura se llama SOA o SaaS (o ambos)?¿Qué es una buena implementación para lo que quiero obtener? (por favor explíquelo lo más detallado posible)¿Qué tipo de autenticación es más adecuada para un cliente (token de usuario frente a OAuth o similar)?¿Tienes alguna sugerencia para este tipo de proyecto?

Tengo alrededor de 3 meses para hacerlo, así que no puedo hacer algo realmente complejo (aparte del hecho de que no sería realista para un solo programador).

Conozco Python (frameworks WSGI), Ruby on Rails, C / C ++ y otros lenguajes (excluido .net) y me gustaría desarrollarlo en un entorno Linux (MySQL o Postgres, o incluso un NoSQL si tiene alguna sugerencia para La elección correcta), también podría combinar varios idiomas siendo estos servicios programas independientes.

Lo que me gustaría aquí es tener un buen punto de vista y una buena sugerencia.

¡Gracias!

Respuestas a la pregunta(2)

Su respuesta a la pregunta