Por motivos de investigación personal y universitaria, estoy pensando en construir un CRM simple utilizando una arquitectura orientada a servicios. Su significado es solo explicar la arquitectura en sí misma, no el uso comercial.Sugerencias de Arquitectura Orientada a Servicios
Estaba pensando en implementar un CRM que ofrezca un servicio de análisis simple y atención al cliente (almacenamiento de usuarios, comentarios personales y algunas otras cosas).
La arquitectura que soy define el diseño: - WebGUI (un cliente de los otros servicios) - AnalyticsService (un servicio que recibe los datos, análisis y recogerla) - CustomerCareService (un servicio que utiliza las API REST a aplicar operaciones CRUD).
Cada servicio tiene su propia base de datos, siendo completamente independiente de los demás. Exponen una interfaz pública. La interfaz, por supuesto, debe proporcionar algún tipo de autenticación para denegar 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 pedidos sería fácil para combinarlo con el Cliente utilizando las API públicas). La gran ventaja para mí es que sería bastante fácil crear otros clientes que usen estos servicios.
No sé lo que es un buen método de autenticación, que podría ser fácil de implementar, tampoco estoy seguro acerca de cómo hacer estas API (use XML o API REST simple con datos GET/POST). He trabajado con Amazon, PayPal y otras API de la compañía, parecen usar los servicios REST (PayPal usa un parámetro feo _cmd GET mientras que Amazon usa un mejor URI) para saber qué hacer, pero al leer algo sobre SOA, parece que las personas también usan XML. Por supuesto, también necesito tener en cuenta que la interfaz web debe poder reconocer al usuario que ha iniciado sesión, obtener los permisos (token o lo que sea) y usarlo con servicios para mostrar información. Así que no estoy seguro de que SOA sea el tipo de arquitectura que realmente estoy desarrollando ... ¿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ático de XML, me parece demasiado prolijo).
Para mayor claridad estoy anuncio esté en mis preguntas:
- Es este tipo de arquitectura llamada SOA o SaaS (o ambos)?
- ¿Cuál es una buena implementación para lo que quiero obtener? (Por favor explique como más detallado posible)
- ¿Qué tipo de autenticación es más adecuado para un cliente (token de usuario vs OAuth o similar)
- ¿Tiene alguna sugerencia para este tipo de proyectos?
Tengo unos 3 meses para hacerlo, así que no puedo hacer algo realmente complejo (además del hecho de que no sería realista para un solo programador).
Conozco Python (frameworks WSGI), Ruby on Rails, C/C++ y otros idiomas (.net excluido) y me gustaría desarrollarlo bajo un entorno Linux (MySQL o Postgres, o incluso un NoSQL si tengo 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!
Gracias, respuesta impresionante! Lo hiciste bien, los recursos son muy útiles, también compré algunos libros, ¡es un negocio muy interesante! –