Automating Workloads Flashcards
What is the imperative approach?
You create step-by-step operations required to carry out a task (think “scripting”).
Examples: AWS Systems Manager, CodeBuild, CodeDeploy, the Userdata scripts used with Auto Scaling
What is the declarative approach?
You write code that declares the desired result of the task, rather than how to carry it out (think “CloudFormation”).
Examples: CloudFormation, OpsWorks
What are the main IaC services?
- CloudFormation
- CodeCommit, CodeDeploy, CodePipeline
- EC2 Auto Scaling
- Systems Manager
- OpsWorks
What are CloudFormation templates?
They contain a description of the AWS resources you want CloudFormation to create, so they function as infrastructure documentation. They should be written in JSON or YAML.
What is a CloudFormation stack?
A container that organizes the resources described in your template.
What is a downside to using AWS CLI instead of CloudFormation?
You can’t take advantage of stacks if you use the CLI, so you can’t update your resources as easily. It’s up to you to understand how to change each resource and to ensure that a change you make to one resource doesn’t break another.
What is the difference between launch configurations and launch templates?
Launch templates can be used to spawn EC2 instances without Auto Scaling and you CAN modify them.
Launch configurations can only be used with Auto Scaling and you CANNOT modify them.
Also, think “Auto Scaling” when you see these terms.
What is dynamic scaling?
Auto Scaling will launch instances based on demand (metrics such as CPU utilization or number of concurrent users).
What is predictive scaling?
Auto Scaling will scale in or out according to a schedule (based on historic usage patterns – needs on day’s worth of traffic data to create a schedule).
What is Systems Manager?
Think “imperative approach.”
What is OpsWorks?
Think “declarative approach.”
What are the three different “flavors” of OpsWorks?
Robust options: Chef Automate and Puppet Enterprise (both good if you want configuration managements across all instances)
Simple option: OpsWorks Stacks (good for using configuration management just for deploying applications)
What is CloudFormation?
It can automatically deploy, change, and even delete AWS resources in one fell swoop.
What is CodeCommit?
CodeCommit is a private Git repository that offers versioning and differencing.
What is the difference between versioning and differencing?
Differencing lets you see the differences between two versions of a file, which can be useful when figuring out what change introduced a bug. Versioning, not differencing, is what allows reverting to an older version of a file.