This write-up is an insight into on-prem/on-premises deployment. It answers your queries such as: What is on-prem? How different is it from a public cloud deployment? Is private cloud and on-prem the same thing? How do I know what would be ideal for my business?

So, without further ado. Let’s get started.


1. What is On-Premises?

On-premises means an infrastructural setup deployed and running from within the confines of your organization. You have absolute control over your infrastructure and data. Data stays in your private network, nobody other than your team has access to it. The other name for on-premises infrastructure is private cloud.

But when everyone in the present computing landscape moving their workloads to the public cloud platforms why would one stick to on-prem deployments?

Recommended reads:
Twitter’s Migration to Google Cloud
How Evernote Migrated & Scaled their Workload with Google Cloud Platform

Let’s find out.


2. Why On-Premises? What Is the Need To Set Up On-Premises Infrastructure?

Businesses choose to host their services on-prem as opposed to a public cloud or leveraging a SaaS primarily due to security reasons. When companies use a third-party cloud-based service, the data of the organization gets shared with the third-party vendor. This opens up potential data breach possibilities and is often critical to the existence of that particular business. Especially if the business is in the finance, military or health care domain.

Besides security, there are other factors as well such as customization, vendor lock-in, etc. There are instances where a business needs a software or deployment solution specific to their needs which a cloud-based SaaS (Software as a Service) may not offer.

This is primarily because public cloud platforms are built on economies of scale and offer standard services required by most businesses.

Speaking of vendor lock-in, when we deploy our workload on a public cloud platform, our code gets locked with their platform or respective services that we leverage.

To integrate our code with those services, we need to write a lot of custom code with respect to a particular cloud service. For instance, if we need a scalable, high performant No-SQL solution and choose Google Datastore as our database, we have to write code that works with Google Cloud Datastore complying with its design.

Now in the future if we want to migrate to an open-source solution like MongoDB or something. We may have to re-write the persistence layer of our app this includes redesigning the database. I believe this is a massive undertaking. Hence businesses prefer open-source solutions that may be deployed on-prem or on a public cloud platform.


3. Is There An Open Source Cloud Solution That I Can Run On-Premises?

Open Stack is an open-source software platform for cloud computing. It ideally runs as IaaS (Infrastructure as a Service) and is preferred by companies to manage their data centers on-premises.

Open Stack controls servers, server clusters, storage, networking and everything that is to be managed in a data center. It was a joint project of Rackspace and NASA primarily built to serve the needs of public and private clouds regardless of their size.

But what if we have the requirements of both a public cloud service and an on-prem setup? Can’t we have both?

Well, Yes. We can. That’s what hybrid clouds are for.


4. What Is A Hybrid Cloud?

The term hybrid cloud emerges from the hybrid architectural design of our service that runs on both the on-premises infrastructure and a public cloud platform like AWS.

There are scenarios when we require a hybrid architecture, for instance, picture our entire service running on-prem but we now have high processing computing requirements to run ML algorithms from time to time. Setting up additional servers would cost us truckloads of money, besides we do not need servers running all the time. A good solution to this would be to leverage a public cloud service and just pay for the compute that our workload consumes.

This approach saves us both time and money.


5. Comparing On-Premises and Public Cloud


Data Security

With any public service, there is always a risk of our data being exposed. When the data is sensitive, we simply cannot afford to move it to third-party cloud storage. This is where storing our data on-prem makes sense.

But at the same time, when we host data in-house, we are responsible for the security of the system. We need to keep the security airtight and this needs resources.

We might need a dedicated security team to monitor the systems around the clock. On the other hand, when using a third-party cloud service, we do not have to worry about keeping things secure since the security is managed by the cloud provider. Their systems are regularly updated and scanned for vulnerabilities, etc. This naturally saves a ton of money and stress.


Infrastructure Control

An on-premises infrastructure undoubtedly provides more control over the system, code and such upto a much more granular level as opposed to when working with a SaaS. With SaaS, we have no say in how our data is stored, replicated, etc.


Development Velocity

Especially when bootstrapping with limited resources leveraging public cloud services makes our lives so much easy.

Server management, security updates, software upgrades, infrastructure monitoring and so much more is handled by the cloud vendors enabling us to focus our energy on building things.

The entire startup landscape hinges on the public cloud. In the early stages of our business, we cannot afford to setup up dedicated infrastructure teams and such. We need to move fast and focus all our resources on building things.

Cloud platforms make all the tools and services available to us to stay ahead of the curve, like machine learning APIs, gamification APIs, application monitoring ecosystems, performance analysis services, mobile-first solutions and such. It’s not possible for businesses to code everything in-house reinventing the wheel.

Well, Folks! This is it. If you found the content helpful, consider sharing it with your network for more reach.

Mastering the Fundamentals of the Cloud
If you wish to master the fundamentals of cloud computing. Check out my platform-agnostic Cloud Computing 101 course. It is part of the Zero to Mastering Software Architecture learning track, a series of three courses I have written intending to educate you, step by step, on the domain of software architecture and distributed system design. The learning track takes you right from having no knowledge in it to making you a pro in designing large-scale distributed systems like YouTube, Netflix, Hotstar, and more.

I’ll see you in the next article.
Until then.
Cheers!