Building houses and software, it is all about the foundation
A good, solid foundation usually serves as the basis for building a house. The starting point is a stable surface and a construction that can withstand the tooth of time and (unforeseen) circumstances. Once the house is built on the foundation, it is possible to expand it. Think of, for example, placing a dormer or moving a wall.
It is nice if the house (read: the architecture) is flexible enough to carry out these changes. With certain changes, such as realizing a basement, it can be a challenge to accomplish this with an existing house. And therefore – most of the time – not possible to realize this an existing house.
Other modifications, such as replacing wood piles for concrete, are practically impossible.
Wouldn’t it be nice if you could easily realize challenging changes – such as replacing piles, improving the foundation, or adjusting the entire home – without having to break down the house?
But no matter what kind of changes you make, the foundation usually stays “the base” on which you build, so it remains the same. Why do I talk about building houses and foundations in this blog? Well, without realizing it there is a similarity.
When looking at how we used to build our software, we initially built it on physical machines (servers). Just computers that you can touch and of which you can replace the hardware. With the great advantage that everything can be managed in-house, but at the same… that it can also become a challenge.
For example, consider managing the infrastructure and the different applications running on the different servers. And when you work with physical servers, you also have to deal with server failure. Which must be solved as quick as possible, including restoring a backup, and data and communication towards parties that depend on that particular server. In addition, servers have a certain ‘expiration date’ and must be replaced after a certain period of time. Operating system (OS) updates up to application (s) updates must then be taken care of.
When working with virtual machines it becomes already a bit easier because the hardware is ‘virtualized’. Giving you the advantage that multiple machines – regardless of the hardware – can run on one physical server.
The next step is toward the cloud. In that case, virtual machines are created in the cloud and managed by the cloud provider, and owning your own hardware is no longer necessary.
But when looking at cloud, there are different cloud models, such as IaaS, PaaS, and SaaS.
- With IaaS “Infrastructure as a Service”, the infrastructure is managed for you – including networks, hard disks, and servers.
- When opting for PaaS “Platform as a Service”, the middleware and the OS are managed in addition to the network, hard disks and servers. The only thing you have to manage yourself is your data/database and applications.
- SaaS “Software as a Service” has a big advantage that don’t need to be managed anything at all. You can use your software as a service.
An example of this is Office 365. You can use the software as a service.
The next step and ‘layer is containers, containers are an additional abstraction layer on top of OS virtualization.
Comparing this to the foundation of a house, it would make the house more robust and more flexible.
And last but not least, there is the option to opt for Serverless.
With Serverless, only the application is managed, and it is possible to build the application on a stable, strong foundation (managed environment)based on workload.
The foundation on which we build our software has changed from physical machine to virtual machines, and from Cloud Compute to Containers and eventually to Serverless.
Comparing these steps to the above-mentioned example of building a house, it is basically using a new foundation when building a house.
This is not yet adjusting the foundation afterward. You’ll start over here and build something on top.
That is not the case with Serverless. When working with Serverless it will manage the required servers are dynamically and automatically – even when servers fail. It doesn’t matter which network, hard drives, servers, middleware, and OS are behind the application(s).
When looking at Serverless, it provides the foundation with a stable surface that can withstand the tooth of time and provides the necessary flexibility. The complete foundation, both servers, and back-end software, can be replaced without any problem.
Isn’t that wonderful?