Service Architecture Recommendations

For personal and university research, I am thinking of creating a simple CRM using a service-oriented architecture. Its purpose is simply to explain architecture, not commercial use.

I was thinking about implementing CRM, which offers simple analytics and customer service (user storage, personal comments, and a few other things).

The architecture that I design defines: - WebGUI (a client of other services) - AnalyticsService (a service that receives data, analyzes and collects it) - CustomerCareService (a service that uses the RESTful API to apply CRUD operations).

Each service has its own database, completely independent of the others. They open an open interface. Of course, the interface must provide some authentication in order to reject unauthorized requests.

The advantages that I would like to explain in this architecture are the ability to have all things indifferent and the ability to combine them to provide new services (for example, if OrderService processed orders, it would be easy to combine it with the Client using public APIs). The big advantage for me is that it would be easy to create other clients who use these services.

I don’t know what a good authentication method that can be easily implemented, I’m also not sure how to create these APIs (use XML or simple REST APIs with GET / POST data). I worked with Amazon, PayPal, and other company APIs, they seem to use REST services (paypal uses the ugly _cmd GET parameter, and Amazon uses the best URI) to know what to do, but reading something about SOA, it seems that people are also using XML. Of course, I also need to take into account that the web interface should be able to recognize a registered user, get permissions (token or something else) and use it with services to display information. So I'm not sure if SOA is such an architecture that I am really building up ... is it SaaS instead of SOA? I think it would be better to use RESTful applications with JSON or something like that to implement it (I am not a big fan of XML, I think this is too verbose).

For clarity, I will list my questions here:

  • Is this architecture called SOA or SaaS (or both)?
  • What is a good implementation for what I want to get? (please explain as detailed as possible)
  • Which authentication is more suitable for the client (user token against OAuth or similar)
  • Do you have any suggestion for such a project?

I have about 3 months to do this, so I can not do something real complex (besides the fact that it will not be realistic for one programmer).

I know Python (WSGI frameworks), Ruby on Rails, C / C ++ and other languages ​​(.net exception), and I would like to develop it in a Linux environment (MySQL or Postgres or even NoSQL, if you have any suggestion for the right choice), I could also combine several languages ​​that are these independent programs.

What I would like here is to have a good point of view and a good offer.

Thanks!

+6
source share
2 answers

I would define SaaS as a business model, not an architecture; however, like all business domain requirements, this will affect the system architecture, but this alone is not. What you define is essential for a service-oriented architecture.

Your expression “independent and the ability to combine them to provide new services” is a significant non-functional design requirement that SOA offers.

A good implementation for SOA is the presence of well-defined and flexible interfaces with a very clear division of responsibilities. However, it is difficult to prescribe. The proof is food; Does this provide flexible reuse. My suggestion is to spend time reading the resources of the SOA design pattern and understand the defining characteristics regarding the appropriate context for use. Then apply the Single Responsibility principle of the appropriate level of abstraction. cf (domain) Space architecture is a meta-template of SOA.

Regarding authorization, I recommend that you follow the service approach, use a distributed directory service such as open LDAP, and note that it is reasonable to provide services and for users to have their own credentials, and you can use public keys for signing messages.

The main proposal is to study and study the experience of other people:

+1
source

SOA does not force the use of XML.

Web technologies currently dominate and shape the future. Therefore, we at my company chose JSON RESTful services as a fund. And SOA as principles.

It makes no sense to suggest languages, because the purpose of SOA and a good implementation is to use any language or frame

(FYI we use Java with Spring MVC-based web services, Node.js, PHP)

0
source

Source: https://habr.com/ru/post/912926/


All Articles