M
M
mitaichik2015-12-17 13:54:47
Programming
mitaichik, 2015-12-17 13:54:47

What is the advantage of SOA and when should such an architecture be used?

Hello! I know, there are a lot of letters, but...
We have an ordinary project - something like a store, delivery, acquiring, admin panel for managers and all that. All business logic is located in the so-called "facades".
Each context has its own facade: Order Facade, Delivery Facade, etc. There is even the logic that belongs directly to the object. Thus, the objects themselves are turning into just data structures, and we are increasingly moving away from OOP towards functional programming. Moreover, most methods in facades do not accept objects, but their id. And the method itself already selects the desired object from the database and works with it.
In general, I'm new to the project, but I already see how much such a solution complicates development.
When I asked why this is being done, they said that the project is planned to be international, and will be distributed to different servers in different parts of the world, and each facade will have its own SOA service - this is for convenience and for scaling.
I understand that some logic can be designed as SOA, for example, a service for sending mail messages, an authentication service. But I don’t understand at all how to divide highly related subject logic into services in order to spread it across different servers, for example, a product catalog and a list of orders.
To my statement that today the problems of scaling are solved in slightly different ways (all sorts of server spacing, clustering, sharding, etc.), there was no reaction.
Well, before making a speech why this approach is wrong, I would like to understand: maybe I don’t understand something in SOA? Maybe it has a place to be in our project?
Tell me please )

Answer the question

In order to leave comments, you need to log in

2 answer(s)
S
Sergey, 2015-12-17
Protko @Fesor

In general, I am new to the project, but I already see how much such a solution complicates development.
What exactly is the inconvenience?
In general, the problem with SOA is that many people perceive this term a little differently. Someone remembers IBM ESB, someone heard something about microservices and SCM ...
If developers understand things like SCM and well-organized microservices by SOA, then I don’t think that “sharding, clustering, etc.” they will help you a lot (although who knows, it’s hard to fish without knowing the business logic, but if this is a store, I don’t think they will help).
When using SOA etc. you can put your own team on each microservice. And so you will scale the application not only in terms of performance, but also in terms of maintainability and command management.
In a word ... google on this topic, maybe for a start. Martin Fowler, for example, has good lectures on this topic. And yes:
I don't know where you got this information from. All large projects that I know scale precisely due to microservices.

D
Dasha Tsiklauri, 2015-12-17
@dasha_programmist

it is convenient to understand in terms of: microservices or monolith
1) microservices have the advantage of horizontal scaling, but they are stateless, so a caching service is needed to organize shared memory, network interaction
2) a monolith has an advantage when shared memory (fast response) is required for parts of the application, it statefull, so network delays are minimal or absent
. It is worth remembering: I / O operations are always slower than the CPU, so the choice depends on the task, but in general, complex solutions are used, consisting of the first and second

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question