Economic arguments for cloud services migration

profileuntamedghost1
UKL1_CKIT_523_Wk8_LaureateEducation_ReferenceNotes-AdditionalAWSCloudManagementToolsandServices.pdf

Reference Notes – Additional AWS Cloud Management Tools and Services

As part of the process of managing compliant and secure cloud systems, AWS provides a number of

useful tools and services. The attributes of the prime ones are outlined in the sections that follow.

For a fuller treatment of these tools or services, you should refer to the AWS User Guides.

AWS CloudFront:

CloudFront is a global Content Delivery Network (CDN) service. It integrates with other AWS

products to give developers and businesses an easy way to distribute content to end users with low

latency, high data transfer speeds and no minimum usage commitments.

A Content Delivery Network (CDN) is a globally distributed network of caching servers that speed up

the downloading of web pages and other content. CDNs use Domain Name System (DNS) geo-

location to determine the geographic location of each request for a web page or other content, then

they serve that content from edge caching servers closest to that location instead of the original web

server. CDNs allow organisations to increase the scalability of their websites or mobile applications

easily in response to peak traffic spikes.

Figure 1: Sample CloudFront Delivery-to-Edge Location Flows

In most cases, using a CDN is completely transparent – end users simply experience better website

performance, while the load on the organisation’s original website is reduced. Amazon CloudFront is

AWS’ CDN. It can be used to deliver web content using Amazon’s global network of edge locations.

When a user requests content that is being served with Amazon CloudFront, the user is routed to

the edge location that provides the lowest latency (time delay), so content is delivered with the best

possible performance. If the content is already in the edge location with the lowest latency, Amazon

CloudFront delivers it immediately.

If the content is not currently in that edge location, Amazon CloudFront retrieves it from the origin

server, such as an Amazon Simple Storage Service (Amazon S3) bucket or a web server, which stores

the original, definitive versions of the files. Amazon CloudFront is optimised to work with other AWS

cloud services as the origin server, including Amazon S3 buckets, Amazon S3 static websites, Amazon

Elastic Compute Cloud (Amazon EC2) and Elastic Load Balancing. Amazon CloudFront works

seamlessly with any non-AWS origin server, such as an existing on-premises web server.

Figure 2: Sample CloudFront Edge Location Flows

Amazon CloudFront also integrates with Amazon Route 53. Amazon CloudFront supports all content

that can be served over HTTP or HTTPS. This includes any popular static files that are a part of web

applications, such as HTML files, images, JavaScript and CSS files, and also audio, video, media files

or software downloads. Amazon CloudFront also supports serving dynamic web pages, so it can

actually be used to deliver entire websites. Finally, Amazon CloudFront supports media streaming,

using both HTTP and RTMP.

AWS Storage Gateway:

AWS Storage Gateway is a service connecting an on-premises software appliance with cloud-based

storage to provide seamless and secure integration between an organisation’s on-premises IT

environment and AWS storage infrastructure. The service enables one to store data securely on the

AWS cloud in a scalable and cost-effective manner.

AWS Storage Gateway supports industry-standard storage protocols that work with the

organisation’s existing applications. It provides low-latency performance by caching frequently

accessed data on-premises while encrypting and storing all of the data in Amazon S3 or Amazon

Glacier.

Figure 3: AWS Storage Gateway Scheme Components

AWS Storage Gateway’s software appliance is available for download as a Virtual Machine (VM)

image that one installs on a host in the data center and then registers with the site’s AWS account

through the AWS Management Console. The storage associated with the appliance is exposed as an

iSCSI device that can be mounted by the organisation’s on-premises applications.

There are three configurations for AWS Storage Gateway: Gateway-Cached volumes, Gateway-

Stored volumes, and Gateway-Virtual Tape Libraries (VTL).

Gateway-Cached volumes allow expansion of local storage capacity into Amazon S3. All data stored

on a Gateway-Cached volume is moved to Amazon S3, while recently read data is retained in local

storage to provide low-latency access. While each volume is limited to a maximum size of 32TB, a

single gateway can support up to 32 volumes for a maximum storage of 1 PB. Point-in-time

snapshots can be taken to back up the AWS Storage Gateway.

These snapshots are performed incrementally, and only the data that has changed since the last

snapshot is stored. All Gateway-Cached volume data and snapshot data is transferred to Amazon S3

over encrypted Secure Sockets Layer (SSL) connections. It is encrypted at rest in Amazon S3 using

Server-Side Encryption (SSE). However, the data cannot be directly accessed with the Amazon S3 API

or other tools such as the Amazon S3 console; instead it must be accessed through the AWS Storage

Gateway service.

Gateway-Stored volumes allow storage of data on the organisation’s on-premises storage. The

stored data is then asynchronously backed up to Amazon S3. This provides low-latency access to all

data, while also providing off-site backups taking advantage of the durability of Amazon S3. The data

is backed up in the form of Amazon Elastic Block Store (Amazon EBS) snapshots. While each volume

is limited to a maximum size of 16TB, a single gateway can support up to 32 volumes for a maximum

storage of 512TB.

Gateway Virtual Tape Libraries (VTLs) offer a durable, cost-effective solution to archive the

organisation’s data on the AWS cloud. The VTL interface allows leveraging of existing tape-based

backup application infrastructure to store data on virtual tape cartridges that are created on the

Gateway-VTL. A virtual tape is analogous to a physical tape cartridge, except the data is stored on

the AWS cloud. Tapes are created blank through the console or programmatically and then filled

with backed up data. A gateway can contain up to 1,500 tapes (1 PB) of total tape data.

Virtual tapes appear in the organisation’s gateway’s VTL, a virtualised version of a physical tape

library. Virtual tapes are discovered by the backup application using its standard media inventory

procedure. When the tape software ejects a tape, it is archived on a Virtual Tape Shelf (VTS) and

stored in Amazon Glacier. A site is allowed 1 VTS per AWS region, but multiple gateways in the same

region can share a VTS.

AWS CloudTrail:

AWS CloudTrail provides visibility into user activity by recording API calls made on the organisation’s

account. AWS CloudTrail records important information about each API call, including the name of

the API, the identity of the caller, the time of the API call, the request parameters and the response

elements returned by the AWS service. This information helps the organisation to track changes

made to AWS resources and to troubleshoot operational issues.

AWS CloudTrail makes it easier to ensure compliance with internal policies and regulatory standards.

It captures AWS API calls and related events made by or on behalf of an AWS account and delivers

log files to an Amazon S3 bucket that is pre-specified. Optionally, one can configure AWS CloudTrail

to deliver events to a log group monitored by Amazon CloudWatch Logs.

One can also choose to receive Amazon Simple Notification Service (Amazon SNS) notifications each

time a log file is delivered to a specified bucket. One can create a trail with the AWS CloudTrail

console, the AWS Command Line Interface (CLI) or the AWS CloudTrail API. A trail is a configuration

that enables logging of the AWS API activity and related events in the organisation’s account.

AWS CloudTrail typically delivers log files within 15 minutes of an API call. In addition, the service

publishes new log files multiple times an hour, usually about every five minutes. These log files

contain API calls from all of the account’s services that support AWS CloudTrail.

AWS Kinesis:

Kinesis is a platform for handling massive streaming data on AWS, offering services to make it easier

to load and analyse streaming data and also providing the ability for one to build custom streaming

data applications for specialised needs. It has similar functionality to Apache-Hadoop Kafka and

Storm.

Figure 4: AWS Kinesis Data Streams High-Level Architecture

Amazon Kinesis is a streaming data platform consisting of three services addressing different real-

time streaming data challenges:

1. Kinesis Firehose: A service enabling the loading of massive volumes of streaming data into AWS.

Kinesis Firehose receives stream data and stores it in Amazon S3, Amazon Redshift or Amazon

Elasticsearch. One does not need to write any code – the client just creates a delivery stream

and configures the destination for the data. Clients write data to the stream using an AWS API

call, and the data is automatically sent to the proper destination.

2. Kinesis Streams: A service enabling the building of custom applications for more complex

analysis of streaming data in real time. Kinesis Streams enables one to collect and process large

streams of data records in real time. Using AWS SDKs, one can create an Amazon Kinesis Streams

application that processes the data as it moves through the stream. Because response time for

data intake and processing is in near real time, the processing is typically lightweight. Amazon

Kinesis Streams can scale to support nearly limitless data streams by distributing incoming data

across a number of shards. If any shard becomes too busy, it can be further divided into more

shards to distribute the load further. The processing is then executed on consumers, which read

data from the shards and run the Amazon Kinesis Streams application.

3. Kinesis Analytics: A service enabling analysis of streaming data real time with standard SQL.

Each of these services can scale to handle virtually limitless data streams.

AWS Elastic MapReduce (EMR):

EMS provides the organisation with a fully managed, on-demand Hadoop framework. Amazon EMR

reduces the complexity and up-front costs of setting up Hadoop and, combined with the scale of

AWS, gives the ability to spin up large Hadoop clusters instantly and start processing within minutes.

When an AWS EMR cluster is launched, several options are specified, the key ones being:

• The instance type of the nodes in the cluster

• The number of nodes in the cluster

• The version of Hadoop to be run (EMR supports several recent versions of Apache Hadoop and

also several versions of MapReduce.)

• Additional tools or applications like Hive, Pig, Spark or Kafka

Figure 5: Typical EMR Cluster Master-Slave Node Layout

AWS EMR data can be stored in HDFS (Hadoop Distributed Filesystem) or EMRFS (EMR File System).

EMRFS allows the data to be held in lower-cost Amazon S3 storage.

We will discuss more fully the attributes and operational features of the Hadoop cluster and

supporting ecosystem in the Big Data Module.

AWS CloudFormation:

AWS CloudFormation is a service that helps one model and set up AWS resources so that the

organisation can spend less time managing those resources and more time focusing on the

applications that run in AWS. AWS CloudFormation allows organisations to deploy, modify and

update resources in a controlled and predictable way, in effect applying version control to AWS

infrastructure the same way one would do with software.

AWS CloudFormation gives developers and systems administrators an easy way to create and

manage a collection of related AWS resources, provisioning and updating them in an orderly and

predictable fashion. When AWS CloudFormation is used, cloud administrators work with templates

and stacks. They create AWS CloudFormation templates to define AWS resources and their

properties. A template is a text file whose format complies with the JSON standard. AWS

CloudFormation uses these templates as blueprints for building the organisations’s AWS resources.

When AWS CloudFormation is used, cloud administrators manage related resources as a single unit

called a stack. They create, update and delete a collection of resources by creating, updating and

deleting stacks. All of the resources in a stack are defined by the stack’s AWS CloudFormation

template.

Figure 6: AWS CloudFormation Workflow

For example, one may set up a template that includes an Auto Scaling group, Elastic Load Balancing

load balancer and an Amazon RDS database instance. To create those resources, it will be necessary

to create a stack by submitting a template that defines those resources, and AWS CloudFormation

handles all of the provisioning based on this.

After all the resources have been created, AWS CloudFormation reports that the stack has been

created. One can then start using the resources in the stack. If stack creation fails, AWS

CloudFormation rolls back the changes by deleting the resources that it created. Often one will need

to launch stacks from the same template, but with minor variations, such as within a different

Amazon VPC or using AMIs from a different region.

These variations can be addressed using parameters. One can use parameters to customise aspects

of the template at runtime, when the stack is built. For example, one can pass the Amazon RDS

database size, EC2 instance types, database and web server port numbers to AWS CloudFormation

when the stack is being created. By leveraging template parameters, one can use a single template

for many infrastructure deployments with different configuration values.

AWS provides an extensive library of sample templates, which cloud administrators and developers

can use as desired (viewable at url: https://aws.amazon.com/cloudformation/aws-cloudformation-

templates/). The figure below shows CloudFormation template library items for creating a variety of

VPCs –

Amazon Virtual Private Cloud

Template Name Description View View in

Designer

A single Amazon EC2 in an Amazon VPC Creates a VPC and adds an Amazon EC2 instance

with an Elastic IP address and a security group.

View View in

Designer

Amazon VPC with static routing to an

existing VPN

Creates a private subnet with a VPN connection that

uses static routing to an existing VPN endpoint.

View View in

Designer

Autoscaling and load-balancing website

in an Amazon VPC

Creates a load balancing, auto scaling sample

website in an existing VPC.

View View in

Designer

Amazon VPC with DNS and public IP

addresses

Creates a VPC with DNS support and public IP

addresses enabled.

View View in

Designer

Publicly accessible Amazon EC2

instances that are in an Auto Scaling

group

Creates a load balancing, autoscaling group with

instances that are directly accessible from the

Internet.

View View in

Designer

Amazon EC2 with multiple dynamic IP

addresses in an Amazon VPC

Creates an Amazon EC2 instance with multiple

dynamic IP addresses in a VPC.

View View in

Designer

Amazon EC2 with multiple static IP

addresses in an Amazon VPC

Creates an Amazon EC2 instance with multiple static

IP addresses in a VPC.

View View in

Designer

Table 7: AWS CloudFormation Sample Templates

AWS Elastic Beanstalk:

AWS Elastic Beanstalk is the fastest and simplest way to get an application up and running on AWS.

Developers can simply upload their application code, and the service automatically handles all of the

details, such as resource provisioning, load balancing, Auto Scaling and monitoring.

Figure 8: AWS Elastic Beanstalk Multi-Programming Language Support

AWS comprises dozens of building block services, each of which exposes an area of functionality.

While the variety of services offers flexibility for how organisations want to manage their AWS

infrastructure, it can be challenging to figure out which services to use and how to provision them.

With AWS Elastic Beanstalk, one can quickly deploy and manage applications on the AWS cloud

without worrying about the infrastructure that runs those applications. AWS Elastic Beanstalk

reduces management complexity without restricting choice or control.

There are key components that comprise AWS Elastic Beanstalk and work together to provide the

necessary services to deploy and manage applications easily in the cloud. An AWS Elastic Beanstalk

application is the logical collection of these AWS Elastic Beanstalk components, which includes

environments, versions and environment configurations. In AWS Elastic Beanstalk, an application is

conceptually similar to a folder.

An application version refers to a specific, labeled iteration of deployable code for a web application.

An application version points to an Amazon S3 object that contains the deployable code.

Applications can have many versions, and each application version is unique. In a running

environment, organisations can deploy any application version they already uploaded to the

application, or they can upload and immediately deploy a new application version.

Organisations might upload multiple application versions to test differences between one version of

their web application and another. An environment is an application version that is deployed onto

AWS resources. Each environment runs only a single application version at a time; however, the

same version or different versions can run in as many environments at the same time as needed.

When an environment is created, AWS Elastic Beanstalk provisions the resources needed to run the

application version that is specified.

An environment configuration identifies a collection of parameters and settings that define how an

environment and its associated resources behave. When an environment’s configuration settings are

updated, AWS Elastic Beanstalk automatically applies the changes to existing resources or deletes

and deploys new resources depending on the type of change.

When an AWS Elastic Beanstalk environment is launched, the environment tier, platform and

environment type are specified. The environment tier that is chosen determines whether AWS

Elastic Beanstalk provisions resources to support a web application that handles HTTP(S) requests or

an application that handles background-processing tasks.

An environment tier whose web application processes web requests is known as a web server tier.

An environment tier whose application runs background jobs is known as a worker tier. Currently,

AWS Elastic Beanstalk provides platform support for the programming languages Java, Node.js, PHP,

Python, Ruby and Go with support for the web containers Tomcat, Passenger, Puma and Docker.

AWS Config:

AWS Config is a fully managed service that provides cloud administrators with an AWS resource

inventory, configuration history and configuration change notifications to enable security and

governance. With AWS Config, one can discover existing and deleted AWS resources, determine the

organisation’s overall compliance against rules and delve into configuration details of a resource at

any point in time.

Figure 9: AWS Config Workflow

These capabilities enable compliance auditing, security analysis, resource change tracking and

troubleshooting. AWS Config provides a detailed view of the configuration of AWS resources in the

AWS account. This includes how the resources are related and how they were configured in the past

so that one can see how the configurations and relationships change over time. AWS Config defines

a resource as an entity that works within AWS, such as an Amazon EC2 instance, an Amazon EBS

volume, a security group or an Amazon VPC.

When one turns on AWS Config, it first discovers the supported AWS resources that exist in the

account and generates a configuration item for each resource. A configuration item represents a

point-in-time view of the various attributes of a supported AWS resource that exists in one’s

account. The components of a configuration item include metadata, attributes, relationships,

current configuration and related events. AWS Config will generate configuration items when the

configuration of a resource changes, and it maintains historical records of the configuration items of

the resources from the time one starts the configuration recorder. The configuration recorder stores

the configurations of the supported resources in the account as configuration items.

By default, AWS Config creates configuration items for every supported resource in the region. If it is

not wanted to have AWS Config create configuration items for all supported resources, one can

specify the resource types to be tracked.

Organisations often need to assess the overall compliance and risk status from a configuration

perspective, view compliance trends over time and pinpoint which configuration change caused a

resource to drift out of compliance. An AWS Config Rule represents desired configuration settings

for specific AWS resources or for an entire AWS account. While AWS Config continuously tracks the

resource configuration changes, it checks whether these changes violate any of the conditions in the

organisation’s rules.

If a resource violates a rule, AWS Config flags the resource and the rule as noncompliant and notifies

the administrators through Amazon SNS. AWS Config makes it easy to track resource configuration

without the need for up-front investments and while avoiding the complexity of installing and

updating agents for data collection or maintaining large databases. Once AWS Config is enabled,

organisations can view continuously updated details of all configuration attributes associated with

AWS resources.

  • Reference Notes – Additional AWS Cloud Management Tools and Services
    • Amazon Virtual Private Cloud