Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why are Micro-Services Architectures not based on Enterprise Service Buses?

What reasons are there against (or for) using the features of an Enterprise Service Bus when building an overall service adhering to a micro-service architecture (http://martinfowler.com/articles/microservices.html)? Why should we use dumb pipes and smart endpoints as opposed to using smarter pipes and be able to develop simpler services?

like image 405
mttr Avatar asked Nov 17 '14 15:11

mttr


People also ask

Do we need ESB for microservices?

The ESB is an integration hub that modifies data to let applications interact efficiently. Microservices don't depend on each other, so developers can build and scale them independently. With the ESB, it takes more time to create integrations. The ESB links all the application's services through the “bus”.

What is Micro service based architecture?

Microservices architecture defined A microservices architecture is a type of application architecture where the application is developed as a collection of services. It provides the framework to develop, deploy, and maintain microservices architecture diagrams and services independently.

What are the disadvantages of a microservices based architecture?

Microservices has all the associated complexities of the distributed system. There is a higher chance of failure during communication between different services. Difficult to manage a large number of services.

What are the key issues of microservices architecture?

Microservices are often deployed across multi-cloud environments, resulting in increased risk and loss of control and visibility of application components—resulting in additional vulnerable points.


1 Answers

This is a huge question and probably can't be answered effectively in SO's Q&A format.

It depends what you are doing with it.

If you are building a single product which consists of lots of small pieces of function that can be thought of as being independent then microservices maybe the way to go.

If you are a large enterprise organisation where IT is not the main consideration of the board of directors as a competitive advantage and you work in a heavily regulate industry where new standards have to be applied across globally distributed projects with their own IT departments, some from new acquisitions, where you can't centrally control all the endpoints and applications within your organisation, then maybe you need an ESB.

I don't want to be accused of trying to list ALL the advantages of both approaches here as they wouldn't be complete and may be out of date quickly.

Having said that, in an effort to be useful to the OP:

If you look up how Spotify and Netflix do microservices you can find many things they like about the approach, including but not limited to: ease of blue/green deployment of individual services, decoupled team structures, and isolation of failures.

ESBs allow you to centrally administer and enforce policies, like legal requirements, audit everything in one place rather than hoping each team got the memo about logging everything, provide global statistics about load and uptime, as well as many other things. ESBs grew out of large enterprises where the driver was not customer response time on a website and speed of innovation (amongst other things) but Service Level Agreements, cost effectiveness and regulations (amongst other things).

There is a lot of value in both approaches. Microservices are being written about a lot at the moment, just as ESBs were 10-15 years ago. Maybe that's a progression, maybe it's just a change, maybe it's just that consumer product companies need to market themselves and large enterprises like to keep details private. We may find out in another 10 years. For now, it depends heavily on what you are doing. As with most things in programming, I'd start out simple and only move to the more complex solution if you need to.

like image 141
Encaitar Avatar answered Oct 01 '22 01:10

Encaitar