by Cedric Wetzel
If you start to learn about the internet or programming web applications today, you will reach a point where you have to think about hosting your application. Most tutorials will refer to a Platform-as-a-Service provider where you can easily host your application with a few clicks. In the enterprise world with legacy software and distributed systems, a mixture of different kind of hosting types are mixed to perform. In this article I want to talk to you about On Premise Hosting, Infrastructure as a Service, Platform as a Service and a mixed operation. From a private customer perspective, it is not important at all where there services you are using are hosted. But from a solution architectures view this is a very hot topic.
While a few years ago, in a corporate setting, software almost always was hosted in on-premise datacenters. Companies historically had the buildings, infrastructure and personnel to maintain a local datacenter. Stored data was clearly their property. From a todays perspective, when you have the chance to gather some insights at such an environment, you will be terrified how systems in a classic on-premise installation were setup. A few examples I know are old network topologies that make the whole network insecure through scattered holes in perimeter firewalls, nearly no encryption of anything, because the network is seen as a “secure space”, or the separation of internally used software and external software, for example user self-services. Nevertheless, there are some advantages of on premise hosting in the own datacenter: You control everything and 100% own the data you store. In some countries it requires many documents and legal advice before you can simply outsource your core systems containing business relevant data. Also, in case of an outrage that results in a service downtime, it’s up to you how fast you are going to fix the problem. There nothing more uncomfortable than saying your customers that you can do nothing about that service downtime because it is not in your responsibility. At the other hand, operating a data center is not an easy task. High sunk costs to start for things that directly don’t have an impact with fulfilling your business values, like fire extinguishers or a mandatory turnstile. Specialized personnel for every task is needed: From putting the servers into their racks, make sure wiring to the network switches is correct, keeping the air condition running, over the operation system expert. Having these people on a payroll makes operating software expensive and if you don’t plan to offer your services to other companies, economies of scale won’t happen at a big scale – if at all.
Hosting in the cloud has never been that easy. With many local and global players that offer many cloud services, from a regulatory standpoint, should be ready to use for many companies. In the first generation of cloud computing, cloud providers mainly offered infrastructure-as-a-service. These offerings enabled companies to run and, above all, scale software services without maintaining own datacenters. For example, to host a classic website with a database, backend and frontend, you could simply order a server with a nearly free configurable setting that can run your services on one or many instances. Also network adapters, network rules and firewalls can be configured as needed. The service installation and server maintaining on an operation system level must be fulfilled by companies personnel. Whenever a new server is deployed or system updates are ready to install, a cloud system administrator must install the new packages. But all that non-digital requirements are out of scope from a clients point of view.
After some time, new services of the cloud providers emerged. This new offering, called Platform-as-a-service, or PaaS, enabled completely new architecture styles like the serverless architectures. With PaaS, software engineers can focus more on their artifact and less on the underlying system or server. In operations, the server operating system is abstracted and can be updated by exchanging the whole infrastructure. Companies therefore don’t need a classical server administrator anymore because maintenance tasks are executed by the cloud provider automatically. As a short disclaimer, I think this is true in a high level perspective. In reality these services like a Kubernetes cluster, lambda functions or other runtime environments of course need very specialized maintenance, but in a narrower way. APIs on an infrastructure level enable a high grade of automatization which makes it easy to scale software or to test out new software products. Pricing of these Services may look a bit more expensive than hosting them at your own servers but from a birds eye economic view, this often is a fallacy. Adding labor costs to the calculation, PaaS offerings most of the time are cheaper than operating your own servers or datacenters.
Over the last decade cloud based services for running applications became cheaper and easier to use. They enable new business ventures and lead companies to focus on value creation instead of getting stuck in operational tasks. Still there are some usecases for on premise hosting, for example in highly regulated environments or where end-to-end responsibilities have very high importance.