April 18, 2019
In our online age, the time of serverless computing has also come in recent years. This offers great advantages for working in the cloud. Especially if the software for your organisation is designed and developed for this purpose. For new applications, the development of cloud native software should certainly also be a consideration. I am happy to explain why.
Evolution to serverless computing
Let’s first establish that serverless computing is a very bad name. Because even in the cloud, this service simply requires servers. But the time when a company server was working with all the software under your desk or in the basement of your business premises is really over now. This evolution has more or less gone this way:
Organisations had their own server for their network containing their operating system and application software. Then came the rented ‘virtual server’, the hardware of which you no longer had to manage yourself. Then the application software also started running on part of the virtual server (containers). Then you no longer had to manage the complete operating system yourself. And then we went serverless. As a result, you no longer have to worry about managing the operating system at all. Management then only revolves around your application software.
Eating without cooking
The serverless software is still running on a server. But it only ‘appears’ for a moment when needed for a task. For example, when you request a web page or send a form. Then the server ‘disappears’ again after the task has been performed.
Compare it to going out to dinner when you don’t feel like cooking. That’s actually ‘boileless’ food. For your meal, you’ll temporarily have access to a specialized cook with a fully equipped kitchen, all the ingredients and skills. As soon as the food is on your plate, he ‘disappears’ from the picture to make something tasty for someone else. The same happens with serverless computing. A fully equipped server appears exactly when it is needed: not a millisecond earlier or longer than it is needed.
Especially the rise of mobile and Internet of Things (IoT) applications stimulate the growth of serverless computing platforms. The technology is based on an architecture of microservices, which has revolutionized the development and implementation of software applications.
Why serverless computing?
The serverless approach offers great advantages. First of all, great flexibility due to the extreme scalability of web applications. The costs of an application can roughly be divided in the costs of: the software, data and the infrastructure in which everything is available for users. Innovation is driven by the latter. Because that is what determines availability, scalability and speed.
In the past, with traditional hosting, you had to estimate in advance how big your database and data traffic would become. In the serverless model this is completely reversed. You pay afterwards based on your actual use. And where a traditional service ‘falls over’ when the load is too high because many users share the same servers, with serverless each user gets his own server. One for one user and 5000 servers for 5000 simultaneous users. This ensures virtually infinite scalability. But with one important remark: your application must be designed for this! That requires cloud native software development.
In addition to scalability, saying goodbye to server management is an important advantage. You place the entire management of the hosting infrastructure outside the door. So you don’t have to hire a system administrator or purchase ‘managed hosting’. What you do retain is the management (DevOps) of your cloud service provider (such as Microsoft Azure, Amazon Web Services, Google Cloud or OpenFaaS).
Cloud native software development
To use serverless computing, applications must be designed and developed in a certain way. The extent to which this happens also determines the extent to which you benefit from this model. The ideal situation is that your applications are completely cloud native. Converting existing applications is difficult and time consuming. And often not possible at all.
With new applications, development as a cloud native application should be a serious consideration as far as I am concerned. Because cloud services have become a permanent part of almost every new application. The profit lies in making optimal use of and embracing that technology. My advice: develop new applications as cloud native applications.