Do you have an idea for an app but lack the programming knowledge to begin building it? In this weekly blog series, I will take you, the non-programmer, step by step through the process of creating apps for the iPhone, iPod touch, and iPad. Join me each week on this adventure and you will experience how much fun turning your ideas into reality can be! This is part 34 of the series. If you are just getting started, check out the beginning of the series here.
Whether you are for or against the new U.S. healthcare initiative, everyone agrees on one thing. The launch of the HealthCare.gov web site was an unqualified disaster. Most visitors who came to the site when it was first rolled out saw the message shown in Figure 1.
|Figure 1 - The all-too-common wait message on the Healthcare.gov site|
One of the main problems with the site is that it didn't scale well. According to reports, there were 4.7 million unique visitors to the site in the first 24 hours and the infrastructure of the site was simply not up to the task. Fortunately, it's been a few months since the rollout and it appears that many of the initial problems have been fixed.
As you begin to explore accessing web services from your iOS apps, you have to ask yourself the questions "Will my app be ready if it goes viral?" and "How can I avoid a disaster similar to the Healthcare.gov site?" Unlike the Healthcare.gov site where U.S. citizens are required to register for healthcare, if your app has a disastrous launch, it's very difficult to get users to come back after a bad experience. So you want to get it right the first time.
Outsourcing Your Web Service Hosting
Even if you have the skills to host web services on a server that you manage yourself, unless you are guaranteed to have a small, finite number of users, you probably don't have the ability to scale your web services in the event that hundreds of thousands of users begin hitting your web server from apps installed on their iOS devices. This is where third-party companies that have years of expertise in very large scale web applications can help you out.
Three of the biggest players in this arena are Google, Amazon, and Microsoft, although there are many other vendors such as Hewlett Packard, IBM, Oracle, and Rackspace.
There are a variety of reasons why you might want to have your web services hosted by one of these companies. For example:
- Automatically scaling as your user base increases
- Storing and retrieving data
- Orchestrating push notifications to your users
- Allowing interaction between users
- Authenticating users
In this series, I'm going to explore the services offered by the three key players, Google, Amazon, and Microsoft. In this post, I'll provide an overview of what each company has to offer. However, to help you make a more informed decision on which company best suits your needs, in upcoming posts I will demonstrate in detail how to set up and consume web services in an iOS app from each of these vendors.
Web Service Programming Languages
Although you have been using Objective-C to write the code in your iOS apps, you need to choose another programming language for your web services (sorry, you can't use Objective-C for this). Some of the more popular languages are:
Don't panic! In a future post I'll show you the basics of what you need to know to create your web services.
Data Storage Options
Most hosting companies offer a variety of database choices for storing your app's data. Some of the more common databases are:
- Microsoft SQL Server
- Proprietary databases such as Google's Cloud Datastore
As you will learn, some of these options require that you learn SQL (structure query language) programming, and others provide higher-level access to data by means of entities, similar to Core Data.
Google App Engine
Google is certainly a company that knows a lot about handling millions of concurrent web requests quickly and efficiently. The Google App Engine (Figure 2) is part of the Google Cloud Platform and is designed to support iOS, Android, and HTML apps. It was released as a preview in April 2008 and went live in September 2011.
Google has companies such as Snapchat, Rovio, and Khan Academy using their App Engine. Google also supports most of the popular web programming languages
Regarding costs, Google App Engine is actually free up to a certain point. It costs nothing to get started and there are no recurring fees. Apps can use up to 1GB of storage and enough CPU and bandwidth to support serving about 5 million page views per month, at no cost. Once you get past this threshold and enable billing on your account, you control the amount of resources your app can consume, which allows you to keep within the budget you specify. You can find out more on the Google App Engine pricing page.
Amazon Web Services
Amazon is another company that has vast experience in handling millions of simultaneous requests. Amazon Web Services (AWS) offers services for iOS, Android, and HTML apps, providing a separate software development kit (SDK) for each platform. AWS officially launched in 2006, and is therefore the most mature of the web service vendors.
|Figure 3 - Amazon Web Services have been around since 2006, making them the most mature.|
There are no up-front setup costs for AWS, but unlike Google App Engine, you do need to pay for even low usage. You can find out more on the Amazon Web Services pricing page.
Windows Azure Mobile Services
Although Microsoft doesn't have a widely-used high-transaction web site such as Google and Amazon, they do have a large presence in the gaming community with Xbox Live, and they have been offering software solutions in the field of high-transaction web computing for a number of years. Windows Azure offers services for iOS, Android, HTML, and (you guessed it) Windows Phone since February, 2010.
|Figure 4 - Windows Azure supports iOS, Android, HTML, and Windows Phone apps.|
Microsoft offers Windows Azure for free up to 10 mobile services with a 20MB SQL database. For more information check out the Windows Azure mobile services pricing page.
With the array of choices available, it can be difficult to decide which service is best for you and your apps. So, in my upcoming posts, I will take one vendor at a time and show you how to perform the setup and consumption of a basic web service. As you will see, some services are easier to work with than others, and it may be that you choose a particular vendor because it supports the options that are on your "must have" list. Let the comparison begin!