What's the difference between hosting Redmine on-premise and in the cloud? We asked Andrew Reshetov, a Redmine technical expert, and a man behind the technical side of RedmineUP Cloud to share his opinion. .

Shortly speaking – it depends. On the size of your company, the goals and need of your project, your budget, and available resources. I suggest you base your decision on a TCO calculation to see which option will turn out as the best in a 3-5 years perspective, or on your project timeline.

Often costs of hosting on-premise seem lucratively low, but it can take a toll in a longer perspective.

Total Costs of Ownership helps to reveal costs that are often hidden or might seem not directly related to the matter (such as security, electricity, infrastructure, or training costs).

Even for Open Source software, it's natural to lease a server or hosting from an external provider. However, if you look for a number of available hosting providers, it will quicker give you a headache than helps to make a decision.

Ok, before we go into details, let's a step back. What are Cloud infrastructure advantages over hosting on-premise?

[Andrew Reshetov:] There are two types of advantages of Cloud over self-hosting.

First of all, the technical advantages:
  • You don't need a bare-metal server for this
  • You don't need hi-speed Internet
  • You don't need a backup server (because backups should be stored separately from your primary services)
  • You don't need DevOps to setup/update/monitor your server
In the second place - the advantages of service:
  • You don't need to buy plugins subscription to have all new version and features
  • You don't need to update you Redmine or plugins versions neither resolve update issues by yourself
  • You don't need to run around screaming "Ahhh, we all gonna die!" if something wrong (laughing), as on cloud server the maintenance team is going to fix it for you

You spent last years on building a turn-key Redmine hosting solution. But let's leave features from RedmineUP plugins aside and focus on the technical side – how did you construct the system architecture to provide optimal parameters. Its structure matches neither Single-Tenant nor Multi-Tenant architecture

[AR:] That's because we designed a Hybrid-Tenant structure that combines the best from two structures. We use servers infrastructure of AWS (Amazon) with Kubernetes Cloud on them. For every client that creates a new instance, we automatically create a separated virtual server (VS) with personal settings. Besides that, we have a central cloud web server that the main task is to routes and balances web traffic for all clients VS's, and a cloud email server – that receives and backups emails for all Cloud instances. Moreover, all of the instances are controlled and monitored with a main-server.

Thanks to this approach, we have the stability and security of the single-tenant with high performance and easiness to update from the multi-tenant structure. It's way more efficient and cost-effective.

How is Cloud different from public cloud servers or platforms such as Bitnami, clean Amazon, or DigitalOcean?

[AR:] All of these services are server hosting lease. You can rent virtual server there, but you still need to install Redmine, plugins, etc. on it and then set up backups and configure email settings. In general – these services solve your problem with a bare-metal server but won't solve your problem with the absence of DevOps.

What is the main difference the end users witness if they test self-hosted Redmine vs. a public hosting vs. RedmineUP Cloud?

[AR:] If they want to test our hosting, there's a free Cloud trial registration. If they test it agans on-premise instance with a complete RedmineUP plugin pack, there will be no visible difference for end-user. As I mentioned earlier, comparing any of the first two alternatives with a public hosting, they will see a lower performance.

What if a company already have a Redmine on a public cloud or Bitnami Redmine and wants to upgrade to newest Redmine in the Cloud – is it hard to migrate?

[AR:] No. Clients can either share Redmine files along with DB backup with us, and we recover them on a new Cloud instance. Alternatively, if they don't know where they can find them, it is enough to share access to the server with us - we will find and transfer the data by ourselves.

Which part of the process is the hardest?

[AR:] Just for us, the hardest thing is to migrate DB dump to PostgreSQL if the client used another DB before it. However, I already delivered such Redmine migrations for our clients with Marat.

Which elements are users usually not aware of when considering cloud and on-premise?

[AR:] All the Redmine maintenance that we take over from them. So, backups for database, files, and emails. Monitoring of the servers, recording, tracking and storing logs, updating Redmine and plugins, and remaining end-user support.

Why do people migrate to Cloud?

[AR:] The main goal to move from self-hosted Redmine instance to Cloud is to take out selected risks from your business's shoulders outside.

Let's imagine that one day you on-premise server is broken. You'd need a new bare-metal server, a new deployment of Redmine and then recovery of database dump and files.

However, you don't have a new server, the approval process for purchase is taking days, servers are not ready, DevOps are on vacation, and when you post on the community page you don't get any replies.

In the RedmineUP Cloud, if the primary server sees that there's something wrong with instance, it just moves it onto another server without pauses for the client. So, the problem is solved.

Besides, if you want to update plugins or Redmine, you need be very careful because not all changes can be roll-backed and if something goes wrong - you need to restore a server from backup and try again.

Again, at RedmineUP Cloud - we prepare a server image with the last stable Redmine and plugins for each client and test upgraded environment on a sandbox before we apply any significant change. However, if any bug appears after deploying - we can return to the previous image very fast, fix the error and implement new image again.

So, at the end of the day, as a manager or business owner, it saves you from spending a lot of man-hours and saves you from potential wallet-draining costs.