AWS vs Azure vs Google Cloud Platform - Mobile Services
Choosing the right cloud platform provider can be a daunting task. Take the big three, AWS, Azure, and Google Cloud Platform; each offer a huge number of products and services, but understanding how they enable your specific needs is not easy. Since most organisations plan to migrate existing applications it is important to understand how these systems will operate in the cloud. Through our work helping customers move to the cloud we have compared all three provider's offerings in relation to three typical migration scenarios:
- Lift and shift - the cloud service can support running legacy systems with minimal change
- Consume PaaS services - the cloud offering is a managed service that can be consumed by existing solutions with minimal architectural change
- Re-architect for cloud - the cloud technology is typically used in solution architectures that have been optimised for cloud
Choosing the right strategy will depend on the nature of the applications being migrated, the business landscape and internal constraints.
In this series, we're comparing cloud services from AWS, Azure and Google Cloud Platform. A full breakdown and comparison of cloud providers and their services are available in this handy poster.
We have grouped all services into 9 categories:
- Compute
- Storage and Content Delivery
- Database
- Analytics & Big Data
- Internet of Things
- Mobile Services
- Networking
- Security & Identity
- Management & Monitoring
- Hybrid
In this post we are looking at...
Mobile Services
Enterprises are investing more than ever in mobile experiences for their workforce and customers. Cloud is key to provide the efficiency needed to develop and operate modern mobile apps.
AWS
Mobile Hub is a dedicated mobile development portal in AWS, making it easy to build mobile applications for Android and iOS that utilise backend services in AWS. Mobile Hub guides users through the process of creating new applications and selecting the mobile services they require. These services include authentication (Cognito), content delivery (CloudFront and S3), push notifications (SNS), data storage and synchronisation (S3), analytics (Mobile Analytics) and access to backend compute such as Lambda. At the end of the process Mobile Hub creates a skeleton quick start app containing the appropriate SDK and samples for utilising the selected mobile services for development in Android Studio or XCode. Alternatively, users can create applications from scratch using the AWS Mobile SDK which supports iOS, Android, Fire OS, .NET and Xamarin.
There are no charges for using Mobile Hub, only the underlying AWS services that are consumed.
Mobile Analytics is used to track and monitor mobile usage and user engagement through rich visualisations and metrics. It supports a set of built-in event types as well as custom events raised by the app. Data is reflected in usage reports within 1 hour of receiving data from an app. Pricing is straightforward with the first 100 million events per month being free and a flat charge per million events thereafter.
AWS Device Farm can be used to test applications on target devices and operating systems. Device Farm works with real devices, rather than emulators. It supports running automated tests that have been scripted or manually (via in-browser remoting). Device Farm comes with support for a good range of iOS, Android and Fire OS devices. A one-time free trial is available, after which pricing is either based on pay-as-you-go or monthly unlimited fee. Pay-as-you-go is a charged per device-minute, the length of time a device is used (including the time it takes to install and uninstall the app under test). Unlimited plans have a flat charge per device slot per month, each device slot has a usage type (either automated or remote access) and device family. A device slot can only be used by a single test at any given time, multiple device slots are required to support concurrent testing scenarios.
Azure
Mobile Apps is a mobile backend solution and client SDK that allow developers to build rich mobile solutions. Mobile Apps is part of Azure's App Service suite which means it can run within the same container as any related app services such as API Apps, Logic Apps, Web Apps and WebJobs. For serverless mobile backends you can use Functions.
Mobile Apps has a number of options when it comes to Authentication. Workplace or B2B applications can use built-in support for Azure Active Directory. For consumer facing applications App Service also provides support for third party identity providers such as Facebook, Google and Twitter. Alternatively, Active Directory B2C provides a complete cloud identity solution for consumer facing apps offering local user accounts or integrated third party social identities.
Push notifications are available via Notification Hubs and there is support for offline data sync from mobile client to Mobile App backend. Using Easy Tables it is also possible to set up and sync to a SQL Database without writing any server side code.
Mobile Apps can take advantage of App Service features such staged deployments, auto/geo scaling and built-in monitoring via Application Insights. It also supports running apps within App Service Environments where fine grained control over inbound and outbound network traffic is required and/or access to on-premise resources via Site-to-Site VPN. The Mobile Apps SDK is available for Android, iOS and Windows as well as Xamarin and Cordova.
Pricing is based on Azure App Service tiers which range from a free plan up to the Premium Service which offers high powered dedicated VMs. Push notifications are charged as per Notification Hubs pricing.
Mobile Engagement is an analytics solution for mobile app usage and user retention. It enables users to create dashboards to help track and measure KPIs, and supports in-app messaging for running targeted campaigns. SDKs are available for a range of platforms including iOS, Android, .NET, Unity and Xamarin, and also comes with a REST based API. Pricing is based on the number of active monthly users.
HockeyApp provides DevOps for Mobile application development. It allows organisations to distribute applications for internal testing and integrates with Visual Studio Team Service for automated build and deployment workflows. Hockey app also provides crash reporting and operational metrics for troubleshooting and support.
In 2016 Microsoft acquired Xamarin and in doing so was able to extend their reach of cross platform mobile development. It also inherited Xamarin Test Cloud, a cloud based service for running and testing mobile applications across a range of physical mobile devices. Xamarin Test Cloud boasts support for over 2000 iOS and Android device / OS combinations and integrates with Visual Studio Team Services. Pricing is tiered and is based on the number of concurrent devices running and the number of hours consumed. At the time of writing Test Cloud is a separate product, and cannot be added to your Azure subscription for billing or management purposes.
Google Cloud Platform
Google's mobile offering is based on Firebase (previously covered in our IoT comparison). Firebase is a dedicated platform for building mobile and IoT solutions. It comes with a set of tailored mobile backend services and client SDKs for Andriod, iOS, JavaScript and C++.
Built-in username/password authentication is available, as is support for anonymous users. Authentication via Google, Facebook and Twitter is also an option. Firebase has its own NoSQL database, which provides realtime and offline sync capabilities. Remote Config is a key value store for storing and syncing settings and content in order to minimise the need to redeploy apps. Push notifications are also supported for Android and iOS.
Analytics has been built-in to the platform and is used to monitor usage, customer engagement, campaign monitoring and user demographics. Firebase Analytics monitors over 500 standard event types and also supports custom app events. For advanced analytics over large data sets or combining mobile data with other data sources, Firebase can integrate with BigQuery.
Firebase includes TestLab for testing across a range physical devices, although at present, only Android devices are available.
Firebase comes in a free tier, a monthly plan with fixed quota for mobile services or a pay as you go model. Notifications, Analytics and Remote Config are all included at no additional charge. Combined billing is supported for Google Cloud Platform customers.
Mobile applications can also consume services directly hosted in Google Cloud Platform such as App Engine. A plugin is available for Android Studio to help build and publish backends in Google Cloud Platform.
Conclusion
While all three providers offer similar mobile services with similar capabilities they have each taken a slightly different approach. Google's Firebase provides a cohesive set of services that are simple and easy to understand. Pricing is clear and there is good support for Android and iOS, although it is a shame that there is no iOS support in TestLab.
AWS have made it trivial to create an app and to start consuming AWS backend services. It comes with a rich SDK with most features that you will need but calculating the total cost to run your solution is not going to be straightforward.
By bundling Mobile Apps under App Services, Microsoft have gone some way to help simplify pricing and management for their services. Microsoft are continuing to embrace cross device development and has good SDK support across mobile platforms. Xamarin has matured into an enterprise class development platform, its unified development experience and cross platform support will appeal to many. As Microsoft continue to leverage this acquisition they will no doubt make it even easier to consume Azure services. If you want to target Windows Unified Platform apps then Azure is most likely your best bet, however, with support for Xamarin, AWS is also an option.
Next up we will be looking at Networking.