Perhaps one of the more costly and difficult problems facing small software businesses is the need to provide and maintain computing infrastructure for their services in an era of increasing dependence on network-connected, mobile technologies. These applications require network resources such as web servers, DNS servers, email and mobile text messaging, and large quantities of long-term data storage. To make matters worse, the modern software market demands consistency and availability; why use the real estate app that takes minutes to load a listing, or the shipping service that was “unavailable” when you needed to send an overnight package? However, guaranteeing always-online, always-available service can be challenging and costly for even large businesses. What hope do small businesses have?
Thankfully, the tech industry has invented a solution: cloud-computing resources like Amazon Web Services (AWS). These services act as “a virtualized IT shop”, allowing individuals to stand up digital versions of common IT infrastructure. Let’s take a brief look at the various kinds of infrastructure a business might need to support its application, along with the AWS tools that can help them do so:
A virtualized computer, typically running a common operating system like Windows Sever or Ubuntu Linux.
The Amazon Elastic Compute Cloud (EC2) can be used to create network-connect Virtual Machines (VMs). Each VM functions like a software copy of a full computer, allowing for remote management and backups.
A device that ensures network requests are distributed evenly across all available hardware resources. This helps maintain web app responsiveness, as extra compute resources can be added to handle heavy traffic loads.
In combination with EC2 VMs, EC2 Load Balancers can be used with Elastic IPs to easily scale your network infrastructure up and down with demand.
Network-connected data storage. Apps that serve and receive large quantities of images or video, for instance, can need specialized repositories to store content over the long-term. S3 provides scalable file storage, and CloudFront can be used to provide scalable access to web content. Glacier is a more efficient option for ultra-long term and infrequently accessed data archives.
Ubiquitous network infrastructure that relates a website’s URL to the computing resource that handles requests to the site. The Route 53 tool gives you an interface to DNS “zone files” to configure your DNS server.
While similar to data storage devices on the surface, database systems serve as the real-time app-connected storage location for text-based and volatile data, such as user information records and transaction logs.
RDS, DynamoDB, ElastiCache are three such database systems that provide SQL, NoSQL, and memory-based cache services, respectively.
At first glance, approaching the wide array of tools in AWS can seem like a dizzying prospect. To cut back on the complexity, let’s look at how AWS is used in a typical Rose-Hulman Ventures project.
Imagine you’re a start-up with a new product that’s about to hit the market. You need a website that will advertise the launch, direct users to further information, and provide contact details. You’re concerned about having the site available during the launch and don’t know how much traffic you’ll get. Too much traffic and the website could go down at the most critical moment – right when you’re in the spotlight! But, you need to be money conscious and can’t afford to host your site on exorbitantly powerful hardware before and after the rush.
RHV + AWS to the rescue! RHV develops a web application to showcase your product, and hosts the site on an EC2 VM. We create automated backups of this VM so that we can quickly replace the current website with a new one in case something goes wrong. Then, we’ll create an AWS rule that will create more VMs during times of increased web traffic, and remove “extra” VMs when traffic drops. We’ll then introduce a load balancer to route website requests to these different servers depending on available resources. This way we can provide an ample number of webservers depending on the current popularity of your site to prevent long page load times and unavailability. As AWS is pay-as-you-use, you’ll only be charged for the hours of compute time used.
We’ll then use Route 53 to connect this load balancer to www.yourwebsite.com, and may serve portions of your site from S3 for more efficient delivery of static content (images, videos, etc.) depending on geographical location.
We can then pull in the various other AWS tools to maintain peak performance for your web app. Does your application require a large amount of CPU time to process images, video, or other kinds of heavy-workload requests? If so, we can spin up dedicated EC2 machines to share the work with your webserver, utilizing a fast-access storage like ElastiCache. Do you need to send email, SMS, or push notification messages to your users? Then we’ll set up application rules to automatically send these via the cloud based SES and SNS services.
As you can see, Amazon AWS is an expansive and powerful toolset with the potential to obviate costly IT hardware purchases and maintenance costs. The future of the web is in the cloud, and Rose-Hulman Ventures can use AWS to take you there.