Imagine that there are two companies - Free Chat Inc. And Expensive Chat Inc. They offer the following deals:
Option 1 - Free Chat will add provide you with an end-to-end chat product and integrate it with your app all for free. They will also allow your users to send 1 million messages per month also for free. After that, they will charge you $0.0001 per message i.e. $100 per million.
Option 2 - Expensive Chat will license their messaging solution for $1000 and then charge you $5000 in consulting fees for the integration. After that, you will be using Firebase as the backend who charge $0.0000001 per message i.e. $0.1 per million.
The question is, which is the better deal?
Expensive chat are charging you $6k up front but then their cost per message is 1,000 times lower. So the answer depends on the volume of messages you are expecting and your initial funding level.
Imagine that you go with Free Chat and your users send 11 million messages per month. This means that you will be paying $1000 in hosting costs. At this rate, after 6 months you will have spent $6000 which is the initial price difference between the two services.
An important point is that when you launch a startup, the risk of failure is very high and the probability that you will get to 1 million messages per month is quite low. When you are first launching, money is also tight so an option with low startup costs is attractive.
Companies like Free Chat make their money from the relatively small proportion of startups that become successful. Maybe 9/10 never reach the 1 million messages per month mark but 1/10 will reach 50 million messages more than covering the cost of the others.
For this to work, they also need to lock you in to their service because their business model wouldn't work if every successful app left their service.
Often they will also sell your users' data to recoup some money from the non-paying services. Check their terms and conditions carefully.
The Bottom Line
Companies like Free Chat have a low up front cost but a high long term cost. They are a good choice if you lack initial capital or just want to make a proof of concept. They are a bad choice for well funded startups or founders who have a lot of belief that their product will be successful long term.
Companies like Expensive Chat make their money up front. They have no interest in locking you in to their product. They are good in the long term for high volume successful messaging apps.
Second Example - DIY Chat
The founder of a company looks at both Free Chat and Expensive Chat and decides that he can do better. She's a talented developer with decent initial funding and a strong team that love to build software. She looks at the market and works out that AWS is the cheapest hosting option. After surveying the market they decide to build their own messaging server based on WebSockets and their own native chat clients.
The project goes well but takes longer than expected. In their team, one member works on iOS, another on Android and the third developing the server. Overall it takes 6 weeks before they have a working prototype.
They launch and the app and it has some initial success. Within a month they have 100k daily active users. At this point the server goes down because the load is just too high. The outage lasts for 2 days until they can get a fix in place. Although this damages their momentum, they keep growing.
With some teething troubles they scale to 1 million daily users but this is when the real problems set in. It reaches a point where the load is just too much for one server. Unfortunately, when they built the system, they hadn't thought about how it would operate in a clustered server environment.
At this point, they are being hit by outages daily and the investors and customers are starting to complain. Now these problems have the potential to close down their company.
The different types of cost
Development costs are interesting because people often overlook them. Every hour you or your team works has a cost. There's the cost of the salaries and the office space but also the cost associated with the time that could have been spent doing something else. If the team could have taken on a consulting project and earning $80 per hour per person, then by working on an in-house project, the company is losing out on potential income. Even if they are only actually paying out $30 per man hour, they are actually losing $80 per hour in lost revenue.
There's also a strong temptation for developers to reinvent the wheel and build everything in house. You need to focus on your core product - are you building a messaging app? If so, it probably makes sense to build something in-house. But if you're not building a messaging app and just want to add instant messaging as an extra feature, then it makes much more sense to find an existing solution and let your team focus on the product rather than the low level details of how messaging works.
When you use code developed by someone else, often have to pay licensing fees. The way to look at a licensing fee is by comparing it to the cost of getting your team to develop the same product. If the company who are licensing the product are charging $5k and it would take a team of 3 people 3 weeks to develop the same product, you should license the software! 3 people x $650 per day x 15 days = $28,800!
You may think.. "Oh, but it's only three weeks..." but in reality it would probably be more since developers will commonly underestimate by a factor of 2.
It makes sense to use consultants when you don't have the relevant expertise in your team. If it will take your developer 5x longer to do the work than it takes the cosultant, then it probably makes sense to out source the work.
There will always be a cost associated with hosting a messaging server. However, the costs can vary significantly from host to host. You can see a detailed breakdown of how to calculate hosting costs for various services here. There is huge difference in the cost per GB for different hosts - from $1.5 to over $200!
There will always be a cost associated with integrating messaging with your app. You will need to make changes to your server to accommodate the chat functionality and build a messaging UI. Some companies don't offer any kind of UI framework, others offer basic UI components and still others have full open source demo apps. This should be taken into account.
Hidden costs are also important to factor in. They are things like:
- Vendor lock-in
- Opportunity costs
- Vendors selling your users' data
- Vendors going out of business
- Lack of flexibility in hosts mobile SDK preventing you from adding important features
- Issues with scaling
These costs are hard to predict but they are real and you should try to understand and mitigate them as effectively as possible.
DIY Chat - What went wrong?
This example is fictional but we've worked with a number of clients who have reached similar positions.
One client spent $50k in consulting fees to build a messaging server which never went live. At that point he came to us and spent about $5k in consulting fees and ended up with a functioning messenger supporting over 200k daily active users.
In the previous example, the founder made a number of crucial mistakes.
1) Reinventing the wheel
Developers love to start a new project. Initially projects are exciting because you're adding new features all the time and things move quickly. With the 80/20 rule, you add 80% of the features in 20% of the time. The problem comes when you spend 80% of the time on the final 20% of the features!
In the example, because the team weren't experts in the domain, they made critical mistakes which prevented the project from scaling as the app took off.
It's important not to underestimate the difficult of building a messaging platform. This kind of error can easily sink a startup.
2) Developing everything in house
There's a temptation to develop everything in-house but if possible, it makes sense to use existing solutions. The company spent over 700 hours developing something that could easily have been licensed - that would have saved a substantial amount of money.
3) Opportunity cost
The company lost out on 6 weeks of development time by building a basic chat app when they could have spent that time extending an existing framework. They could have been adding additional features to differentiate their app in the market which would have resulted in a stronger uptake at launch.
That time and energy could also have been spent on other important activities like marketing and testing.
4) Premature optimization
One reason the founder wanted to develop the server in-house was because they could retain control of the server infrastructure and reduce the hosting fees. Although this makes sense in principle, in practice you should only devote time to reducing the monthly hosting costs when the potential saving outweighs the development cost.
There's no point in having a very cheap USD/GB cost when your only handling 1k messages per month!
It's important to assess all the costs before choosing a messaging solution. Don't just be persuaded by the marketing department of the message provider.
Parse had a great reputation until it was unexpectedly closed down...
Consider the following:
- What will the hosting cost be as my app scales?
- Do I need to build my own chat user interface?
- How difficult is it to integrate with the messaging service?
- Can I migrate my users if necessary?
- Will the hosting company sell my users' data?
- How flexible is the service?
- What is the probability that they will still be around 1 year, 5 years etc...
- What will the consulting and licensing fees be?
By considering all of these factors, you will be able to make the best decision about which messaging provider to use.