Last year, RGTC developed an Android mobile application that allows users to create and share electronic business cards through the use of Near-Field Communication (NFC). We decided to use a cloud-based server in storing all the resources generated by the users of this application. In particular, we used Amazon Web Services (AWS) in this project.
Amazon Web Services in a Nutshell
Amazon Web Services (AWS) is a business unit of Amazon, which offers cloud computing services and products to enterprises and individuals. It has a wide variety of services including cloud computing, networking database, application services, deployment, management, mobile and developer tools that can be used in developing applications. Major enterprises worldwide (e.g Netflix, Airbnb, Nokia, Yelp Pinterest) use AWS to power a variety of workloads.
Currently, it has 13 major server bases which are referred to as “Regions“. Each Region has multiple “Availability Zones” which are distinct data centers that provide AWS Services. The regions are strategically isolated from each other to prevent outages from spreading. Recently, AWS announced 5 new Regions and 11 additional Availability Zones coming online in 2017.
AWS in RGTC
In RGTC, we used the following AWS Services: Amazon DynamoDB, Amazon Cognito, Amazon SNS and Amazon S3. It took quite a bit of time to learn and implement these services. Connecting AWS to the software was easy but fully understanding data flow between the application and AWS was challenging. Since some of the documentations of AWS are not updated, we had to connect to developer communities to properly implement our software.
We used CognitoSync function to save the user preferences data of the application. Users just have to sign into their Google+ or Facebook accounts to automatically share saved preferences across all their linked devices.
Part of the project’s requirements is to notify users when they receive business cards from other devices. With Amazon SNS, it is easier to handle multiple notifications at a time. Just define all device ID’s of one user under one group and notifications will automatically be sent to the entire group when triggered.
Amazon Simple Storage Service (S3) is Amazon’s own cloud storage service that uses “buckets” to store resources. It automatically scales when necessary. In our application, we used S3 to store images for the business card.
We used Amazon DynamoDB to store data from the mobile application to cloud without the hassle of keeping and maintaining a relational database. However, out of the services that we have tried in AWS, Amazon DynamoDB was the one where we had the most problem with. Documentation about the service is out of date. Sample code snippets found on the site are also confusing. On top of this, it became costly when we reached free tier limit of this service.
Ups and Downs of Amazon Web Services
- Amazon Web Services has a wide variety of services and products. It offers services like cloud computing and networking database. AWS offers deployment and management tools for application development. Mobile services are also available.
- Amazon Web Services has multiple regions and availability zones. More regions mean a higher chance of deployment closer to the desired location. This eventually leads to a higher performance rating of deployed applications.
- Storage is inexpensive. Storage pricing is close to zero. One can have unlimited storage of their resources by using Amazon S3.
- Extremely fast in implementation. It is possible to deploy and integrate applications to AWS with just a few clicks.
- Transactions with the server are quite expensive. There may be additional payments when maximum limit is reached.
- Speed can be a problem. The application will be set as the least priority for transactions if the quick downloads feature is not availed.
- Amazon Web Services billing is quite confusing at first. There are times when transactions are placed under one general pricing so developers new to this platform will really be confused.
AWS is a great service provider but it is not for everyone. Cloud storage space is its biggest advantage. It is possible to upsize or downsize servers depending on the requirements of the application. Data center availability in isolated areas is not a problem because of their multiple “Availability Zones”. However, the costing is a little bit high for a small scale development.
For more information on the services offered by Amazon Web Services refer to their site here.