Inspiration
I was looking for an uptime monitoring solution to monitor more than 30 web applications at my company. There were tens and hundreds of options to choose from and almost all options had the same problems
- Free tools offered a 5 minute check frequency which is completely unacceptable. This means, there is a high chance of knowing of the downtime only 5 minutes after it has occurred.
- The paid services charged you additional for adding teammates who could configure webapps
- Even to add notify only members there were additional charges
- Many paid plans included at most 1 minute frequency checks with 30-second checks available only on higher plans
Apart from this there was not a whole lot of analytics beyond the basic uptime monitoring stats.
This made the offering pretty expensive for small companies such as ourselves. This is when I decided to build my own tool.
What it does
It is an uptime monitoring platform that notifies users if their applications goes down. Also provides status pages such as this - https://appsare.com/status-page/msp
How we built it
I have used Laravel and Golang to build the platform. I implemented the core uptime monitoring engine using Golang. The reason is to utilize Go's superior concurrency capabilities. I blogged about the advantages of using Go here. What makes these platforms expensive is that the website check operation is CPU and Memory intensive, this requires that the implementation be solid and use concurrency.
I felt Laravel gave me the advantage of speed of building features while Go gave me the raw power of concurrency that was much required on the project.
Challenges we ran into
- Initially I had performance issues with 200% CPU utilization since I was using just PHP to implement the core uptime checking engine
- Rewrote the engine completely in Golang and making sure that Goroutines are effectively implemented to avoid any race conditions
- Performance issues while displaying uptime for 25 websites simultaneously. I am still working on this problem
- Huge data gets generated as the checks are performed every 30 seconds making 2880 entries in the DB per web application per 24 hours. Managing this data is a challenge as it can also lead to performance bottlenecks
Accomplishments that we're proud of
Built the whole thing as a part time engineer. Loved every challenge that came along with it. I get push notifications on my mobile everytime something is down and thats just huge peace of mind.
The best part my entire team of 5 gets notified and the whole thing costs us just $13 per month! With a traditional tool we'd have to spend close to $50 per month. Thats almost a 4x savings in cost. A Huge advantage in this economy for anyone.
What we learned
- Performance is a really important aspect of uptime monitoring tools
- On the surface it looks simple but its has too many pitfalls that one should be aware of, for example the load time for 25 web application's completely caught me by surprise.
- It is possible to bring down the cost but superior implementation.
- Cutting through the noise is going to be a challenge with so many uptime monitoring tools out there, but there is still an opportunity. It will be fun on how I will overcome this challenge.
What's next for AppsAre
Many features planned
- Mobile SMS and Phone calls integration using TWILIO
- Deep performance metrics on the web applications
- API access to data
- Webhooks support
Log in or sign up for Devpost to join the conversation.