In the last post, we saw the difference between using 3rd party services like GMail, Github and Slack to run services for our organisation and running the services on our own servers. We saw the advantages and disadvantages of each approach. Assuming that you are convinced about self-hosting, let’s see if it is worthwhile for you to pursue the quest.
To answer this question, let’s address what to consider by using the analogy of building your own library of books v/s being the member of a public library.
Do you have a good library in your locality? How much does membership cost? These queries explore the availability of a particular service and its price.
If such a service is unavailable, you have no choice but to build your own. E.g. Email services to host your company’s emails can be found all over the web. You can use Gmail for instance. Corporate chat is available on Slack. Even highly technical services like live video streaming are covered. However, there is probably no online service that can convert cryptocurrency into Bangladeshi Taka currency. You may need to build your own self-hosted service.
If you find an online service you like, check if they are unconditionally free or are priced within your budget. A well-made free of cost service will often be a good place to start if you do not have the infrastructure and expertise to go for a self-hosted option.
What do you want from your neighbourhood library? Are you looking for special features which are important to you? E.g. if you are looking to seek access to books late in the evening, then public libraries may have closed their doors. You will have to wait for them to open the next day. This isn’t a good option if you work late in your office every day and prefer to pick up a book on your way back home. Another problem is that your library often refuses to order a specific title just because one reader, i.e. you, wants it. They may ask you to wait until at least 10 other readers want the same title. However if you have access to a 24 x 7 library and if they buy requested books for you, then you need not build your own library. Membership to the library is a better option.
Each online service will have its quirks, so be sure you know about them. E.g. Gmail doesn’t like ZIP files as attachments, Facebook has a non-chronological timeline and Hangouts doesn’t save messages offline when your Internet is down with the intention of sending them later. If you think that the shortcomings of an online service are detrimental to your daily work, then you can consider hosting a service on your own. But more often, moving to another provider will solve the problem. You should do your homework on existing services and their features before taking the plunge to host services yourself.
Infrastructure and expertise
Answering some honest questions about the infrastructure and expertise at your disposal can quickly decide if you should go for 3rd party or self-hosted services. This is because of the simple, yet powerful procedure of cost-benefit analysis. If you already have an infrastructure in place and if that infrastructure can also be used for other services, then you should seriously consider self-hosting. More so if you are the expert in the field or if you have an expert already working for you.
If you have a building with a large room and multiple racks, maybe you should consider building your own library of books, movies and documentaries, rather than paying fees seperately to a book library and to a movie rental service. Your personal swimming pool can double up as a fish pedicure tank and as a water polo playground.
Likewise, if your business already has a cloud computer with a provider like Amazon or Rackspace and if you have a server expert on your staff, you should consider self-hosting.
Sample cost benefit analysis
Let’s say your company has a domain name millenial.in. You need email service, chat service and a blog. You have 20 employees.
Using Gmail for emails for your millenial.in domain, i.e. to have emails like email@example.com and firstname.lastname@example.org, costs you ₹3,000 every month to maintain 20 email addresses.
Your company has a blog for announcements and is hosted on WordPress.com but accessible via http://blog.millenial.in. That costs you ₹1,665 per month.
Finally, your employees use Slack for real-time chats among themselves as the sales teams and the project managers stay in touch over remote locations all day. A Slack standard membership costs you ₹8,000 per month.
For access to all three services, you would be paying ₹12,665 every month.
Compare this to self-hosting. You need a cloud computer for ₹4000 per month and a server expert for a minimum salary of ₹50,000 a month.
If you are a stockbroking company full of financial experts, you obviously neither have your own cloud computer, nor a server expert. The ₹54,000 investment on self-hosting makes no sense as it is 4 and a half times costlier.
However, let’s say that you are a software company and already have a cloud computer where you are hosting your company’s API. That server costs ₹2000 per month. As a software company, you have 6 software developers and they use GitHub to maintain different versions of the source code. The team plan for Github for 6 developers costs ₹3600 per month. Your monthly cost is ₹18,265 after including the cloud computer and GitHub to the costs in the previous paragraph.
However, on your payroll, you already have someone knowledgeable in running a server. It’s the one who helped you set up your cloud computer and API. It is part of his job description to grow in skills and responsibilities to help you self-host your services if need be. He can seek the help of the 6 software developers too. To increase the capacity to host email, chat, blog and code repository, you upgrade your cloud computer to the one that costs ₹4000 per month. But you can stop the services of Gmail, WordPress.com, Slack and GitHub. Your monthly cost will go down to a pithy ₹4000 per month instead of ₹18,265, saving a whopping ₹14,265 per month.
Can someone break into your personal library and steal your books? Are there fire extinguishers and sprinklers to protect books and the reader in case of fire? Are the shelves securely fixed and books arranged properly? You don’t want the shelf and the books coming crashing down on you when you pull one book out.
Security concerns are part of hosted software too. Services can crash and make themselves unavailable. Hackers can get to your server and its data. You need to swiftly remove old employees from the system and revoke all their rights, especially if the parting wasn’t amicable. You need ways to log all activity and protect the system from possible misdeeds of those who are themselves in charge of the system and its protection. Setting up security for your hosted services can take the same time as or even more than setting up the service itself.
Are you starting your own paid service?
A very important question is also: are you planning to ever open up your personal library to the public and sell memberships? Do you have enough following and contacts to be able to set up a business and corner your intended market? What will be your unique offering compared to other libraries around, such that readers would want to be members with you. Can you sell membership for other services that your infrastructure (room and shelves) can provide? E.g. movie collection, documentaries? Entry fees for the museum of handicrafts purchased during your travels, etc?
Such efforts can be easily made with software too. Once you have set up self-hosted services, you can approach other businesses which trust you and offer to host services for them. Your self-hosted services will then start to pay for themselves and even start making profits for you.
When do I start with self-hosted?
If server infrastructure is part of your business requirements (e.g. to host an API or clients’s data) and if you have the necessary expertise within the team, you should start with self-hosted services on day 1 of your company. Before you have invested your money, time and data into a third party service. Otherwise, you should start today and expect to use your self-hosted service from the next month or from the next quarter. Why so long? Two reasons. You need to test your self-hosted service extensively before pulling the plug on the third party option. Second, you need to find a way to migrate data from the third party service to your own. Third party services are notorious in setting up such that you find it next to impossible to move away from them. The worst case is to copy-paste your data from the third party service to yours word-by-word or line-by-line.
How do I start?
Start with installing a self-hosted service and then trying it out at every opportunity that you can, alongside your favourite third party service.
E.g. if you need to send a mail to your team, send one using your favourite third party service such as Gmail and send another using your self-hosted one to test it. Make a note of the results, i.e. if all the intended recipients got the email in their regular inbox and not in spam.
Use Google Calendar and your self-hosted calendar and check if the alarms fire as intended.
At every opportunity, use both the services to check if your self-hosted service matches the performance of the third party service and if the results are the same. If the results between the self-hosted and third-party service match for a week, you can stop using the 3rd party service.
Where do I look for alternatives to 3rd party?
An excellent resource for this information is AlternativeTo. It is a crowd-sourced and curated repository on alternatives to software. There is an option in AlternativeTo to show options which are self-hosted. Try it today to see if you can find a self-hosted alternative to your own 3rd party solution.
Self-hosting on Tech 101
The server also has a self-hosted Email service using software services named Postfix, Dovecot and Rain Loop. Over the next month, I am moving to more self-hosted services on my server, the first step being moving to Piwik instead of Google Analytics for analytics on my blog’s performance.
All my software code resides on a Git service that I installed on the cloud server. They are not on Github.
Based on my experience, I am also writing a series of books on how to use Ubuntu to self-host various services such as email, WordPress, chat, Git and other services useful in the corporate world. I will post announcements about them on this blog.
Hosting your own services can be very liberating. It puts the services and your organisation’s data under your control. Besides it also opens up a stream of income for you. But is it the right solution for you? I hope that this post helps you think in the right direction and brings you to the answer.