Amazon Web Services offers a number of mobile-centric services as well as more generalized tools to develop all you need to deploy a cost-effective, highly available iOS and/or Android mobile application. When approaching AWS infrastructure from the mobile application perspective, there are a few core aspects to consider.
Choosing the right database infrastructure will have a large impact on the performance and reliability of your application. Here are a few options available
These databases are great for highly scalable, high performance application data but have limitations in what types of queries you can run, your data must be structured appropriately.
Currently, AWS offers DynamoDB as their NoSQL solution, however, with MongoDB Atlas, you can deploy MongoDB on AWS as well.
These are your classic relational databases, generally these are individually managed instances that are a little more difficult to scale to large volumes of traffic. However, AWS does offer scaling tools like read replicas and redundancy with Multi-AZ Deployments. The exception to this rule is Aurora Serverless which will automatically scale to suit your needs.
Current databases offered by RDS: Aurora Serverless, Aurora, PostgreSQL, MySQL, MariaDB, Oracle and Microsoft SQL Server.
Custom Database on EC2
You also have the option of spinning up any database you’d like and manage it yourself using EC2 Instances, but it is considerably more work and you’re likely to spend more on infrastructure costs.
Just as important as your database is the means in which you access your data and interact with your servers in general. Here are a few ways you can deploy an API for your application.
Serverless with Lambda
Perhaps the most powerful option available. Serverless lets you deploy your API as individual bits of code, backed by a complete autoscaling infrastructure with minimal administrative oversight. It’s also usually the most cost effective. The only major downside is the time limit to how long your Lambda functions may run and limited compute resources, however this can be easily managed with alternative infrastructure for special cases.
Custom Backend on EC2
With Amazon Web Services EC2 you can develop and deploy anything you want and scale using EC2 instances. On-Demand instances are typically billed by the hour or you can pay for a reserved instance that runs 24/7. Perfect for migrating legacy software or other tasks not suited for Lambda.
With Elastic Beanstalk you can pre-configure an application package, deploy it in Elastic Beanstalk and it will handle monitoring, infrastructure and auto scaling with just a few simple configuration options. Perfect for developers who want to deploy a pre-built backend like Parse Server with minimal work.
These days notifications are a large part of most mobile applications. You only have one real option on AWS the Simple Notification Service.
SNS allows you to subscribe to topics and send Emails, SMS and push notifications to all major device types. However, this can sometimes be more trouble than it’s worth for simple use cases.
Third Party Notifications
Another option is to use a service like Firebase to integrate notifications into your application while still using AWS for the rest of your infrastructure. In our experience this has a minimal impact on costs, ease of use or performance, so feel free to avoid SNS if you have a service you’re more comfortable with.
Other items you’ll want to think about
AWS offers Cognito to handle authentication for you, but other options are available outside of AWS.
AWS has S3 to handle file storage and is what I would recommend for any application built with AWS infrastructure.
When working within the AWS eco system, there are a number of tools available to make your life easier like App Sync, Amplify and the AWS SDK. Make sure you check them out before starting your next build.
Certified AWS Partner
Fyresite is a Certified Partner of Amazon Web Services offering development, migration, and maintenance on AWS infrastructure. If you need any help moving your software infrastructure to AWS, please drop us a line through our contact form or call us at 888.221.6509.