While email is still considered the number one communication tool in the business world, the second has
to be real-time instant messaging. This channel has taken many forms over the years, from the old days
of Internet Relay
Chat (IRC), the chatroom has evolved into a rich media experience, integrating deeper
into our working (and social lives).
One of the well known players in this space is Slack, a web based messaging system from the founder of the photo sharing property Flickr. Where Slack succeeded while others struggled, was to make it accessible to anyone, without software installs in a very feature rich beautiful looking web-based app.
Slack has amassed a huge user-base largely down to the fact it is free to use and it works. You only need to start paying for it when you need a little more flexibility and integration. The biggest feature that paying unlocks is unlimited searching of historical messages, as the free one is limited to the last 10,000 messages, which you run up to quicker than you may imagine.
We were coming to the stage where we were looking to upgrade our Slack package anyway (from free to
premium) to unlock the features we were seeking — namely searching capability. Also wanting to segregate
our customers and vendors from our main internal chat groups, and Slack in its free state, was not as
flexible as we wanted.
For all the greatness of Slack, it is a SaaS offering at the end of the day, with all your data residing on a remote server. This was the impetus for us to start looking around for a more secure alternative to Slack when we looked at the type of sensitive data that was being shared. Our VP of Engineering Ryan Burch, who has a healthy skepticism of security and questions everything, wanted to see if we could bring some of that data closer to home.
With that criteria, before handing over money, we thought it was a good opportunity to look around to
see what else was available, including any self-hosted versions (and when we say self-hosted, we mean
something we can easily throw to our AWS account and not worry too much).
It is worth noting, that we were quietly surprised at the sheer choice this segment of the communication space has to offer; you could be forgiven for thinking that Slack and Microsoft Team’s were the only shows in town.
Slack has inspired many clones (including Discord — ‘slack’ for the discerning gamer) and one of the more feature comparable alternatives is the open source Mattermost. In all of our research it kept popping up as the recommended one. Taking the wisdom of the crowd, we pushed forward with a full evaluation to see if it would stack up and tick all the boxes we had.
Installation was straight forward, taking their Docker instance, running it up in our AWS and pointing
it to an Aurora database. All messages and logs are stored in the database, while all files uploaded,
are stored in an S3 bucket. Nothing terribly unusual there.
Once we got through our initial is this thing going to work long enough for our testing, we stood it up with a little more polish around it. This included putting it behind a load balancer with an HTTPS certificate.
We won’t go into too much detail here, as the Mattermost installation is very well documented, but suffice it to say, anyone with rudimentary AWS knowledge, will have no problems whatsoever. Given that it uses S3 and Aurora, you don’t have to worry about supporting infrastructure in the traditional sense had it been run up on its own hardware in a data center. The joy of the cloud.
Mattermost bills itself as a Slack alternative and from an end-users perspective it is very hard to tell
the difference. You can even import Slack’s themes that makes it near on impossible to spot the clone.
Available in a web-based, desktop and mobile version, Mattermost has catered to all clients, with
installation a breeze for all. The clients talk directly to your Mattermost server, as part of the
sign-in, it requires you to supply the URL of your server.
If you are familiar with the various clients for Slack, then you will be completely at home with the user experience here. Users won’t need retraining, as everything is in a familiar place, usual concepts heeded which includes many of the same shortcuts.
Copy and pasting into the chat room, including images/files and large globs of text, is as polished as what we have become to expect from Slack, with no noticeable difference. Well the only real difference is that the files are now stored on your S3 account, as opposed to some remote file space somewhere.
The mobile app comes with full notification support, and again, plays nicely on both iOS and Android.
Capable of receiving and posting shared resources within the app with no issues.
It is worth talking a little about the administration side of things. On the whole, we felt there was a lot more granular control over channels and groups than what Slack offered — at least at the free level. Segregating our core members away from our external friends was much easier which was achieved at a team level. You can also invite external people into individual channels too, but the team split was a nice way of keeping it clean and simple.
There were a couple of wee things that we were disappointed in, but like with any open source project, we had at least an opportunity to address it ourselves instead of being forced to live with it. It centered around the deletion of messages and files. Mattermost merely marks it as deleted in the database but doesn’t actually remove it — a common practice in the modern day database. Also, if an uploaded file was removed from a channel, it wasn’t deleted from S3. We would prefer it was gone-gone.
Fortunately it wasn’t a huge effort to make these changes ourselves, so when a user deleted a message in their chat, it really was deleted. Which is another huge benefit for open source, you can verify that a piece of software is doing what it claims to and take the corrective action where need be if not.
Technically the cost of the software is free, as it is open source, however hosting it within AWS comes
with cost albeit small. The configuration that we ran up within AWS, Mattermost claims can comfortably
support 1,000 users.
So to support 1,000 users in Slack, it would cost $6.67 x 1000 = $6,700 per month for their base premium plan. Our AWS bill, which includes the EC2 instances, the database, load balancing, S3 charges, and network bills, comes in and around the $50 per month (that is with fault tolerance — if we were really conservative we can get that down to just $36 per month. Heck most of the resources falls under the AWS free tier umbrella so you may be spending only a few dollars per month). It doesn’t require a huge amount of processing power to manage asynchronous communications since most of the time, it is sitting there doing nothing waiting for something to happen. Ideally suited for the cloud.
Significant price difference! Extreme granted, but if you already have an IT department who is well versed with AWS, then anything beyond 8 users, the economics speaks for itself.
The big value here is that we can invite people in and out of our installation without worrying about a fluctuating per-seat license bill. So for short term projects, you don’t have to worry about your bill spiking if you need to suddenly invite a group/team of people.
If a full SaaS model is the only way forward for you, Mattermost also provides a paid-for hosted per-user version, starting at only $3.25 per-month. Not as cheap as $50, but half the price of Slack.
We’ve been running with Mattermost for just over a month now and we’ve already deleted the old Slack
clients — the cyber version of burning the boats. There has been no complaints from our users. The
clients keep being updated in the background, so we are not feeling we are missing out on any updates.
Messaging is one of those services that are not as mission critical as say email, so if the system was down, or suffered some data loss, it wouldn’t be the end of the world. That said, we’ve yet to see any downtime (thanks to our AWS architecture) and any data loss we could suffer, would only be our own fault, for not properly backing it up in the first place.
It is easy to be seduced into thinking that SaaS is the only way to provide services to your business and we’ve been fooled into thinking it is the cheaper option longer term.
For most things, that is indeed true especially if your user base is small, but with the advent of AWS (other cloud providers are available) taking a step back and meeting in the middle of this new ‘self-hosted’ compromise (don’t think hosting own email servers will become fashionable again, but hey you never know, given the current privacy concerns around emails), significant savings can be had, along with increased functionality and control.