Just gathering opinions about this architecture? Is this the only future? Are there other architectures? Which ones?
Also wondering if nodejs advantages other technologies regarding micro/nano services?
For those who don’t know what microservices are:
modern interpretation of service-oriented architectures (SOA) used to build distributed software systems.
Similar to SOA in:
- microservice architecture: processes that communicate with each other over the network in order to fulfill a goal.
- these services use technology-agnostic protocols.
Different to SOA in:
- microservices gives an answer to the question of how big a service should be and how they should communicate with each other
- services should be small and the protocols should be lightweight
Microservices architectural style is a first realisation of SOA that has happened after the introduction of DevOps and this is becoming the standard for building continuously deployed.
Pro’s and Con’s (wikipedia)
- technology-agnostic protocols.
- enhances the cohesion and decreases the coupling.
- reduces the need for a big up-front design and allows for releasing the software early and continuously.
- services form information barriers
- the architecture introduces additional complexity and new problems to deal with, such as network latency, message formats, load balancing and fault tolerance, ignoring one of these belongs to the “fallacies of distributed computing”
- testing and deployment are more complicated
- inter-service calls over a network have a higher cost in terms of latency and message processing time than in-process calls within a monolithic service process
- moving responsibilities between services is more difficult; it may involve communication between different teams, rewriting the functionality in another language or fitting it into a different infrastructure
- the complexity of a monolithic application is only shifted into the network, but persists