What can you do with AWS?

Michael WittigUpdated 30 Aug 2016

This article excerpted from Amazon Web Services in Action, shows that you can run any application on AWS by using one or a combination of different services. The four examples we present in this article will give you an idea of what you can do with AWS.

Hosting a web shop

When you are hosting a web shop on-premise, you would typically rent a server in a data center. On this server you run a web server, handling the requests from your users and a database storing your products and orders. You can run this same setup in AWS as figure 1 shows.

Figure 1: Comparison of how to run a web shop on-premise and on AWS
Figure 1: Comparison of how to run a web shop on-premise and on AWS

You might ask yourself: Why should I do that? Only because I don’t have to care about the database any longer? But look at how the setup could be improved to benefit from AWS in three steps.

  1. Your web shop consists of dynamic content like your products and their prices and static content like your logo. By splitting dynamic and static content, you can reduce the load on your web servers and improve performance by delivering the static content over a Content Delivery Network (CDN).
  2. You can use maintenance free services like a database, an object store or a DNS system on AWS. That frees you from managing these parts of your system and decrease operational costs and improves quality.
  3. Installing the application running your web shop is possible on virtual servers. You can split the capacity of your old on-premise server into multiple smaller virtual servers at no extra costs. If one of these virtual servers fails, your load balancer will send the requests from your users to the other virtual servers. Doing so will improve the reliability of your web shop.

Figure 2 compares the on-premise setup with the enhanced AWS setup.

Figure 2: Comparison of how to run a web shop on-premise and on AWS and benefit from the cloud
Figure 2: Comparison of how to run a web shop on-premise and on AWS and benefit from the cloud

Transferring any web application to AWS is possible without any constraints. You can optionally use service like an SQL database or an object store to get the most out of the cloud.

It’s possible to transfer any application to AWS, even an enterprise application.

Running a JavaEE application in your private network

Running an enterprise application is possible on AWS as well. To do so, you need to define a virtual network in the cloud and connect it to your corporate network through a VPN connection. Controlling access and protecting mission-critical data can be achieved with subnets and access control lists for the communication between them. You can control traffic to the Internet by the use of NAT and firewalls. Application servers can be installed on virtual machines to run your JEE application. If you like, you can store your data in an SQL database service (e.g., Oracle Database Enterprise Edition or Microsoft SQL Server EE). Figure 3 illustrates this scenario.

Figure 3: Running a JEE application with enterprise networking on AWS
Figure 3: Running a JEE application with enterprise networking on AWS

If you have to deal with massive amounts of data to meet legal or business archival requirements, the next use case will show you, how you can handle this with AWS.

A file server is used to share documents between users in every company. Storing data always creates to problems.

  1. You need to back up all files to prevent the loss of critical data. Usually, this means you have to copy the data from your file server to another network attached storage. That means you have to buy the hardware for your file server twice. Locating the file server close to the backup server will fail to meet disaster recovery requirements.
  2. To meet legal and business data archival requirements, you are forced to store data for a long time. Storing data for ten years or longer is tricky. You will need a tape deck and safe deposit box to do so.

Implementing this use case on AWS enables to save costs and increase data security. Transferring data to an object store increases high availability and durability. A storage gateway makes it superfluous to buy and operate network attached storage and a backup on-premise. A virtual tape deck can take over the task of archiving data for a long time. Figure 4 illustrates the implementation of this use case on AWS and compares it to an on-premise solution.

Figure 4: Backup and archive data on-premise and on AWS
Figure 4: Backup and archive data on-premise and on AWS

You can also design sophisticated fault-tolerant systems with AWS.

Implementing a fault-tolerant system architecture

Murphy’s law applies to IT infrastructure: anything that can go wrong will go wrong. On AWS there are two type of services: fault-tolerant services and services that can be used in a fault-tolerant way. Figure 5 shows a fault-tolerant architecture. AWS is offering the database service with replication and failover handling. A single virtual server, used as a web server in this example, is not fault-tolerant. But with the help of a load balancer and the possibility to launch multiple servers in different data centers, fault tolerance can be achieved.

Figure 5: Building a fault-tolerant system on AWS
Figure 5: Building a fault-tolerant system on AWS

You now have a broad idea what you can do with AWS. Generally speaking, you can host any application on AWS. You will now learn how you interact with AWS to turn the system diagrams into reality.

Michael Wittig

Michael Wittig

I’ve been building on AWS since 2012 together with my brother Andreas. We are sharing our insights into all things AWS on cloudonaut and have written the book AWS in Action. Besides that, we’re currently working on bucketAV, HyperEnv for GitHub Actions, and marbot.

Here are the contact options for feedback and questions.