Adding a Server-Side Component to Your Mobile App
No longer is a mobile device its own ecosystem. Instead, it needs to integrate with services on the cloud to make use of services there — such as location services and mapping services from Apple, weather information from the National Weather Service, and even to access services provided to users, such as financial services offered by their banks.
You also may need to provide your own services on the cloud so that you can share data across apps, as well as to provide common server-side capabilities that will be consumed in a multimodal manner — that is, for mobile applications, web-based applications, and desktop applications. These services might be used only in apps you write, or they might be services that are of value to and used by apps written by others.
To provide your own cloud services, you need an infrastructure for them to run on. You can, of course, host your own physical server. Or you could also get a virtual server on the cloud. You may also need to run a web server. Here are a few technologies you may want to consider:
Amazon Web Services (AWS)
AWS is a collection of infrastructure services with a tier of these services made available for free for one year. These services start with Amazon EC-2 (Amazon Elastic Compute Cloud), a web service that provides resizable cloud-based computation. AWS Free Tier includes 750 hours of time each month on Linux and Windows virtual machines for one year. Other web services range from databases in the cloud (Amazon Relational Database Service) to Amazon Simple Queue Service, which provides queues for storing messages between software applications.
Google's cloud services
Windows Azure is a cloud computing platform created by Microsoft that provides services for creating, running, and managing applications. Microsoft, like Amazon (above), provides these services through a global network of datacenters.
Incidentally, you don't actually need an external server in order to test whether your mobile app and your server-side components are working well together. You can set up your development machine as the server, just put Node.js on it, open your machine's firewall to accept http connections, and you are good to go!