Smartphone applications can not exist in vacuum. Expect for the most basic utility and game types of applications, mobile applications rarely work in standalone mode. They require network access to get various types of information. For example, if you are creating a location based deals application, to retrieve the deals pertaining to an area, the application will need some sort of server access. Typically such application will gather the user location information and then it will access a web service to get deals for the location.
This means that as the owner of a smartphone application you will need to bear the hosting cost of the server throughout the lifecycle of the application. This is why it is important for the owner of the mobile application to understand the various types of hosting solutions available.
Here are the main types of hosting solutions available:
1. Shared Hosting
2. VPS Hosting
3. Dedicated Server Hosting
4. Cloud Hosting (IaaS – Infrastructure as a Service)
5. Cloud Hosting (Paas – Platform as a Service)
This means that a single server machine is shared in hundreds of websites. Because of this shared hasting is generally very cheap, like below $10 per month.
These generally have preconfigured OS and server side software. No additional software can be installed on this type of server. For example, if the standard shared server provided by the hosting provider comes with MySQL 5.1 and you want to use MySQL 5.5, then you are out of luck. There are many other short comings of shared hosting in terms of reliability.
For such reasons shared hosting is suitable only for low traffic websites.
VPS is Virtual Private Server. This uses OS virtualization so that single big server can run multiple isolated Operating Systems as virtual machines. Here the user has complete control over the OS and software installed on it.
Most VPS plans are mainly based on the amount of dedicated RAM available to your virtual machine. Though VPS hosting plans start with something as low as 256MB of dedicated RAM, generally during development of your Web Application it is advised that you should use a VPS with 1GB of RAM. As your application goes into production a VPS having more RAM can be set up as per the requirement of your application and the expected traffic.
Generally an unmanaged VPS plan with 1GB RAM will cost you around $40 per month. In a VPS, either you or your smartphone application developer must have the system administration knowledge. Of course you can go for a managed VPS plan but generally these are much costlier.
Dedicated Server Hosting
This is similar to a VPS in the sense that you have complete control over the Operating System and the software installed on it. However the whole server is available to your application and no virtualization is involved. The server hardware can be provisioned as per the requirement of your application. Your monthly cost depends on the hardware provisioned. Generally unmanaged dedicated hosting plans start around $170 – $180 per month.
Cloud Hosting (Iaas : Infrastructure as a Service)
In IaaS avatar, cloud hosting can be viewed as huge pool of computing resources. You can provision the servers on the fly as required, in contrast to dedicated servers where you have to notify your provider 3-4 days in advance regarding the computing capacity required by your application.
The resources used by your application can be scaled up and scaled down on the fly (within few minutes) as required in a cloud infrastructure. So you can have set ups like, during off peak hours your application will use 2 servers and in the peak traffic hours 2 more servers will start automatically and start handling additional traffic.
In its lowest form a cloud based server is similar to a regular VPS. Once you need more computing power than a single server, cloud hosting can deliver many useful solutions.
Here again the OS and software administration is your and your smartphone application developer’s responsibility. So the automated solution I mentioned above does not happen automatically. Your system administer actually needs to write automation scripts to make it happen.
In barebones Amazon’s EC2 cloud is a IaaS service. (Though Amazon also provides PaaS on top of EC2).
Calculating cost of a IaaS cloud like EC2 is a complicated affair because you are actually charged for the computing capacity you use. So the server charge is by hour, disk space charge is per GB per month, the network bandwidth charge is per GB of outgoing traffic.
This is a blessing and a curse too. On one hand you can just turn off the unwanted servers (during development time especially) and save on cost. On the other hand you don’t know what will be the exact bill at the end of the month, though you can make an educated guess like, for a small server instance with 1.7GB of RAM you will end up somewhere around $60-$70.
Cloud Hosting (PaaS – Platform as a Service)
This idea of a highly scalable deployment on the fly sounds really good on paper, but creating a highly scalable deployment environment is no joke. You need an experienced system administrator with automation experience. Such skills come at a high price. Enter PaaS. You can compare PaaS to managed hosting, which is able to scale certain type of applications to a certain limit (there is no such thing as unlimited scalability out of the box) with minimal system administration.
PaaS services are generally built on top of a IaaS cloud offering, where the PaaS provider manages the servers with their automated platform behind the scene.
PaaS services are also limited in some regards as they also restrict in terms of server software provided. For example, some may only offer X type of database server and Y type of application server. For example, Heroku in its initial offering only supported Ruby On Rails, but now they support additional development platforms like JEE (Java Enterprise Edition).
So while choosing PaaS provider you need to ensure that all the software required by your application is supported by your PaaS provider.
Again cost calculation with PaaS is tricky because each PaaS provider has its own way of charing you based on the resources being used. For example Heroku has their own concept of Web Dynos and Web Workers where as Scalr.net charges you based on numbers of servers being managed. (Yes I know Scalr.net may not qualify for a true PaaS as you are still responsible for your EC2 instances, yet I club it here because it provides scalability and redundancy out of the box which is arguably the main motive behind PaaS hosting.) However PaaS being a form of managed hosting is costlier that raw IaaS, but in return you get a certain level of scalability and redundancy built in your deployment which can prove crucial in case your application goes viral and becomes suddenly popular. [Isn’t this is goal of developing the application from the start? 😉 ]
To give an example, a Heroku App with 2 Web Dynos and 2 Worker Dynos will cost you around $110 per month. Scalr.net will charge you $99 per month (till 5 servers) on top of your EC2 bills.
This should help you understand what are the basic types of hosting available for the web part of your mobile application. I agree that it is a bit complicated. But with this much knowledge, you should be able to evaluate the hosting solution which is recommended by your application developer.
As a parting advice, if your application supports it and you have budget for it, PaaS is the way to go, in the initial period, for smartphone applications with big dreams. If you are on a shoestring budget and just want to test the waters to see if an idea will work or not, then go for a VPS that suits your budget. However if your application becomes popular, then you will have to redeploy it with some scalability built in and this means there will be some downtime during the migration of the service.