When designing web and mobile apps, it is important to consider your hosting preferences from the start. Historically, hosting was considered long after the application’s initial design but today, cloud hosting has evolved into an application platform that offers solutions that developers can leverage while designing and developing your application.
In this article, we will explain the history of cloud hosting and the products and services that Amazon Web Services currently offers that may benefit your web and mobile applications.
In The Beginning With Cloud Hosting
Cloud hosting started off as a way to provide a simple and efficient computer hardware and infrastructure to your organization in a pay-as-you-go model.
Before cloud computing, an IT department would have to make up-front purchases of servers and network related hardware. Because you wanted hardware that would last, and to keep your infrastructure simple, estimating your maximum future usage and sizing your hardware appropriately was important. Unfortunately, this process involved a lot of guesswork to not under or oversize your servers.
The value of cloud computing is that it offers a way to not worry about the guesswork and upfront cost of purchasing hardware. Rather, you can, in effect, rent the hardware you need, as you need it. As your business grows, you can scale your hardware easily without any large upfront costs.
Amazon Web Services Today
Cloud hosting is still at the heart of Amazon Web Services, but Amazon has extended their services to go beyond hosting, offering integrated development products that can be incorporated into your application logic and code.
In order to utilize these new capabilities, your hosting decision has to move up in the software delivery lifecycle. It is a paradigm shift from a generic computing service to an application development and delivery platform.
If you are not familiar with AWS and the products they offer, in the following section we outline the types of products and technologies offered by Amazon Web Services that we have used to help our clients build and host their web and mobile applications.
Amazon EC2 – Virtual Server
EC2 stands for Elastic Compute Cloud and is Amazon’s resizable computing in the cloud so that web applications are easier to scale and administer.
Amazon EC2 is like a virtual server environment where you can set up and configure machines remotely with a set of tools that makes setting up a new server instance and scaling your capacity up and down a simple task that can be done in minutes rather than hours and days with traditional hardware.
If you are thinking about hosting an application in the cloud with AWS, EC2 is where you would start.
Amazon Simple Storage Service (S3)
Amazon Simple Storage Service (S3) is a secure, durable and scalable storage solution in the cloud for your applications. Amazon offers a web service interface for your application to store and retrieve the data it needs anywhere on the web.
Amazon S3 has different types of storage classes. There is Amazon S3 Standard which is used for general storage needs when you need to frequently access your data in the store. Amazon also has Amazon S3 Standard – IA (Infrequent Access) when you need to store data long term, but not access it as frequently. For true archival data storage, where the data access is rare, Amazon offers Amazon Glacier.
Amazon RDS – Relational Database
Amazon RDS, which is Amazon’s relational database service, allows you to set up and use databases such as My SQL, Oracle, SQL Server or PostgreSQL in the cloud.
Although you have the option of creating a database server by using an EC2 instance, RDS is an ideal solution for enterprise applications where uptime, redundancy, failover, and mirroring are important as well as built-in management features.
Amazon Redshift – Data Warehouse Solution
Amazon Redshift is a petabyte-scale data warehouse solution that allows you to quickly ingest data at huge volumes and analyze your data with existing business intelligence tools. Amazon Redshift comes into play over RDS when you need analytics and reporting against very large data sets.
Amazon VPC – Virtual Private Cloud
Security is a big concern for many organizations who host their applications in the cloud, especial if you need to be in compliance with standards such as HIPAA, HITECH or PCI.
Amazon VPC lets you protect your data and applications in the cloud much like you would internally with a virtual private network, subnets, firewalls, and demilitarized zones. You can logically separate and control access to a section of your AWS cloud such that part of it is public-facing such as your web servers, and part of it is hidden with no internet access except by your application.
Additionally, Amazon allows you to create a hardware Virtual Private Network (VPN) between your datacenter and your Amazon VPC to connect your cloud infrastructure to your physical data center.
Amazon Mobile SDK
Amazon Mobile Software Development Kit (SDK) is a set of libraries, code samples, and documentation that allows you to access several AWS services inside your mobile application. The services include Amazon Lambda, S3, DynamoDB, Mobile Analytics, Machine Learning Elastic Load Balancing and Auto Scaling among others.
The Amazon Mobile SDK supports iOS, Android, Fire OS and Unity, as well as Xamarin.
AWS Lambda provides an exciting new way of structuring your applications where your infrastructure and coding paradigms start to intertwine.
What AWS Lambda offers is an eventing platform where you can create small pieces of code and associate it with a particular event such as data being uploaded into a database, files being uploaded to a server, information being put on a Kinesis stream (see below for Kinesis) or actions that your user takes in their app.
Although eventing has been around for a while, AWS Lambda allows you to not worry about building the hardware and services necessary to watch your application for these events and then trigger the action. AWS Lambda does the watching for you and then calls your code when the event occurs. This means you write less code and you are only charged for the compute time of your action, not the compute time of waiting for the event to happen.
AWS Lambda creates a paradigm shift in how developers write apps.
Amazon Kinesis is a platform for handling large streams of data. The challenge that most applications have when they scale is taking large streams of data, saving data to a database, then pulling data from the database to do computations and analysis before storing it back again.
This constant input/output demand is a strain on your database. Amazon Kinesis allows developers to put data on various streams, similar to message queues, where the data is guaranteed to be delivered to its destination in the same order as it was put on the stream.
The receiving end of the stream can perform processing and analysis on the data before it gets stored in the database. In addition, as load increases, you can also increase the number of processing services taking data off the stream.
Amazon Simple Notification Service
Amazon Simple Notification Service (SNS) is a way that your server app can send notifications to mobile devices. SNS allows you to send messages to individual devices or to broadcast to multiple destinations at the same time depending on your needs.
Amazon SNS also goes beyond messaging to devices. You can use the SNS service as a message bus to send alarms and notifications to Lambda functions, email addresses, SMS and other AWS services.
Amazon SNS supports a variety of platforms such as iOS, Android, Java, Python, PHP, Node.js, and .NET
Amazon Simple Email Service
Amazon Simple Email Service (SES) allows you to send emails from your application to your end users as well as receive emails and have them processed by other AWS services such as Amazon S3, Amazon SNS, and Amazon Lambda.
Like most of Amazon’s services, SES is a pay-as-you-go model where you only pay for what you use.
Amazon has reinvented cloud hosting to go beyond easy server configuration and virtual machine scaling in a pay-as-you-go model. Now with the products and services listed above, software architects and developers have a different way of building software.
Rather than creating an architecture from a variety of components or coding them yourself, you can leverage services that are well-integrated into Amazon’s ecosystem and use AWS as a software platform rather than just hosting infrastructure.
If you are interested in taking advantage of the new products and features of AWS, reach out to us and let’s have a conversation. We have been helping clients build apps with AWS since the beginning and are happy to answer your questions.
Resource: The 5 Pillars Of A Successful Software Project
We want to help every software project begin on solid ground. In The 5 Pillars Of A Successful Software Project, we share the five essential ingredients of every software project.