Today, one of my favorite note taking apps had a downtime incident. It went offline for a whole 15 minutes. You might wonder, “just 15 minutes!”
Those 15 minutes were enough to cause widespread panic. Especially, to a major part of their user base, university students.
I learned 6 lessons I learned as a Coder/Product/Project Manager (see below).
Firstly, this is specific learning from the app itself. Do NOT mess with DNS on production. Especially, without keeping the user base informed. In this app’s case they had an incident with their DNS which rendered their app completely unusable.
Second, your app should have a status page but keep it different from your production infrastructure. This app had its status page as status.theirappdomain.tld (eg. status.vivin.life). When their DNS went down, so did their status page. The users could not open it to see status of the app. Therefore, it is imperative to have your status page on a different infrastructure and domain, something like yourappdomainstatus.tld (eg. vivinstatus.com)
Third, users remember problems/promises and will hold your company accountable. This particular app has promised offline mode for so long but has not delivered yet. This has led to incredible frustration levels in their user base and they are pretty vocal about changing platforms if this isn’t implemented.
Fourth, have an offline infrastructure in place, if possible. Save data locally and sync when network is available. Also, applies to web apps.
Fifth, post app updates on social media. Most of the aforementioned app users went straight to Twitter during downtime. The downtime update was tweeted. The users then propagated the news to other users on various forums. Your app should foster communities on various platforms, a strong community becomes one of the best “tech support” and “audience hearing” platforms.
Lastly, clouds/DNS etc. all claim 99% uptimes. But, remember 99% is still not 100%. Educate users regarding that 1% so they know their will be times when your app might go down.
And, here is my learning for today. Hopefully, you find it useful in your code/product/project management.
Any suggestion, ideas, or apprehensions, share below.