Tuesday, January 24, 2017

Recent Q&A on Enterprise Architecture: Are you in favor of enterprise integration applications or for building stuff yourself?

A recent question from an online forum:

"Are you in favor of enterprise integration applications or for building stuff yourself such as by creating micro-services, batch programs, etc.?


This is a question for those people who have been responsible for some measure of time for the selection of an enterprise integration strategy for their employers or clients.
In integrating the many programs that a business enterprise owns, have you found Enterprise Integration Applications such as Windows Workflow Foundation (WWF), BizTalk, NServiceBus, etc. more useful? In that, have you had success with them and found that running them provides for a smooth integration experience?
Or have you discovered that building stuff by hand such as by creating micro-services and simple programs that run on a schedule is a more useful strategy that has given you a more smooth integration experience?
Also, what has been your personal preference? What are you personally inclined to? This may or may not tally with your actual experience.
For instance, I am a developer at heart and I love writing bespoke integration software because it gives me complete control and is not really as much of a maintenance nightmare as the enterprise software vendor would have you believe. I also think Enterprise Integration software creates more problems that it solves, needs a lot of investment in training and comes with a strings attached (consulting and support agreements) clause. And writing lightweight bespoke micro-services that communicate using JSON over HTTP is so much easier and more manageable. When something goes wrong, you know exactly where to look. Likewise, when something needs to change, you know exactly what little piece needs changing. If you've written your services nicely by layering your tiers and separating your concerns, and calling out your contracts into a sharable assembly, this approach is so much better. If you need security, add OAuth. If you need reliable transport, use a message queue.
But whatever my personal inclination be, and while I consider it an important factor in making a decision, I'd still weigh in the actual experience as just an important ingredient.
What has been your experience with either of the two approaches?

My response follows



I read through the comments posted by Sathyaish Chakravarthy who makes interesting points, taking a hands-on developer/engineer perspective.
I will answer this from an Enterprise Architect’s viewpoint, taking into consideration robust, salable integration requirements at large organizations.
So, what goes into selecting solutions (including integration solutions) ? Among the considerations include:
  • Alignment with Architecture principles - “Buy before Build” and “reuse existing solutions” are popular principles.
    • Building on the comment from Sathyaish - have you found Enterprise Integration Applications such as Windows Workflow Foundation (WWF), BizTalk, NServiceBus, etc. more useful?
    • Assuming the organization has licenses and support for the solution and it meets the integration requirement, the Application (like BizTalk) would be preferred
  • Supportability and maintainability - Never underestimate this, especially in large organizations where people move and transition all the time (or work is sourced to contractors and vendors).
    • A custom built solution, however great, isn’t going to be as maintainable over time. This is especially true once the original developer transitions out (or is promoted to a “Manager”)
    • A commercial product (or open source framework) if maintained and upgraded regularly is going to be more supportable.
This response assumes the Non Functional Requirements (NFRs) like performance, salability etc are similar in both cases.