First, let me remind people that the application model doesn't ever change very often, but when it does, it creates many new opportunities.
Let's go into the early days of computing – back in the days of mainframes and minicomputer systems – when the data storage, application code, and terminal systems were all in one box. During the 1980s, the microprocessor and Ethernet networks emerged they enabled way lower-cost computers to work together and communicate with each other over local area networks. Computers and workstations began connecting to servers, bringing together a new multi-machine client-server programming model for business applications. These client-server applications emerged into a graphical user interface along with a SQL back-end database – usually ending up being an Oracle Database, SQL Server, or whatever was the right choice at the time.
The client-server application is built way differently than from the days of monolithic applications. This is where the presentation code running on the client's computer while the business logic running on the server itself – typicality enclosed within SQL stored procedures as follows.
The client-server applications absolutely flourished for only a small brief time, but they did create a new generation of highly easy to use, graphical applications that delivered computational computing to hundreds of thousands of small and medium businesses for the very first time. The legendary combination of Visual Basic client applications coupled with a SQL Database. Please remember that this setup also helped built the Microsoft Server business side of the company. The other side of the Microsoft Servers was that it also created an entire industry of software vendors along with well valued resellers. While the client-server has been a legacy approach about 20 years now, many smaller businesses still tend to use updated versions of the same old client-server applications.
Usually, client-server applications were built for only local area networks using Chatty – or even proprietary protocols – that worked perfectly well in local area networks but were extremely inappropriate for the longer distances required by the use of the internet.
Multi-Tier Applications and the Interweb
In early 1995, Bill Gates released his famous Internet Title Wave memo and directed Microsoft to focus on the Internet. This was the beginning of the turbulence period for Microsoft where they were being literally apart of everything – the good, the bad, and the ugly. We learned a lot of stupid lessons about anti-trust due to the episodes that followed. One of the most important lessons which we learned is how we need to create a technical revolution for win-win opportunities for everyone.
The revolution of the global internet brought all types of new standards, protocols, and formats that people wanted to use. These new technical standards and technologies required different types of infrastructure. In the beginning, as an example, extremely simple web servers delivered static websites. Yet e-commerce and other applications brought in the era of the three-tiered application model.
Unlike the client-server setup, the three-tier system has aged very well gracefully over time and now is used to provide API Services in addition to the web pages we use every day. The evolution of a standard API interface based on the REST API have enabled highly complex business logic enclosed within a globally available service. This allows it to be able to be called by almost any application with the appropriate security credentials. The three-tier application model is used to provide the REST API services as shown below.
The Web Browser and Serverless APIs
When we use services that are delivered as an API – which tends to automatically be scaled within a cloud and priced based on usage of CPU, RAM, I/O, and other resources – they are known as serverless services. With them being serverless, the customers don't even need to manage the server infrastructures. Serverless services are available to any valid authenticated devices anywhere – they are usually always billed on a relevant usage metric.
Now we are finding ourselves in a connected world with an amazingly awesome and powerful mobile and portable computational devices. All of these devices now support compatible web browsers that are capable of giving a proper end-user experience – which can also exceed the quality of a native application that runs on the device. As a really good example, Google Docs – which uses the web browser to provide a seamless collaborative experience across all devices regardless of the device.
At the same time, new Software as a Service application is being remodeled as a complete set of internet compatible APIs. They are now delivering an ever-expanding variety of different services using usage-level pricing. Content management, logistics, order management, 3D Printing, and anything else you can think of are all becoming highly usable APIs. They are companies such as Stripe, Twilio, Algolia, and others that have become the leaders of usage-based services.
After a pretty long evolution, the browser has become a programmable client that lives in a globally connected world of amazing serverless APIs. The combination of a client together with a vast sea of serverless APIs has enabled the client-serverless application model.
With the client-serverless setup, the end-user application tends to run of the client then calls a variety of services. The client handles the presentation while the business logic is handled with callable services. Native iOS and Android Applications are good examples of client-serverless but the browser is where the money is at. As the client-serverless model matures, it will grow massive support for consumer and business applications of all sizes and complexities.
Client-serverless can also apply to servers and microservices that are running and managing business processes. In this case, the server applications and/or workflow engine can act as the client making calls to the remote services using serverless API.
Serverless APIs are constantly redefining what is possible for application developers. These possibilities are accessible to businesses that are trying to modernize their current systems as well as building completely new client-serverless applications.
Each of the revolutions in application architecture has spawned a new database that is enabling developers to build applications that were not possible ever before. We are just beginning to enter the new world of accessible client-server applications. Just like the client-server and three-tiered architectures, the client-serverless applications model will create amazing and complex opportunities (and also disruption) for every kind of customer and vendor in the industry. A new generation of developers is going to lead the way.