Hello there, Everyone!!
How is it going? Welcome to 8bitmen.com
This write-up is a comprehensive insight into on-prem, short for the on-premises infrastructure. It answers all your queries such as What is on-prem? How different is it to a cloud or a SAAS solution? Is private cloud & on-prem the same thing? How do I know what would be ideal for my business, an on-prem setup or a cloud-based service?
So, without any further ado. Let’s get on with it.
1. What is On-Premises?
On-premises means a software & a hardware infrastructural setup deployed & running from within the confines of your organization. You have the complete control over the infrastructural setup. Data stays in your private network, nobody other than your team has access to the information. We can also call on-premises infrastructure as a private cloud.
In the present industry trend when everyone is moving towards the cloud, deploying their software on AWS or Google cloud. Why would you want to deploy your code on your private on-premises infrastructure?
Let’s find out.
2. Why On-Premises? What is the Need for Setting up On-Premises Infrastructure?
Companies choose to host their services running on on-premises infrastructure as opposed to 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 & this is critical to the existence of that particular business, especially if the business is offering financial, military or health care services.
Security being the primary reason, there are other factors too such as customization. There are scenarios when a particular business needs a unique solution catering to their needs which a cloud-based Software as a Service does not offer.
A Software as a service company offers general solutions which are the common requirements of most of the businesses but your requirements might be different from those common scenarios. The solution for this is an on-premises setup.
Another common scenario is vendor lock-in. Many of the cloud-based hosting services provide their own high performant custom proprietary solutions which run your code. A potential downside to this is vendor lock-in.
To integrate our code with those services, we need to write a lot of custom code with respect to a particular SaaS solution. For instance, if we need a scalable, high performant No-SQL solution & choose Google Datastore as our database. We have to write code that works with Google Cloud Datastore. Complying by its design.
Now in future say we want to migrate to an open source solution like MongoDB or something. We have to re-write our code in context to the persistence layer of our app. As we are already locked in with Cloud Datastore.
3. Real World Example of On-Premises Solution
Slack is the most popular workplace communication tool in the industry. Organizations use it as a Software as a Service. As far as the data is not sensitive like relating to finance, military or healthcare, everyone is happy. But how would teams working on FinTech apps communicate?
For this, they have to run an on-premises open source chat-based solution like Mattermost. What is it? I’ve written an in-depth article on it.
Another scenario, Uber wrote it’s in-house workplace communication tool using Mattermost to meet its crazy scalability needs considering the size of the organization Uber is.
So, by now we are clear on why an on-premises is required over cloud-based SaaS solutions.
4. Is There Any Open Source Cloud Solution Which I Can Run On-Premises for My Data Center?
Open Stack is an open source software platform for cloud computing. It ideally runs as Infrastructure as a service IaaS & is preferred by companies to manage their data centres on premises.
Open Stack controls hardware, multiple servers, storage, networking & everything in a data centre It was a joint project of Rackspace & NASA primarily built to serve the needs of public & private cloud regardless of their size.
Ohk!! I get it!! but I kinda have the requirements of both a cloud-based SaaS & an on-prem infrastructural setup. Can’t I have both?
Sure!! You can. That’s what hybrid clouds are for.
5. What is a Hybrid Cloud?
The term hybrid cloud emerges from the hybrid architectural design of your system which runs on both the on premises infrastructure & the third-party vendor cloud like AWS.
There are scenarios when we require a hybrid architecture for instance let’s say our entire service is running on premises but often, we have high processing asynchronous computing requirements to run graphics & stuff. Setting up additional servers would cost us truckloads of money. Besides we do not need servers running all the time. A good solution would be to outsource this to an external cloud service. Just pay for what you use.
The hybrid cloud architecture saves you both time & money. Cool isn’t it?
But life is not always sunshine & rainbows. On-premises infrastructure setup has its pros & cons. And might not always be an ideal solution. Let’s find out how.
7. On-Premises vs Cloud-Based SaaS Software as a Service
7.1 Security in the Context of Data Leak & Eavesdropping
Well, it’s pretty obvious stuff, if your data leaves your doors it’s vulnerable to eavesdropping. With SaaS, there is always a risk of your data being exposed. And when the data is sensitive you just cannot afford to use a third-party cloud service. This is where running an on-prem server makes sense.
7.2 Security in Context to Hacking Attacks
When we host data in-house, we are responsible for the security of the system. And keeping the security state of the art & airtight costs quite an amount of money.
We would need a dedicated security team to monitor attacks & stuff round the clock. On the other hand, using third-party cloud services puts us off the hook of maintaining a security team. Their systems are regularly updated & scanned for vulnerabilities & stuff. We can work carefree stay focused on our business. This naturally saves a ton of money & headache.
7.3 Control over the infrastructure
An on-premises infrastructure undoubtedly provides more control over the system, code & everything upto a much more granular level as opposed to a software as a service.
We have no say on how data is stored, replicated & stuff when using a third-party service.
7.4 Faster Software Development & Shipping
Running our applications over cloud services such as Google Cloud & Amazon Web Services makes our lives easier beyond our imagination & I am not exaggerating this.
Server management, security updates, electricity costs, software upgrades, infrastructure monitoring & much more, everything is handled by the cloud vendors enabling us to focus more on our business.
The rise of Indie startups is solely due to the availability of cloud services. Pay as you go with a generous free tier. No upfront infrastructure costs. What else do you need?
7.5 State of the Art Application Development Tools & Services
One single rule to stay in business when running an internet company is keep innovating, keep adapting to the trends. Cloud platforms make all the tools & services available to stay ahead of the curve, for instance, machine learning APIs, gamification APIs, application monitoring, debugging, performance analysis charts, customer retention analysis, publish subscribe, notification systems, mobile first solutions. We just cannot build or run everything in-house.
Have an idea? Need to build something out of the box? Use the tools & services & launch in minimal time.
8. More On the Blog
I think this pretty much sums up everything about on-prem infrastructure, the pros & cons of setting it up. I would love to know what you think about it?
Do lemme know in the comments.
If you liked the article do share it with your geek friends.
See you in the next article.
- Distributed Systems & Scalability #1 – Heroku Client Rate Throttling
- Zero to Software/Application Architect – Learning Track
- Java Full Stack Developer – The Complete Roadmap – Part 2 – Let’s Talk
- Java Full Stack Developer – The Complete Roadmap – Part 1 – Let’s Talk
- Best Handpicked Resources To Learn Software Architecture, Distributed Systems & System Design