When software shifted from desktop and web-based applications to mobile applications, distributed architectures became much more prevalent. It became a focus for many organizations to build a platform instead of just a product. This approach places a much larger emphasis on APIs that a product can expose to clients as well as third-party partners. As APIs became a given for any web-based application, it became popular to try to build client applications (mobile or JavaScript) on the same API used to provide functionality to the third-party partners. The idea is that if you exposed one well-designed, general-purpose API, you would have everything you need to build any kind of application. The general architecture looked like this:
The flaw in this approach is that it assumes that the needs of your first-party (mobile and web) and third-party (partner) applications...