How to provision cloud resources and implement automation in AWS?

Are you preparing for AWS Certified SysOps Administrator – Associate certification exam?  Are you ready to pass this exam? In this blog, we are writing a series of articles on topics which are covered in the AWS Certified SysOps Associate certification exam. You can subscribe to us for receiving further updates on this topic.

The SysOps Associate certification exam is the hardest exam at the associate certification level. We would recommend you pass both solution architect associated certification exam and developer associated certification exam first before of taking this exam.

How to deploy cloud resources and implement automation in AWS?

The AWS Certified SysOps Administrator – Associate exam validates technical expertise in deployment, management, and operations on the AWS platform.

The AWS Certified SysOps Administrator – Associate Level exam validates the candidate’s ability to:

  • Deliver the stability and scalability needed by a business on AWS
  • Provision systems, services, and deployment automation on AWS
  • Ensure data integrity and data security on AWS technology
  • Provide guidance on AWS best practices
  • Understand and monitor metrics on AWS
Domains covered at the AWS Certified SysOps associate exam
Domains covered at the AWS Certified SysOps associate exam

Figure #0.  Domains covered by the AWS Certified SysOps associate exam

You can download the related AWS Certified SysOps Administrator – Associate Level Exam Blueprint for more detail about it.

In this article, we are going to explain about the topic that addresses the “Demonstrate the ability to provision cloud resources and manage implementation automation” as highlighted in the AWS Blueprint from the above exam guide.

Context

There are many software tools and frameworks available for automating the process of application deployment, but to run those tests, proper infrastructure must be in place. This involves provisioning infrastructure resources and initializing them with a sample dataset, deploying the software to be tested, orchestrating the test runs, and collecting results.

The challenge here is not only to have enough resources to deploy the complete application with all the different servers or services it might require, but also to be able to initialize the test environment with the right software and the right data over and over. Test environments should be identical between test runs; otherwise, it is more difficult to compare results.

You can operate AWS programmatically using the AWS APIs or the command line interface (CLI) tools. Tasks that require human intervention in classic environments can be fully automated on AWS.
Automation makes SysOps Administrators teams more efficient by removing the effort of creating and initializing environments, and less error prone by limiting human intervention during the creation of those environments.

An automated test environment can be linked to the build process, following continuous integration principles. Every time a successful build is produced, a test environment can be provisioned and automated tests executed on it.

A SysOps Administrator cloud be more agile, strategic-focused and obtain a lot of benefits after automates their cloud resources provisioning and manage their implementation automation. Automation of infrastructure processes promises significant efficiency, operations, and financial advantages, you should know how to automatically provision Amazon EC2 instances, databases, and complete environments.

Provisioning EC2 Instances

Amazon Machine Image (AMI)

You can easily provision Amazon EC2 instances from AMIs. An AMI encapsulates the operating system and any other software or configuration files, pre-installed on the instance. When you launch the instance, all the applications are already loaded from the AMI and ready to run.

The challenge with AMI-based deployments is that each time you need to upgrade software, you must create a new AMI. Although the process of creating a new AMI (and deleting an old one) can be completely automated, this quickly imposes having to define a strategy for managing and maintaining multiple versions of AMIs.

Copying AMIs between Regions
Copying AMIs between Regions

Figure #1. Copying AMIs between Regions

 

You can copy an Amazon Machine Image (AMI) within or across an AWS region using the AWS Management Console, the AWS command line tools or SDKs, or the Amazon EC2 API.

Copying an AMI from one region to another enables you to launch consistent instances based from the same AMI into different regions. You can design and deploy applications across AWS regions, to increase availability and performance by distributing your application, as well as locating critical components of your application in closer proximity to your users.

An alternative approach is to include only components into the AMI that don’t change often. More volatile components, like the application under development, are fetched and deployed to the instance at run-time using a bootstrapping configuration or script.

Provisioning Databases

Amazon RDS snapshots and replicas

SysOps Administrator teams can instantiate a fully operational database easily, and load a test dataset from a snapshot provisioning an Amazon RDS instance.

Every time you need a test database for a test environment, you can easily create one as an Amazon RDS instance from that initial snapshot. Each Amazon RDS instance started from the same snapshot will contain the same dataset, which helps ensure that your tests will be consistent

When you provision a Multi-AZ DB Instance, Amazon RDS automatically creates a primary DB Instance and synchronously replicates the data to a standby instance in a different Availability Zone (AZ). Each AZ runs on its own physically distinct, independent infrastructure, and is engineered to be highly reliable.

Configuring a Multi-AZ DB Deployment
Configuring a Multi-AZ DB Deployment


Figure #2. Configuring a Multi-AZ DB Deployment

In the case of an infrastructure failure, Amazon RDS performs an automatic failover to the standby (or to a read replica in the case of Amazon Aurora), so that you can resume database operations as soon as the failover is complete. Since the endpoint for your DB Instance remains the same after a failover, your application can resume database operation without the need for manual administrative intervention.

Deploying Platforms

AWS Elastic Beanstalk

Sometimes you would like for deploying and managing applications in the AWS cloud without worrying about the infrastructure that runs those applications.

AWS Elastic Beanstalk makes it even easier for developers or Sysops to quickly deploy and manage applications in the AWS Cloud. Developers simply upload their application, and Elastic Beanstalk automatically handles the deployment details of capacity provisioning, load balancing, auto-scaling, and application health monitoring.

AWS Elastic Beanstalk supports Java, .NET, PHP, Node.js, Python, Ruby, Go, and Docker web applications.

AWS Elastic Beanstalk automates the details of capacity provisioning, load balancing, auto-scaling, and application deployment, creating an environment that runs a version of your application.

 

Basic Workflow of Elastic Beanstalk
Basic Workflow of Elastic Beanstalk

Figure #3. Basic Workflow of Elastic Beanstalk

You can also perform most deployment tasks, such as changing the size of your fleet of Amazon EC2 instances or monitoring your application, directly from the Elastic Beanstalk web interface (console).

 

Complete Environment Deployment

AWS Cloud Formation

 

You could create complex infrastructure environments containing multiple EC2 instances by using the AWS APIs, command line tools, or the AWS Management Console, but AWS CloudFormation makes it even easier to create and manage a collection of related AWS resources, provisioning and updating them in an orderly and predictable fashion.

You can use AWS CloudFormation’s sample templates or create your own templates to describe the AWS resources, and any associated dependencies or runtime parameters, required to run your application.

You can also visualize your templates as diagrams and edit them using a drag-and-drop interface with the AWS CloudFormation Designer.

You can deploy and update a template and its associated collection of resources (called a stack) by using the AWS Management Console, AWS Command Line Interface, or APIs. 

Creating a stack
Creating a stack

Figure #4. Creating a stack

 AWS CloudFormation uses a template, a JSON or YAML-format, a text-based file that describes all the AWS resources you need to deploy to run your application. CloudFormation is available at no additional charge, and you pay only for the AWS resources needed to run your applications.

 When you provision your infrastructure with AWS CloudFormation, the AWS CloudFormation template describes exactly what resources are provisioned and their settings. Because these templates are text files, you simply track differences in your templates to track changes to your infrastructure, like the way developers control revisions to the source code. For example, you can use a version control system with your templates so that you know exactly what changes were made, who made them, and when. If at any point you need to reverse changes to your infrastructure, you can use a previous version of your template.

Differences between AWS Elastic Beanstalk and CloudFormation

AWS Elastic Beanstalk provides an environment to easily deploy and run applications in the cloud. It is integrated with developer tools and provides a one-stop experience for you to manage the lifecycle of your applications. AWS CloudFormation is a convenient provisioning mechanism for a broad range of AWS resources. It supports the infrastructure needs of many diverse types of applications such as existing enterprise applications, legacy applications, applications built using a variety of AWS resources and container-based solutions (including those built using AWS Elastic Beanstalk).

AWS CloudFormation supports Elastic Beanstalk application environments as one of the AWS resource types. This allows you, for example, to create and manage an AWS Elastic Beanstalk–hosted application along with an RDS database to store the application data.

Important Points to Remember for the AWS Certified SysOps Administrator – Associate Certification exam

  • Copying an Amazon Machine Image (AMI) across AWS regions to increase availability and performance by distributing your application in closer proximity to your users
  • RDS wit Multi-AZ Deployment creates a primary DB instance that has a synchronous standby replica in a different Availability Zone
  • AWS Elastic Beanstalk automates the details of capacity provisioning, load balancing, auto-scaling, and application deployment, creating an environment that runs a version of your application.
  • There is no additional charge for Elastic Beanstalk – you pay only for the AWS resources needed to store and run your applications.
  • AWS CloudFormation is a convenient provisioning mechanism for a broad range of AWS resources
  • CloudFormation is available at no additional charge, and you pay only for the AWS resources needed to run your applications.
  • AWS CloudFormation uses a template, a JSON or YAML-format, text-based file that describes all the AWS resources you need to deploy to run your application
  • You can use a version control system with your template

Glossary

Term Brief description
Application A logical collection of components, including environments, versions, and environment configurations. An application is conceptually like a folder.
Stack It’s a collection of AWS resources related for deployment using Cloud Formation. They are created and managed as a single unit when AWS CloudFormation instantiates a template.
Environment A specific running instance of an application 
Multi-AZ Deployment A primary DB instance that has a synchronous standby replica in a different Availability Zone. The primary DB instance is synchronously replicated across Availability Zones to the standby replica. 

Summary

In this article, we have explained about deploying cloud resources and automating their deployment, discovering how to become more efficiently and obtain financial advantages, and how to automatically provision application instances, databases, and complete environments

References:

[1] AWS CloudFormation. Amazon AWS. https://aws.amazon.com/cloudformation/
[2] AWS Elastic Beanstalk. Amazon AWS.
https://aws.amazon.com/elasticbeanstalk/
[3] Development and Test on Amazon Web Services. Amazon AWS.
http://media.amazonwebservices.com/AWS_Development_Test_Environments.pdf
[4] AWS FAQs. Amazon AWS.
https://aws.amazon.com/faqs/
[5] AWS Certified SysOps Administrator – Associate Certification.
https://aws.amazon.com/certification/certified-sysops-admin-associate/
[6] AWS Glossary. Amazon AWS. http://docs.aws.amazon.com/general/latest/gr/glos-chap.html

About Pavan Gumaste

Pavan Rao is a programmer / Developer by Profession and Cloud Computing Professional by choice with in-depth knowledge in AWS, Azure, Google Cloud Platform. He helps the organisation figure out what to build, ensure successful delivery, and incorporate user learning to improve the strategy and product further.

Leave a Comment

Your email address will not be published. Required fields are marked *


Scroll to Top