Top 5 Anti-ESB Arguments for DevOps Teams.

Unix and Mac. Developers are always in combat. My last verbal combat was a “discussions” around ESB and Microservices. They are fun because both supporters tend to have very strong opinions about what they think is best and both want to fight each other. I recently got involved in one of those discussion about ESB vs. Microservices and the ESB guy throw lots of arguments at me. “ESB is magic” got almost burnt into my mind until I started to investigate a bit: “How to fight ESB discussions in combat?”. Here are my top 5 findings that may help in your next verbal ESB combat situation.

ESB Tightly Couples Services.

JBoss in 5 minutes (from Installation to Deploy) - Quickstart - by Sven Malvik
JBoss in 5 minutes (from Installation to Deploy) – Quickstart – by Sven Malvik

ESB vs. Microservices, it’s like the holy war between Windows, Sometimes it’s hard and frustrating to make changes in a service that is tightly coupled with other services through the ESB. Whenever we make changes, we’ve side effects that needs to be investigated. And those side effects are sometimes in areas where we’re not the owners of. It’s one of the key disadvantages with having an ESB that has been pointed out on Wikipedia: “- Tightly-couples the entire system, which leads to more impactful deployments …”. An ESB has the ability to change requests and responses, for example if we want a response to be in a certain format, ESB tend to be the solution that can make it happen. An ESB also can aggregate two or more services into one, we call it orchestration. It can fulfill special needs without changing connected services. ESBs can do a lot. There is a lot of magic happening in ESBs that services depend on. It means that it isn’t enough to “just” test a service after a change. We are forced to always test the entire request/response chain through the ESB in order to be sure that all dependencies and the logic inside the ESB still work as expected. And because we’ve ownership only for our services, we depend on other people. Tightly coupled services are painful because changes and deployments are a lot more dangerous than if they would just serve independently.

Managing SOAP is Time Consuming.

SOAP uses WSDL which is a heavy-weight and verbose XML. It accomplishes its work through strong typed messages which makes SOAP feel a brittle format. Whenever you change a type, all clients will break and have to be changed to the new specification. Even a small namespace change can break the entire communication between two services. This makes also versioning extremely hard which is a core part of evolving services. Managing SOAP is hard when you need to spend time figuring out what to do. Therefore, the general rule of thumb is: “Unless you have a definitive reason to use SOAP use REST”.

ESB Experts are Bottlenecks.

READ: http://devops.town/better-off-with-microservices-or-esbs/

Busy people we depend on are always bottlenecks for us. And ESB experts are most of their time busy. They are busy because an ESB is such a complex component that it requires knowledge from very good people. It does so many different things like Routing, Messaging, Monitoring, Securing, Orchestrating and many other things. And from time to time we as the service developers need assistance from these people. We need assistance when we try to connect our services to the ESB. We need assistance when we manage WSDL files. And we need assistance when we want to track requests from one service to another. It’s obvious that an ESB with many connected services is a challenge in every organization. It’s up to us if we want this kind of challenge or if we want to move away from it and instead chose ownership of the entire value chain of our services.

Service Orchestration in ESB is Expensive.

Service orchestration is either changing business logic or it is moving users through processes. It’s the coordination of multiple services exposed as a single, aggregated service. Service orchestration is code that belongs in services, not in the ESB. What happens when business needs a change or a new feature? And some part of this feature has already been done and is available in one of the services connected to the ESB? Business will eventually ask the team that implemented the service if they can add this feature. What happens if the team says no because they got no time? Or if they say no because they cannot implement the feature because it doesn’t fit in the service? Business might talk to the ESB experts and ask if they can “just” add some logic to the service response. This new ESB logic depends now on the service and any change in the service will affect the ESB and at the end the clients consuming the aggregated response. Changes will become time consuming and expensive because dependencies are always frustrating and expensive.

Vendors Capitalize on ESB

ESB licences can be extremely expensive. Building complex software components like ESB is a business model. Andy Hedge put it in nice words. “In order to sell software licenses it was key to have something big, expensive and most importantly critical to the client once implemented. There is no greater example of this than the ESB.”. The Oracle Service Bus may be a great example. Licences cost thousands of dollars a year. What you get is a complex product and a great support. The thing is that some products are so complex that companies hire experts to manage them. And those experts often don’t utilize the vendors support. I personally like this kind of business model because it’s funny and sad at the same time, a wonderful contrast.

Conclusion

5 arguments that you can use against ESB supporters. Mix them with 5 positive arguments for using Microservices and you win hopefully every ESB vs. Microservices discussion. Even if you as a DevOps Consultant are not interested in ESBs, it’s good to know about them because discussions will come up and you better be prepared. Read all articles from Sven Malvik on devopsy.kinsta.cloud

/Sven Malvik – DevOps Consultant from Oslo/Norway

Comments

4 responses to “Top 5 Anti-ESB Arguments for DevOps Teams.”

  1. Paul Tiseo Avatar
    Paul Tiseo

    Preface: I have never worked with a big, smart ESB, so…

    “We are forced to always test the entire request/response chain through
    the ESB in order to be sure that all dependencies and the logic inside
    the ESB still work as expected.”

    Well, that isn’t the fault of the ESB, is it? I mean if I change one microservice, I still need to test all the other various microservices that pull/are affected by that change, right? I have a “microservice” that pull from Freshdesk into an on-premise JIRA. They just changed the date format on the output by the webhook. It broke the direct connection. Whether I need to remember to look in the microservice or the ESB, it’s fundementally the same problem: I need to know where to look, quickly. If I have a hundred microservices to track, all in different languages and different toolchains, well…

    “Managing SOAP is Time Consuming.”

    A colleague of mine uses a lightweight ESB, and has never touched SOAP. So, is that really a general disadvantage of ESBs?

    “ESB Experts are Bottlenecks”

    So is the database guy, so is the sysadmin, so is the one dev who knows how that microservices was written, so’s the one guy who knows how to run Mongo so it doesn’t fall over itself all the time, so is… 🙂

    That is a strawman.

    “Service Orchestration in ESB is Expensive … What happens if the team says no because they got no time?”

    Seems like the root problem is that the devs didn’t get training in the ESB used, not that the ESB is to blame. Say one has a team of various carpenters, and some were trained to use regular hammers and some were trained how to work the power nailer. You need power nailing done, but none are available; they are on other jobs. Should we then eliminate the power nailer tool from the carpenter’s toolbag because one failed to train the team properly?

    “Vendors Capitalize on ESB”

    Not a convincing argument to me, even being someone who has inadvertently been doing “microservices” for decades. Which vendor(s) “capitalize” on Apache Camel? And, how long do you think before there’s a glut of consultants selling their help with microservices?

    There are some good arguments for microservices and against ESBs, many which you missed, but I think this black-and-white presentation of reasons to “use against ESB supporters” so that you “win hopefully every ESB vs. Microservices discussion” is a bad perspective for a professional to have.

    1. Sven Malvik Avatar
      Sven Malvik

      Hi Paul,

      thanks for your great comment. I can’t and I won’t deny that your arguments are all valid. I mean every expert when he’s the only one who can get the work done, is a bottleneck. The point is-with less technology we need less experts. Actually, writing Microservices should be learned as well-they shouldn’t depend on other services? They can of course call other services that fail but they should respond properly?

      This article is basically a very short collection of “arguments” we made where I work right now and some arguments others made. Whenever-or mostly-we have a production problem we struggle with the OSB. Not because it’s broken but because we don’t know what’s happening inside. For us it’s a black box and we have people that work entirely with this technology and who are not part of our team. Finding the root cause of a problem is because of the many technologies we have in place. ESB is one of them that we-because of our new Microservice setup-not needed anymore.

      For us it was the right decision not to depend on the OSB/ESB anymore. It’s a relief for us but that doesn’t mean others will feel the same way. We were just not able to maintain it in our team-Segregation of Duties (Security/Politics). It’s fair to say that these arguments are our/my subjective opinion.

      Don’t take sentences like “win hopefully every ESB vs. Microservices discussion” serious. Of course, those aren’t very professional. They are just provocative-stupid-funny-at least for me 🙂

  2. […] vs. Linux, ESB vs. Microservices. I had recently a short discussion about an article I wrote: „Top 5 Anti-ESB Arguments for DevOps Teams” that make me think: „Are we better off with microservices than with ESB’s or doesn’t […]

  3. Dr.Taqiuddin Avatar
    Dr.Taqiuddin

    I dont totally agree with your viewpoint. There are always many perspectives to look at technology paradigms. All the points you have mentioned are related to leveraging ESB in poor way. For that you cant blame the technology. The very intention of introducing ESB is to avoid tight coupling between the system services and making the endpoint lightweight. But with microservices we are again moving backwards in time. Putting all the orchestration, Integration and precisely every NFR aspects to be handled within the services. even with all that still we need gateways to handle most of the pain areas. I see that there are some advantages with microservice model from Application system architecture but its not right to say that micro services is replacement of ESB.

Leave a Reply