Precautions before creating a server dependent mobile application

If you're new here, you may want to subscribe to my RSS feed. Thanks for visiting!

A server costs money. Not only the monthly rate you have to pay to keep it alive, also maintenance and system administration takes time, so it takes money.
If you plan to develop an app that uses a server to read/write data, be very careful and before starting anything, take into account these considerations.

Does your server need HA (High Availability)? How to know that!? Does your application need to connect to your server to operate? In the answer is yes, you need HA! That means that your application, to do what it has to do, needs to be able to connect to the server. You can’t prevent when the user will do that and the last thing you want is a bad rating and some complain in the App Store.
HA is more expensive than conventional systems. It’s more difficult to configure and to administer. If you don’t have experience as a system administrator, and you have a great idea for an app that needs a server to work, think about partnership with a good friend with experience as sysadmin.

Is your server able to scale? What about if your app is a great success and your current configuration is not ready for the overload? Even if your app is great it can become a great deception for the users just because your system wasn’t able to scale when it was needed. Remember, the user doesn’t know and doesn’t care about technical issues. For the user all technical explanations are just excuses. So try to avoid to be in such situation.

Is your app a paid or free app? If it’s a paid app, think about including in the price, not only the expenses to maintain the server. Think also about the expenses for scaling! The same reason of the previous point. Maybe you need to provide 2xTimes or more the performance of your current system. That will cost you money and you have to include that expense in your app price as well. It’s important to plan for an eventual future scenario. It doesn’t depend only on how many times your app was downloaded. How will people use the app? Does it help on common repetitive daily tasks? Does it make intense network use with the server (for example a photo sharing service)? The amount of data to read/write, just text? multimedia? It’s not easy and a mistake can costs not only money but also reputation and bad ratings.

If your app is free, well good luck! It’s a free app and the number of downloads could be huge. Who is going to pay for the server?? Ok you can use ads but remember, a paid app will cost a specific amount of money that you can control. You know exactly how much money you will get for each app and that makes prospection easier. For ad-based apps, you know you will get paid but you don’t know how much and when. If a customer buys the app, he paid for it in that very moment. Even if he’ll never use the app again, the transaction has been made and you got paid. For ad-based ones, maybe he will start using the app next month or never. So risks increase for server dependent free-apps.

Even if your system administrator is a guru, as a developer you have to think about the possibility that your application architecture could create some constrains if time to scale comes. So the whole plan has to be discussed with your admin as well.

Just try to think about how your system will react in case of the worse and best scenario. Don’t let you go only by the enthusiasm of your idea. Keeping a cold mind, will save you from bad headaches.