Application architectures have evolved greatly over the last 30 years of computing. They have shifted back and forth from proprietary character-mode terminals with centralised processing to client/server applications with distributed processing. Then, they shifted to the centralised hosting of applications but this time with open standards-based, Web-delivered front-ends.
Each of these trends included a variety of methods to connect disparate systems - many proprietary, some without any re-usable characteristics and all typically requiring the developers, operators and maintainers to learn a new set of skills and the organisation to put new processes in place. These upheavals invariably created friction and frustration for the individuals and the organisation involved.