ESB mostly dead in age of Microservices
I don't worked with ESB (Enterprise Server Bus) solutions (this hype was 10+ years ago).
Yes, I read a lot about ESB in university even have read Enterprise Integration Patterns back than, and its still on my shelve:
But, those knowledge is not very useful without real ESB practice in some project.
Apart, I familiar with different messaging solutions and brokers, BPEL/WF and ETL (Extract, Transform, Load).
My curiosity driven me to understand ESB consent and its place in today world.
Several prominent speakers was very useful and give me some insight into my question:
Martin Fowler & Erik Dörnenburg - Architecture without architects
Yes, I read a lot about ESB in university even have read Enterprise Integration Patterns back than, and its still on my shelve:
But, those knowledge is not very useful without real ESB practice in some project.
Apart, I familiar with different messaging solutions and brokers, BPEL/WF and ETL (Extract, Transform, Load).
My curiosity driven me to understand ESB consent and its place in today world.
Several prominent speakers was very useful and give me some insight into my question:
Martin Fowler & Erik Dörnenburg - Architecture without architects
- Seek to 24:37 to SOA, Microservices and ESB
Here my current understanding of ESB
- ESB is build a top of simple/dump Messaging
- ESB use BPEL other Business/Workflow description language (XML based mostly) to route and build some business logic a top of Messaging queues.
- ESB have a lot of ETL features - convert anything to Message and Message to anything. Moreover ESB and ETL is even merged in some products.
- ESB in general - is very smart pipes/messaging.
- ESB is always shipped with its own IDE, like OpenESB based on NetBeans
Here how Micro-services provide alternative approach
- Microservices - its dump pipes (Messaging or HTTP or any other low level transport)
- Microservices - use general and mature pipes infrastructure, like HTTP (with all its DNS, Routing, Network monitoring and audit), plus its decentralized by design.
- Microservices - is smart endpoints, you cant put business-logic it in pipes (except some load-balancing or provisioning), so you forced to write a logic on Mature language (instead of XML).
- Less vendor lock-in.
- Don't have anything out-of-the-box, need Http - use some web-server, need data-transformation - use some ETL, need messaging - chose something. Deployment, versioning and other stuff - your responsibility, you not inside some smart Enterprise Server which a lot for you.
Why ESB is less actual/dead now?
- All need performance now, and even hi-load.
- You cant tune performance of some pipe inside ESB. Apart, its pretty trivial to find bottlenecks in HTTP traffic in miscroservices, and find-out hum to blame - pipe or service.
- You can use fast load balancing, you can use and experiment with efficient WebServers and Messaging service
- With Microservices we can tune latency and performance mostly endlessly, even improve serialization, use streaming, wise caches etc, have economy on each lines of code.
- ESB was designed to be Universal tool, yes, it propotype something very quick, but soon you will leave with some performance-limit (no, ESB is not slow) and specific support (XML language).
- Services is very smart on these days. Apart 10-20 year ago information was exchanged by pure services and even files send by FTP. Wise integration was needed those days, and ESB fit perfectly. But now, its hard to find a system without REST-JSON services, so smart Pipes/Integration is less needed. Even DBs have REST-JSON services right now!
- Its danger for a company to write business-logic in proprietary and additionally XML language. Yes, company may use BPEL or similar for part of some processes, but NOT inside real-time, main, data-trafic of whole company on fly!

Comments
Post a Comment