SlideShare a Scribd company logo
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Leo Zhadanovsky
Principal Solutions Architect, AWS
Tom Creighton
CTO, FamilySearch
July 2, 2018
194352
A Tale of Two Pizzas: Accelerating
Software Delivery with AWS
Developer Tools
https://secure.flickr.com/photos/mgifford/4525333972
Why are we
here today?
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
What We'll Cover
What is DevOps?
AWS Code Services
AWS DevOps Portfolio
DevOps @ FamilySearch
Software moves
faster today
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Why Does DevOps Matter?
5xLower change
failure rate
440xFaster from commit
to deploy
46xMore frequent
deployments
44%More time spent on
new features and
code
Source: Puppet 2017 State of DevOps Report
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
What is DevOps?
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
What is DevOps?
• Cultural philosophies
• Practices
• Tools
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
DevOps Culture
• Dev & Ops coming together
• No more “silos”
• Shared responsibility
• Ownership
• Visibility and communication
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
DevOps Practices
• Microservices
• Moving away from “monolithic” application architecture to many
individual services
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
DevOps Practices
• Continuous Integration
• Continuous Delivery & Deployment
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
DevOps Practices
• Infrastructure as Code
• Model your AWS resources using code
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
DevOps Practices
• Monitoring and Logging
• Track and analyze metrics and logs
• Understand real-time performance of infrastructure and
application
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Reliability
Benefits of DevOps
Speed
Scale
Rapid DeliveryImproved Collaboration
Security
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
• Integration
tests with
other systems
• Load testing
• UI tests
• Penetration
testing
Source Build Test Deploy Monitor
Five Major Phases of Release and Monitor
• Check-in
source code
such as .java
files.
• Peer review
new code
• Compile code
• Unit tests
• Style checkers
• Code metrics
• Create
container
images
• Deployment to
production
environments
• Monitor code
in production
to quickly
detect unusual
activity or
errors
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Release Processes Levels
Source Build Test Production
Continuous integration
Continuous delivery
Continuous deployment
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
AWS Code Services
Source Build Test Deploy Monitor
AWS CodeBuild
+ Third Party
Software Release Steps:
AWS CodeCommit AWS CodeBuild AWS CodeDeploy
AWS CodePipeline
AWS
CodeStar
AWS X-Ray
Amazon
CloudWatch
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Amazon CloudWatch
AWS CloudTrail
Monitoring
& Logging
AWS DevOps Portfolio
AWS CodeCommit
AWS CodeDeploy
AWS CodePipeline
Software Development and
Continuous Delivery Toolchain
AWS CloudFormation
AWS OpsWorks
AWS Config
Infrastructure
as Code
AWS CodeBuild
AWS CodeStar
AWS OpsWorks for
Chef Automate
AWS X-Ray
Build & test your
application
https://secure.flickr.com/photos/spenceyc/7481166880
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Fully managed build service that compiles source code,
runs tests, and produces software packages
Scales continuously and processes multiple builds
concurrently
You can provide custom build environments suited to
your needs via Docker images
Only pay by the minute for the compute resources you
use
Launched with CodePipeline and Jenkins integration
AWS CodeBuild
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
How Does It Work?
1. Downloads source code
2. Executes commands configured in the buildspec in
temporary compute containers (created fresh on every
build)
3. Streams the build output to the service console and
CloudWatch logs
4. Uploads the generated artifact to an S3 bucket
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
How Can I Automate My Release Process with CodeBuild?
• Integrated with AWS CodePipeline for CI/CD
• Easily pluggable (API/CLI driven)
• Bring your own build environments
• Create Docker images containing tools you need
• Open source Jenkins plugin
• Use CodeBuild as the workers off of a Jenkins master
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
buildspec.yml Example
version: 0.1
environment_variables:
plaintext:
JAVA_HOME: "/usr/lib/jvm/java-8-openjdk-amd64"
phases:
install:
commands:
- apt-get update -y
- apt-get install -y maven
pre_build:
commands:
- echo Nothing to do in the pre_build phase...
build:
commands:
- echo Build started on `date`
- mvn install
post_build:
commands:
- echo Build completed on `date`
artifacts:
type: zip
files:
- target/messageUtil-1.0.jar
discard-paths: yes
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
buildspec.yml Example
version: 0.1
environment_variables:
plaintext:
JAVA_HOME: "/usr/lib/jvm/java-8-openjdk-amd64"
phases:
install:
commands:
- apt-get update -y
- apt-get install -y maven
pre_build:
commands:
- echo Nothing to do in the pre_build phase...
build:
commands:
- echo Build started on `date`
- mvn install
post_build:
commands:
- echo Build completed on `date`
artifacts:
type: zip
files:
- target/messageUtil-1.0.jar
discard-paths: yes
• Variables to be used by phases of
build
• Examples for what you can do in
the phases of a build:
• You can install packages or run
commands to prepare your
environment in ”install”.
• Run syntax checking,
commands in “pre_build”.
• Execute your build
tool/command in “build”
• Test your app further or ship a
container image to a repository
in post_build
• Create and store an artifact in S3
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Building Your Code
“Building” code typically refers to languages that
require compiled binaries:
• .NET languages: C#, F#, VB.net, etc.
• Java and JVM languages: Java, Scala, JRuby
• Go
• iOS languages: Swift, Objective-C
We also refer to the process of creating Docker
container images as “building” the image.
EC2
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
No Building Required!
Many languages don’t require building. These
are considered interpreted languages:
• PHP
• Ruby
• Python
• Node.js
You can just deploy your code!
EC2
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Testing Your Code
Testing is both a science and an art form!
Goals for testing your code:
• Want to confirm desired functionality
• Catch programming syntax errors
• Standardize code patterns and format
• Reduce bugs due to non-desired application usage and
logic failures
• Make applications more secure
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Where to Focus Your Tests:
UI
Service
Unit 70%
20%
10%
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
What service and release step corresponds with which tests?
Third Party
Tooling
AWS CodeBuild
BuildTest
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Pricing
• Pay by the minute
• Three compute types differentiated by the amount of
memory and CPU resources:
• Complimentary tier of 100 build minutes
Compute instance type Memory (GB) vCPU Price per build minute ($)
build.general1.small 3 2 0.005
build.general1.medium 7 4 0.010
build.general1.large 15 8 0.020
*As of January 20 2017
Deploying your
applications
https://secure.flickr.com/photos/simononly/15386966677
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Automates code deployments to any instance
Handles the complexity of updating your
applications
Avoid downtime during application deployment
Rollback automatically if failure detected
Deploy to Amazon EC2 or on-premises
servers, in any language and on any operating
system
Integrates with third-party tools and AWS
AWS CodeDeploy
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
appspec.yml Example
version: 0.0
os: linux
files:
- source: /
destination: /var/www/html
permissions:
- object: /var/www/html
pattern: “*.html”
owner: root
group: root
mode: 755
hooks:
ApplicationStop:
- location: scripts/deregister_from_elb.sh
BeforeInstall:
- location: scripts/install_dependencies.sh
ApplicationStart:
- location: scripts/start_httpd.sh
ValidateService:
- location: scripts/test_site.sh
- location: scripts/register_with_elb.sh
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
appspec.yml Example
version: 0.0
os: linux
files:
- source: /
destination: /var/www/html
permissions:
- object: /var/www/html
pattern: “*.html”
owner: root
group: root
mode: 755
hooks:
ApplicationStop:
- location: scripts/deregister_from_elb.sh
BeforeInstall:
- location: scripts/install_dependencies.sh
ApplicationStart:
- location: scripts/start_httpd.sh
ValidateService:
- location: scripts/test_site.sh
- location: scripts/register_with_elb.sh
• Remove/add instance to ELB
• Install dependency packages
• Start Apache
• Confirm successful deploy
• More!
• Send application files to one
directory and configuration
files to another
• Set specific permissions on
specific directories & files
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
v2 v2 v2 v2 v2 v2
one at a time
half at a time
all at once
v2 v2 v2 v1 v1 v1
v2 v1 v1 v1 v1 v1 Agent Agent
Dev Deployment group
OR
Prod Deployment group
Agent
AgentAgent
Agent Agent
Agent
Choose Deployment Speed and Group
Orchestrating build and
deploy with a pipeline
https://www.flickr.com/photos/seattlemunicipalarchives/12504672623/
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Continuous delivery service for fast and
reliable application updates
Model and visualize your software release
process
Builds, tests, and deploys your code every time
there is a code change
Integrates with third-party tools and AWS
AWS CodePipeline
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Source
Source
GitHub
Build
CodeBuild
AWS CodeBuild
Deploy
JavaApp
Elastic Beanstalk
Pipeline
Stage
Action
Transition
CodePipeline
MyApplication
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Build
CodeBuild
AWS CodeBuild
NotifyDevelopers
Lambda
Parallel actions
Source
Source
GitHub
CodePipeline
MyApplication
Deploy
JavaApp
Elastic Beanstalk
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Build
CodeBuild
AWS CodeBuild
NotifyDevelopers
Lambda
TestAPI
Runscope
Sequential actions
Deploy
JavaApp
Elastic Beanstalk
Source
Source
GitHub
CodePipeline
MyApplication
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Build
CodeBuild
AWS CodeBuild
Staging-Deploy
JavaApp
Elastic Beanstalk
Prod-Deploy
JavaApp
Elastic Beanstalk
QATeamReview
Manual Approval
Manual Approvals
Review
CodePipeline
MyApplication
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Secure, scalable, and managed Git source
control
Use standard Git tools
Scalability, availability, and durability of
Amazon S3
Encryption at rest with customer-specific keys
No repo size limit
Post commit hooks to call out to SNS/Lambda
AWS CodeCommit
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Source Control in the Cloud
Secure Fully
managed
High
availability
Store
anything
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
AWS CodeCommit
git pull/push CodeCommit
Git objects in
Amazon S3
Git index in
Amazon
DynamoDB
Encryption key
in AWS KMS
SSH or HTTPS
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Same Git Experience
$ git clone https://git-codecommit.us-east-1.amazonaws.com/v1/repos/aws-cli
Cloning into 'aws-cli'...
Receiving objects: 100% (16032/16032), 5.55 MiB | 1.25 MiB/s, done.
Resolving deltas: 100% (9900/9900), done.
Checking connectivity... done.
$ nano README.rst
$ git commit -am 'updated README'
[master 4fa0318] updated README
1 file changed, 1 insertion(+)
$ git push
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 297 bytes | 0 bytes/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote:
To https://git-codecommit.us-east-1.amazonaws.com/v1/repos/aws-cli
4dacd6d..4fa0318 master -> master
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Pricing
CodeCommit
$1 per active user per month (first 5 users at no cost)
CodePipeline
$1 per active pipeline per month (first 1 at no cost)
CodeDeploy
No cost to deploy to Amazon EC2
$0.02 per update to on-prem server
CodeBuild
Compute Instance
Type
Memory(GB) vCPU Price per build minute
($)
Small 3 2 0.005
Medium 7 4 0.010
Large 15 8 0.020
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
AWS CodeStar
• Quickly develop, build and deploy
applications on AWS
• Start developing on AWS in minutes
• Work across your team, securely
• Manage software delivery easily
• Choose from a variety of project
templates
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
AWS CodeStar
Project Templates for EC2, Lambda, and Elastic Beanstalk
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Select Source Control Provider
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
AWS CodeStar
Pre- Configured Continuous Delivery Toolchain
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
AWS CodeStar
Easily connect your favorite IDE
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
AWS CodeStar
Set up secure team access in a few clicks
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
AWS CodeStar
Unified Dashboard – Managing Delivery Pipeline and Issue Tracking
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
AWS CodeStar
Unified Dashboard – Application Activity and Commit History
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
AWS X-Ray
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Traditional Debugging
Developer Local Test
Developer
Add
Breakpoints
Add Log
Statements
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Monolithic vs. Service-Oriented Architectures
Monolitic Service-Oriented
Architecture
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
The traditional process of debugging doesn’t
scale well for production applications or those
built using a service-oriented, microservice, or
serverless architecture.
It’s tedious, repetitive, and time consuming.
Requiring Dev & Ops to spend more time
debugging
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Identify Performance
Bottlenecks
How Does AWS X-Ray help?
Pinpoint Specific
Service Issues
Identify Errors Identify Impact to
Users
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Additional Use Cases
Use Off-Cloud Custom Payload Deep Linking Custom Apps
via API
Filter
Expressions
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
X-Ray Service
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
App & X-Ray
SDK
EC2 Instance/Containers/Lambda
X-Ray
Daemon
Localhost
UDP
X-Ray API
HTTPS
HTTPS
X-Ray Console
App & X-Ray
SDK
On-prem Server
X-Ray
Daemon
Localhost
UDP
EC2 Role
AWS
Credentials
DevOps Team
HTTPS
X-Ray Workflow
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
AWS Cloud9
Bloud-based integrated development
environment (IDE)
Let’s you write, run, and debug your code with
just a browser
Share your environment with your team to
pair-program in real-time
Direct terminal access to AWS
Provides great serverless experience: enables
local testing and preconfigures the
development environment with all SDKs,
libraries, and plug-ins
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Fully Featured Editor
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Broad Selection of Run Times
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Fully Featured Debugger
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Integrated Tools for Serverless Development
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Continuous Delivery for Serverless Applications
AWS
CodeCommit
AWS
CodeBuild
Source Repository Build Deploy
or
AWS Cloud9
AWS CodeStar
AWS Lambda
Author
AWS
CodePipeline
Monitor
AWS X-Ray
And
/ or Amazon
CloudWatch
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Continuous Delivery for Containers
AWS
CodeCommit
AWS
CodeBuild
Amazon ECR
Amazon ECS
Source
Repository Build Deploy
or or
AWS
CodePipeline
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Introduction to Family Search International
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Changing to DevOps Model Required
Cultural Changes
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Organizational Dysfunction Drove Cultural Change
• Each team managed their own build and deploy.
• While we were a service-based architecture, we had a few large monoliths.
• Our primary application was a large monolith supported by 50+ developers.
• This build was always broken.
• To prepare for a release involved a three-month (at least) effort of careful
defect grooming and locking out changes.
• Most teams at least talked about using an agile development model. There
was no standardization of process. Various iteration times meant inter-team
coordination was made even more difficult.
• Each release was thrown over the wall to ops. It was then their problem to
deploy into production environments.
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Specific Cultural or Organizational Changes
• Each team built and deployed
their own way.
• Builds often broken.
• Problem
• Created a build and a deploy
pipeline managed by specialists.
These pipelines were automated so
they worked the same way.
• Updates to trunk. Pull requests to
manage code reviews. No
branches. Small commits.
• Change
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
More Specific Cultural or Organizational Changes
• Long release cycle
• No consistency in dev model
• No good insight into system
operation
• Too many human failures
• Problem
• Continuous Integration/Delivery
• Consistent agile process; common
iteration cycle
• Extensive monitoring and logging
• AUTOMATE EVERYTHING!
• Change
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Family Search Standard Roles, Activities and Artifacts
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Family Search Agile Process
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Development & Operations  DevOps
• Development • Operations • DevOps
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Tools of the Trade
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
BluePrint: A Component Description Tool
• Declarative description of a component’s:
• Build Requirements
• Test/Validation Requirements
• Deployment Requirements
• Dependent Services such as databases, queues, etc.
• Scaling parameters
• Maps to multiple environments
• On-premise VM or hardware
• Private cloud
• Public cloud
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Sample BluePrint
version: 1.0
name: fs-platform-api
build:
- name: maven-build
type: maven
run_sonar: true
run_clirr: true
validate:
- name: acceptance-tests
type: maven #Profile called: acceptance.testing
execution_directory: functional-tests
environment_variables:
environment: build-1
validation_systems:
- build-1
prod:
throttle:
type: redis
location: production-fh1-useast1-primary-1
resource_name: prod-throttle
redis_version: 2.8.24
node_type: cache.t2.small
cluster_parameters:
activeRehashing: "yes" # Custom parameter in Redis, any
combination of them can be added
web-app:
type: Beanstalk With Apache Bypassed v1_0
location: production-fh1-useast1-primary-1
path_to_artifact: platform-apiwebapp/target/platform.war
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
BluePrint Sample Continued
stack_options:
- option_name: Xmx # max JVM heap size
namespace: aws:elasticbeanstalk:container:tomcat:jvmoptions
value: 6144M
- option_name: Xms # initial JVM heap size
namespace: aws:elasticbeanstalk:container:tomcat:jvmoptions
value: 3072M
- option_name: XX:MaxPermSize # maximum JVM PermGen size
namespace: aws:elasticbeanstalk:container:tomcat:jvmoptions
value: 512M
instance_type: m5.large
autoscale_options:
min_instances: 6
max_instances: 100
health_check_grace_period: 480
health_check_type: ELB #Due to build warning triggers
PlatformApiCPUHigh:
description: fs-platform-api scale up trigger for cpu
metric_name: CPUUtilization
metric_statistic: Average
threshold_comparison_operator: gt
threshold: 75
scale_adjustment: 3
cooldown: 300
period_duration: 1
evaluation_periods: 2
PlatformApiCPULow:
description: fs-platform-api scale down trigger cpu
metric_name: CPUUtilization
metric_statistic: Average
threshold_comparison_operator: lt
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Electric Flow
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Continuous Integration Flow
• Pipelines are constructed to deliver each commit independently
• The delivery of any change is executed in parallel with other changes
• Failure to deliver one change does not affect the delivery of another
• Synchronization points support proper delivery order
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
The Commit
• A commit generally consists of a single version control change, but
may include all changes in a small time window
• Commits are never reverted automatically
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
The Component Pipeline
• Run against every commit
• Creates a release candidate
• Failures place a guard on the component
• If it fails, fix it immediately
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
The Integration Pipeline
• Executes end-to-end tests in a production-like environment
• Triggered whenever a release candidate is published by the component pipeline
• If the release candidate includes changes to more than one component, multiple
parallel integration pipelines are used
• A failure identifies the faulty component and places a guard on the component
• If it fails, fix it immediately
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
The Deployment Pipeline
• Uses the same deployment mechanism for all environments
• No interruption in service
• Supports quick rollback if a failure is detected
• If it fails, fix it immediately
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Continuous Delivery Principles
• Create a repeatable, reliable process for releasing software
• Automate everything!
• Keep everything in version control
• If something is difficult or painful, do it more often
• Build quality in!
• Done means ‘Released’
• Everyone has responsibility for the process
• Improve continuously
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Continuous Delivery Best Practices
• Developing
• One trunk, no branches
• Every commit is deployment worthy
• Trunk is always stable
• Small frequent commits (every ~30mins)
• Write testable code
• Create small single purpose components and services
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Continuous Delivery Best Practices
• Building
• Every commit is built independent of other commits
• Every commit creates a release candidate
• Build binaries only once
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Continuous Delivery Best Practices
• Testing
• Test as early as possible
• Rely on automated testing
• Every change is tested
• If it isn’t tested, it isn’t done
• Final validation is done in production
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Splunk Dashboard Showing Current Blueprint Deploys
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Monitor or You Don’t Know
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Additional Critical Tools
• Apica
• Web monitoring
• 24/7 Ops Center
• Monitored endpoints associated via XMatters with DevOps
• XMatters
• Primarily for DevOps Alerting
• Multiple access mechanisms: voice, SMS, etc.
• Point person, backup, escalation.
• Logging/Splunk reports, dashboards, and automated alerts
• AppDynamics
• JVM, internal resources
• Transactions
• Confluence – internal developer Wiki
• Slack – team collaboration – including incident management
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Security and Architecture
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
DevOps Access to Servers in Production (or Test for that matter)
• DevOps engineer first logs into our DevOps console.
• This requires VPN access.
• VPN access requires 2-factor Authentication
• Blueprint Tab shows what Operators (DevOps engineers) are authorized to
work on which blueprints (components)
• Selecting the AWS console tab allows the operator to locate the scaling
group associated with the component configured by the blueprint.
• This lets an operator get the IP address for a specific server that is to be inspected via SSH.
• The operator copies the IP address from the AWS console to the clipboard.
• Selecting the AWS SSH Access Tab gives the operator access to the device.
• We automatically generate a temporary SSH key that will give the group access the
operator is authorized to get.
• The operator can then tunnel to the server.
• We mark the server ‘tainted’ and terminate it in 24 hours.
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Blueprint Tab Manges Metadata Relating to the Blueprint
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
AWS Console Access
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
DevOps Engineer Requests an SSH Key
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Happy DevOpsing!
tc@familysearch.org
Convention over
Configuration
Automate Everything!
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Primary VPC Architecture Pattern
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Three VPC Patterns – Managed Service, Primary VPC, Auxiliary VPC
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
aws.amazon.com/devops
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
AWS DevOps Blog
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Thank you!
?
https://secure.flickr.com/photos/dullhunk/202872717/
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Appendix
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
General Best Practices used by Amazon Developers
• CI/CD is a MUST!
• Commit frequently
• Builds on every commit
• Build once in a given execution flow
• Deploy to a running environment for further testing
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
General Best Practices used by Amazon Developers
• CI/CD is a MUST!
• Commit frequently
• Builds on every commit
• Build once in a given execution flow
• Deploy to a running environment for further testing
• Everything that is code (application, infrastructure, documentation) goes into a
repository
• If its not in a repository, it doesn’t go into Production environments!
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
General Best Practices used by Amazon Developers
• CI/CD is a MUST!
• Commit frequently
• Builds on every commit
• Build once in a given execution flow
• Deploy to a running environment for further testing
• Everything that is code (application, infrastructure, documentation) goes into a
repository
• If its not in a repository, it doesn’t go into production environments!
• Start with continuous delivery (“gated” promotion) and build up to continuous
deployment once evidence of a high-level of excellence in testing is clear
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
General Best Practices used by Amazon Developers
• CI/CD is a MUST!
• Commit frequently
• Builds on every commit
• Build once in a given execution flow
• Deploy to a running environment for further testing
• Everything that is code (application, infrastructure, documentation) goes into a
repository
• If its not in a repository, it doesn’t go into production environments!
• Start with continuous delivery (“gated” promotion) and build up to continuous
deployment once evidence of a high-level of excellence in testing is clear
• Deploy to canaries, test, deploy to an AZ, test, deploy to a Region, test
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
General Best Practices used by Amazon Developers (cont.)
• Code Reviews are one of the best mechanisms for “good” code:
• Does this code look clean and can someone else understand it?
• Is the design of it meeting the expectations of its needs?
• Are there better/easier ways to do this same thing?
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
General Best Practices used by Amazon Developers (cont.)
• Code Reviews are one of the best mechanisms for “good” code:
• Does this code look clean and can someone else understand it?
• Is the design of it meeting the expectations of its needs?
• Are there better/easier ways to do this same thing?
• Style checkers
• Will someone else in the company be able to update/fix/maintain this code?
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
General Best Practices used by Amazon Developers (cont.)
• Code Reviews are one of the best mechanisms for “good” code:
• Does this code look clean and can someone else understand it?
• Is the design of it meeting the expectations of its needs?
• Are there better/easier ways to do this same thing?
• Style checkers
• Will someone else in the company be able to update/fix/maintain this code?
• Auto-rollbacks can be the quickest recovery mechanism after failure
• Rollback first, then debug what went wrong with logs/graphs/etc.
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
General Best Practices used by Amazon Developers (cont.)
• Code Reviews are one of the best mechanisms for “good” code:
• Does this code look clean and can someone else understand it?
• Is the design of it meeting the expectations of its needs?
• Are there better/easier ways to do this same thing?
• Style checkers
• Will someone else in the company be able to update/fix/maintain this code?
• Auto-rollbacks can be the quickest recovery mechanism after failure
• Rollback first, then debug what went wrong with logs/graphs/etc.
• Thorough dashboards
• What is happening now?
• What ”normal” looks like typically over some period of time?
• What do I do if this graph looks wrong/an alarm has been triggered?
• What events can I correlate with a move in a graph?
© 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Code* Tips and Tricks
• All Code* products can(and should) be provisioned and managed with
AWS CloudFormation!
• You could literally store the CloudFormation templates that provision
your Code* resources in CodeCommit and update them via
CodePipeline (It’s like Code* Inception!)
• Deep integration with IAM. You can assign permissions on who can
commit code, approve manual approvals, deploy to certain deployment
groups and more!
• Integrate with AWS Lambda to do almost anything:
• CodeCommit has Repository Triggers
• CodeDeploy has Event Notifications
• CodePipeline has native Lambda invoke
AWS CodePipeline AWS CodeCommit AWS CodeBuildAWS CodeDeploy

More Related Content

What's hot

What's hot (20)

CI/CD pipelines on AWS - Builders Day Israel
CI/CD pipelines on AWS - Builders Day IsraelCI/CD pipelines on AWS - Builders Day Israel
CI/CD pipelines on AWS - Builders Day Israel
 
CI/CD@Scale
CI/CD@ScaleCI/CD@Scale
CI/CD@Scale
 
414: Build an agile CI/CD Pipeline for application integration
414: Build an agile CI/CD Pipeline for application integration414: Build an agile CI/CD Pipeline for application integration
414: Build an agile CI/CD Pipeline for application integration
 
A Pathway to Continuous Integration/Continuous Delivery on AWS
A Pathway to Continuous Integration/Continuous Delivery on AWSA Pathway to Continuous Integration/Continuous Delivery on AWS
A Pathway to Continuous Integration/Continuous Delivery on AWS
 
Introduction to DevOps on AWS
Introduction to DevOps on AWSIntroduction to DevOps on AWS
Introduction to DevOps on AWS
 
Transformational DevOps with AWS Native Tools
Transformational DevOps with AWS Native ToolsTransformational DevOps with AWS Native Tools
Transformational DevOps with AWS Native Tools
 
Development tools
Development toolsDevelopment tools
Development tools
 
A tale of two pizzas: Developer tools at AWS
A tale of two pizzas: Developer tools at AWSA tale of two pizzas: Developer tools at AWS
A tale of two pizzas: Developer tools at AWS
 
Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...
Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...
Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...
 
From Code to a running container | AWS Summit Tel Aviv 2019
From Code to a running container | AWS Summit Tel Aviv 2019From Code to a running container | AWS Summit Tel Aviv 2019
From Code to a running container | AWS Summit Tel Aviv 2019
 
Magic of web components
Magic of web componentsMagic of web components
Magic of web components
 
CI CD using AWS Developer Tools Online Workshop
CI CD using AWS Developer Tools Online WorkshopCI CD using AWS Developer Tools Online Workshop
CI CD using AWS Developer Tools Online Workshop
 
Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...
Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...
Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...
 
CI/CD with AWS Code Services
CI/CD with AWS Code ServicesCI/CD with AWS Code Services
CI/CD with AWS Code Services
 
DevOps, Continuous Integration and Deployment on AWS
DevOps, Continuous Integration and Deployment on AWSDevOps, Continuous Integration and Deployment on AWS
DevOps, Continuous Integration and Deployment on AWS
 
DevOps on AWS
DevOps on AWSDevOps on AWS
DevOps on AWS
 
Microsoft Tech Summit Switzerland 2019 - DOCKER + AZURE DEVOPS + KUBERNETES = ♥
Microsoft Tech Summit Switzerland 2019 - DOCKER + AZURE DEVOPS + KUBERNETES = ♥Microsoft Tech Summit Switzerland 2019 - DOCKER + AZURE DEVOPS + KUBERNETES = ♥
Microsoft Tech Summit Switzerland 2019 - DOCKER + AZURE DEVOPS + KUBERNETES = ♥
 
IaC on AWS Cloud
IaC on AWS CloudIaC on AWS Cloud
IaC on AWS Cloud
 
AWS CodeCommit, CodeDeploy & CodePipeline
AWS CodeCommit, CodeDeploy & CodePipelineAWS CodeCommit, CodeDeploy & CodePipeline
AWS CodeCommit, CodeDeploy & CodePipeline
 
DevOps at Amazon: A Look at Our Tools and Processes
DevOps at Amazon: A Look at Our Tools and ProcessesDevOps at Amazon: A Look at Our Tools and Processes
DevOps at Amazon: A Look at Our Tools and Processes
 

Similar to A Tale of Two Pizzas: Accelerating Software Delivery with AWS Developer Tools

Similar to A Tale of Two Pizzas: Accelerating Software Delivery with AWS Developer Tools (20)

Improve Productivity with Continuous Integration & Delivery
Improve Productivity with Continuous Integration & DeliveryImprove Productivity with Continuous Integration & Delivery
Improve Productivity with Continuous Integration & Delivery
 
Remove Undifferentiated Heavy Lifting from Jenkins (DEV201-R1) - AWS re:Inven...
Remove Undifferentiated Heavy Lifting from Jenkins (DEV201-R1) - AWS re:Inven...Remove Undifferentiated Heavy Lifting from Jenkins (DEV201-R1) - AWS re:Inven...
Remove Undifferentiated Heavy Lifting from Jenkins (DEV201-R1) - AWS re:Inven...
 
Improve productivity with Continuous Integration & Delivery
Improve productivity with Continuous Integration & DeliveryImprove productivity with Continuous Integration & Delivery
Improve productivity with Continuous Integration & Delivery
 
SRV312 DevOps on AWS: Building Systems to Deliver Faster
SRV312 DevOps on AWS: Building Systems to Deliver FasterSRV312 DevOps on AWS: Building Systems to Deliver Faster
SRV312 DevOps on AWS: Building Systems to Deliver Faster
 
DevOps on AWS
DevOps on AWSDevOps on AWS
DevOps on AWS
 
CI CD using AWS Developer Tools @ AWS Community Day Bengaluru 2018
CI CD using AWS Developer Tools @ AWS Community Day Bengaluru 2018CI CD using AWS Developer Tools @ AWS Community Day Bengaluru 2018
CI CD using AWS Developer Tools @ AWS Community Day Bengaluru 2018
 
AWS DevOps Essentials: An Introductory Workshop on CI/CD Best Practices (DEV3...
AWS DevOps Essentials: An Introductory Workshop on CI/CD Best Practices (DEV3...AWS DevOps Essentials: An Introductory Workshop on CI/CD Best Practices (DEV3...
AWS DevOps Essentials: An Introductory Workshop on CI/CD Best Practices (DEV3...
 
CI/CD for Serverless and Containerized Applications (DEV309-R1) - AWS re:Inve...
CI/CD for Serverless and Containerized Applications (DEV309-R1) - AWS re:Inve...CI/CD for Serverless and Containerized Applications (DEV309-R1) - AWS re:Inve...
CI/CD for Serverless and Containerized Applications (DEV309-R1) - AWS re:Inve...
 
Improve Productivity with Continuous Integration & Delivery
Improve Productivity with Continuous Integration & DeliveryImprove Productivity with Continuous Integration & Delivery
Improve Productivity with Continuous Integration & Delivery
 
Improve Productivity with Continuous Integration & Delivery
Improve Productivity with Continuous Integration & DeliveryImprove Productivity with Continuous Integration & Delivery
Improve Productivity with Continuous Integration & Delivery
 
Developer Tools at AWS 2018.pdf
Developer Tools at AWS 2018.pdfDeveloper Tools at AWS 2018.pdf
Developer Tools at AWS 2018.pdf
 
DevOps on AWS: DevOps Day San Francisco
DevOps on AWS: DevOps Day San FranciscoDevOps on AWS: DevOps Day San Francisco
DevOps on AWS: DevOps Day San Francisco
 
Community day _aws_ci_cd_v0.2
Community day _aws_ci_cd_v0.2Community day _aws_ci_cd_v0.2
Community day _aws_ci_cd_v0.2
 
DevOps Spain 2019. Pedro Mendoza-AWS
DevOps Spain 2019. Pedro Mendoza-AWSDevOps Spain 2019. Pedro Mendoza-AWS
DevOps Spain 2019. Pedro Mendoza-AWS
 
CI/CD using AWS developer tools
CI/CD using AWS developer toolsCI/CD using AWS developer tools
CI/CD using AWS developer tools
 
CI CD using AWS Developer Tools @ AWS Community Day Chennai 2019
CI CD using AWS Developer Tools @ AWS Community Day Chennai 2019CI CD using AWS Developer Tools @ AWS Community Day Chennai 2019
CI CD using AWS Developer Tools @ AWS Community Day Chennai 2019
 
How to Build a CICD Pipeline with AWS CodeStar
How to Build a CICD Pipeline with AWS CodeStarHow to Build a CICD Pipeline with AWS CodeStar
How to Build a CICD Pipeline with AWS CodeStar
 
DevSecOps 的規模化實踐 (Level: 300-400)
DevSecOps 的規模化實踐 (Level: 300-400)DevSecOps 的規模化實踐 (Level: 300-400)
DevSecOps 的規模化實踐 (Level: 300-400)
 
CI/CD best practices for building modern applications - MAD310 - New York AWS...
CI/CD best practices for building modern applications - MAD310 - New York AWS...CI/CD best practices for building modern applications - MAD310 - New York AWS...
CI/CD best practices for building modern applications - MAD310 - New York AWS...
 
CI/CD Best Practices for Building Modern Applications - MAD302 - Anaheim AWS ...
CI/CD Best Practices for Building Modern Applications - MAD302 - Anaheim AWS ...CI/CD Best Practices for Building Modern Applications - MAD302 - Anaheim AWS ...
CI/CD Best Practices for Building Modern Applications - MAD302 - Anaheim AWS ...
 

More from Amazon Web Services

Tools for building your MVP on AWS
Tools for building your MVP on AWSTools for building your MVP on AWS
Tools for building your MVP on AWS
Amazon Web Services
 
How to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckHow to Build a Winning Pitch Deck
How to Build a Winning Pitch Deck
Amazon Web Services
 
Building a web application without servers
Building a web application without serversBuilding a web application without servers
Building a web application without servers
Amazon Web Services
 
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
Amazon Web Services
 

More from Amazon Web Services (20)

Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
 
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
 
Esegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateEsegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS Fargate
 
Costruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSCostruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWS
 
Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot
 
Open banking as a service
Open banking as a serviceOpen banking as a service
Open banking as a service
 
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
 
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
 
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsMicrosoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
 
Computer Vision con AWS
Computer Vision con AWSComputer Vision con AWS
Computer Vision con AWS
 
Database Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareDatabase Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatare
 
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSCrea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
 
API moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAPI moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e web
 
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareDatabase Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
 
Tools for building your MVP on AWS
Tools for building your MVP on AWSTools for building your MVP on AWS
Tools for building your MVP on AWS
 
How to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckHow to Build a Winning Pitch Deck
How to Build a Winning Pitch Deck
 
Building a web application without servers
Building a web application without serversBuilding a web application without servers
Building a web application without servers
 
Fundraising Essentials
Fundraising EssentialsFundraising Essentials
Fundraising Essentials
 
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
 
Introduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceIntroduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container Service
 

A Tale of Two Pizzas: Accelerating Software Delivery with AWS Developer Tools

  • 1. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Leo Zhadanovsky Principal Solutions Architect, AWS Tom Creighton CTO, FamilySearch July 2, 2018 194352 A Tale of Two Pizzas: Accelerating Software Delivery with AWS Developer Tools
  • 2. https://secure.flickr.com/photos/mgifford/4525333972 Why are we here today? © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
  • 3. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. What We'll Cover What is DevOps? AWS Code Services AWS DevOps Portfolio DevOps @ FamilySearch
  • 4. Software moves faster today © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
  • 5. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Why Does DevOps Matter? 5xLower change failure rate 440xFaster from commit to deploy 46xMore frequent deployments 44%More time spent on new features and code Source: Puppet 2017 State of DevOps Report
  • 6. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. What is DevOps?
  • 7. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. What is DevOps? • Cultural philosophies • Practices • Tools
  • 8. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. DevOps Culture • Dev & Ops coming together • No more “silos” • Shared responsibility • Ownership • Visibility and communication
  • 9. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. DevOps Practices • Microservices • Moving away from “monolithic” application architecture to many individual services
  • 10. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. DevOps Practices • Continuous Integration • Continuous Delivery & Deployment
  • 11. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. DevOps Practices • Infrastructure as Code • Model your AWS resources using code
  • 12. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. DevOps Practices • Monitoring and Logging • Track and analyze metrics and logs • Understand real-time performance of infrastructure and application
  • 13. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Reliability Benefits of DevOps Speed Scale Rapid DeliveryImproved Collaboration Security
  • 14. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. • Integration tests with other systems • Load testing • UI tests • Penetration testing Source Build Test Deploy Monitor Five Major Phases of Release and Monitor • Check-in source code such as .java files. • Peer review new code • Compile code • Unit tests • Style checkers • Code metrics • Create container images • Deployment to production environments • Monitor code in production to quickly detect unusual activity or errors
  • 15. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Release Processes Levels Source Build Test Production Continuous integration Continuous delivery Continuous deployment
  • 16. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. AWS Code Services Source Build Test Deploy Monitor AWS CodeBuild + Third Party Software Release Steps: AWS CodeCommit AWS CodeBuild AWS CodeDeploy AWS CodePipeline AWS CodeStar AWS X-Ray Amazon CloudWatch
  • 17. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon CloudWatch AWS CloudTrail Monitoring & Logging AWS DevOps Portfolio AWS CodeCommit AWS CodeDeploy AWS CodePipeline Software Development and Continuous Delivery Toolchain AWS CloudFormation AWS OpsWorks AWS Config Infrastructure as Code AWS CodeBuild AWS CodeStar AWS OpsWorks for Chef Automate AWS X-Ray
  • 18. Build & test your application https://secure.flickr.com/photos/spenceyc/7481166880 © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
  • 19. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Fully managed build service that compiles source code, runs tests, and produces software packages Scales continuously and processes multiple builds concurrently You can provide custom build environments suited to your needs via Docker images Only pay by the minute for the compute resources you use Launched with CodePipeline and Jenkins integration AWS CodeBuild
  • 20. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. How Does It Work? 1. Downloads source code 2. Executes commands configured in the buildspec in temporary compute containers (created fresh on every build) 3. Streams the build output to the service console and CloudWatch logs 4. Uploads the generated artifact to an S3 bucket
  • 21. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. How Can I Automate My Release Process with CodeBuild? • Integrated with AWS CodePipeline for CI/CD • Easily pluggable (API/CLI driven) • Bring your own build environments • Create Docker images containing tools you need • Open source Jenkins plugin • Use CodeBuild as the workers off of a Jenkins master
  • 22. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. buildspec.yml Example version: 0.1 environment_variables: plaintext: JAVA_HOME: "/usr/lib/jvm/java-8-openjdk-amd64" phases: install: commands: - apt-get update -y - apt-get install -y maven pre_build: commands: - echo Nothing to do in the pre_build phase... build: commands: - echo Build started on `date` - mvn install post_build: commands: - echo Build completed on `date` artifacts: type: zip files: - target/messageUtil-1.0.jar discard-paths: yes
  • 23. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. buildspec.yml Example version: 0.1 environment_variables: plaintext: JAVA_HOME: "/usr/lib/jvm/java-8-openjdk-amd64" phases: install: commands: - apt-get update -y - apt-get install -y maven pre_build: commands: - echo Nothing to do in the pre_build phase... build: commands: - echo Build started on `date` - mvn install post_build: commands: - echo Build completed on `date` artifacts: type: zip files: - target/messageUtil-1.0.jar discard-paths: yes • Variables to be used by phases of build • Examples for what you can do in the phases of a build: • You can install packages or run commands to prepare your environment in ”install”. • Run syntax checking, commands in “pre_build”. • Execute your build tool/command in “build” • Test your app further or ship a container image to a repository in post_build • Create and store an artifact in S3
  • 24. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Building Your Code “Building” code typically refers to languages that require compiled binaries: • .NET languages: C#, F#, VB.net, etc. • Java and JVM languages: Java, Scala, JRuby • Go • iOS languages: Swift, Objective-C We also refer to the process of creating Docker container images as “building” the image. EC2
  • 25. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. No Building Required! Many languages don’t require building. These are considered interpreted languages: • PHP • Ruby • Python • Node.js You can just deploy your code! EC2
  • 26. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Testing Your Code Testing is both a science and an art form! Goals for testing your code: • Want to confirm desired functionality • Catch programming syntax errors • Standardize code patterns and format • Reduce bugs due to non-desired application usage and logic failures • Make applications more secure
  • 27. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Where to Focus Your Tests: UI Service Unit 70% 20% 10%
  • 28. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. What service and release step corresponds with which tests? Third Party Tooling AWS CodeBuild BuildTest
  • 29. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Pricing • Pay by the minute • Three compute types differentiated by the amount of memory and CPU resources: • Complimentary tier of 100 build minutes Compute instance type Memory (GB) vCPU Price per build minute ($) build.general1.small 3 2 0.005 build.general1.medium 7 4 0.010 build.general1.large 15 8 0.020 *As of January 20 2017
  • 30. Deploying your applications https://secure.flickr.com/photos/simononly/15386966677 © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
  • 31. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Automates code deployments to any instance Handles the complexity of updating your applications Avoid downtime during application deployment Rollback automatically if failure detected Deploy to Amazon EC2 or on-premises servers, in any language and on any operating system Integrates with third-party tools and AWS AWS CodeDeploy
  • 32. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. appspec.yml Example version: 0.0 os: linux files: - source: / destination: /var/www/html permissions: - object: /var/www/html pattern: “*.html” owner: root group: root mode: 755 hooks: ApplicationStop: - location: scripts/deregister_from_elb.sh BeforeInstall: - location: scripts/install_dependencies.sh ApplicationStart: - location: scripts/start_httpd.sh ValidateService: - location: scripts/test_site.sh - location: scripts/register_with_elb.sh
  • 33. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. appspec.yml Example version: 0.0 os: linux files: - source: / destination: /var/www/html permissions: - object: /var/www/html pattern: “*.html” owner: root group: root mode: 755 hooks: ApplicationStop: - location: scripts/deregister_from_elb.sh BeforeInstall: - location: scripts/install_dependencies.sh ApplicationStart: - location: scripts/start_httpd.sh ValidateService: - location: scripts/test_site.sh - location: scripts/register_with_elb.sh • Remove/add instance to ELB • Install dependency packages • Start Apache • Confirm successful deploy • More! • Send application files to one directory and configuration files to another • Set specific permissions on specific directories & files
  • 34. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. v2 v2 v2 v2 v2 v2 one at a time half at a time all at once v2 v2 v2 v1 v1 v1 v2 v1 v1 v1 v1 v1 Agent Agent Dev Deployment group OR Prod Deployment group Agent AgentAgent Agent Agent Agent Choose Deployment Speed and Group
  • 35. Orchestrating build and deploy with a pipeline https://www.flickr.com/photos/seattlemunicipalarchives/12504672623/ © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
  • 36. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Continuous delivery service for fast and reliable application updates Model and visualize your software release process Builds, tests, and deploys your code every time there is a code change Integrates with third-party tools and AWS AWS CodePipeline
  • 37. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Source Source GitHub Build CodeBuild AWS CodeBuild Deploy JavaApp Elastic Beanstalk Pipeline Stage Action Transition CodePipeline MyApplication
  • 38. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Build CodeBuild AWS CodeBuild NotifyDevelopers Lambda Parallel actions Source Source GitHub CodePipeline MyApplication Deploy JavaApp Elastic Beanstalk
  • 39. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Build CodeBuild AWS CodeBuild NotifyDevelopers Lambda TestAPI Runscope Sequential actions Deploy JavaApp Elastic Beanstalk Source Source GitHub CodePipeline MyApplication
  • 40. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Build CodeBuild AWS CodeBuild Staging-Deploy JavaApp Elastic Beanstalk Prod-Deploy JavaApp Elastic Beanstalk QATeamReview Manual Approval Manual Approvals Review CodePipeline MyApplication
  • 41. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Secure, scalable, and managed Git source control Use standard Git tools Scalability, availability, and durability of Amazon S3 Encryption at rest with customer-specific keys No repo size limit Post commit hooks to call out to SNS/Lambda AWS CodeCommit
  • 42. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Source Control in the Cloud Secure Fully managed High availability Store anything
  • 43. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. AWS CodeCommit git pull/push CodeCommit Git objects in Amazon S3 Git index in Amazon DynamoDB Encryption key in AWS KMS SSH or HTTPS
  • 44. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Same Git Experience $ git clone https://git-codecommit.us-east-1.amazonaws.com/v1/repos/aws-cli Cloning into 'aws-cli'... Receiving objects: 100% (16032/16032), 5.55 MiB | 1.25 MiB/s, done. Resolving deltas: 100% (9900/9900), done. Checking connectivity... done. $ nano README.rst $ git commit -am 'updated README' [master 4fa0318] updated README 1 file changed, 1 insertion(+) $ git push Counting objects: 3, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 297 bytes | 0 bytes/s, done. Total 3 (delta 2), reused 0 (delta 0) remote: To https://git-codecommit.us-east-1.amazonaws.com/v1/repos/aws-cli 4dacd6d..4fa0318 master -> master
  • 45. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Pricing CodeCommit $1 per active user per month (first 5 users at no cost) CodePipeline $1 per active pipeline per month (first 1 at no cost) CodeDeploy No cost to deploy to Amazon EC2 $0.02 per update to on-prem server CodeBuild Compute Instance Type Memory(GB) vCPU Price per build minute ($) Small 3 2 0.005 Medium 7 4 0.010 Large 15 8 0.020
  • 46. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. AWS CodeStar • Quickly develop, build and deploy applications on AWS • Start developing on AWS in minutes • Work across your team, securely • Manage software delivery easily • Choose from a variety of project templates
  • 47. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. AWS CodeStar Project Templates for EC2, Lambda, and Elastic Beanstalk
  • 48. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Select Source Control Provider
  • 49. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. AWS CodeStar Pre- Configured Continuous Delivery Toolchain
  • 50. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. AWS CodeStar Easily connect your favorite IDE
  • 51. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. AWS CodeStar Set up secure team access in a few clicks
  • 52. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. AWS CodeStar Unified Dashboard – Managing Delivery Pipeline and Issue Tracking
  • 53. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. AWS CodeStar Unified Dashboard – Application Activity and Commit History
  • 54. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. AWS X-Ray
  • 55. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Traditional Debugging Developer Local Test Developer Add Breakpoints Add Log Statements
  • 56. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Monolithic vs. Service-Oriented Architectures Monolitic Service-Oriented Architecture
  • 57. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. The traditional process of debugging doesn’t scale well for production applications or those built using a service-oriented, microservice, or serverless architecture. It’s tedious, repetitive, and time consuming. Requiring Dev & Ops to spend more time debugging
  • 58. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Identify Performance Bottlenecks How Does AWS X-Ray help? Pinpoint Specific Service Issues Identify Errors Identify Impact to Users
  • 59. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Additional Use Cases Use Off-Cloud Custom Payload Deep Linking Custom Apps via API Filter Expressions
  • 60. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. X-Ray Service
  • 61. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. App & X-Ray SDK EC2 Instance/Containers/Lambda X-Ray Daemon Localhost UDP X-Ray API HTTPS HTTPS X-Ray Console App & X-Ray SDK On-prem Server X-Ray Daemon Localhost UDP EC2 Role AWS Credentials DevOps Team HTTPS X-Ray Workflow
  • 62. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. AWS Cloud9 Bloud-based integrated development environment (IDE) Let’s you write, run, and debug your code with just a browser Share your environment with your team to pair-program in real-time Direct terminal access to AWS Provides great serverless experience: enables local testing and preconfigures the development environment with all SDKs, libraries, and plug-ins
  • 63. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Fully Featured Editor
  • 64. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Broad Selection of Run Times
  • 65. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Fully Featured Debugger
  • 66. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Integrated Tools for Serverless Development
  • 67. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Continuous Delivery for Serverless Applications AWS CodeCommit AWS CodeBuild Source Repository Build Deploy or AWS Cloud9 AWS CodeStar AWS Lambda Author AWS CodePipeline Monitor AWS X-Ray And / or Amazon CloudWatch
  • 68. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Continuous Delivery for Containers AWS CodeCommit AWS CodeBuild Amazon ECR Amazon ECS Source Repository Build Deploy or or AWS CodePipeline
  • 69. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Introduction to Family Search International
  • 70. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Changing to DevOps Model Required Cultural Changes
  • 71. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Organizational Dysfunction Drove Cultural Change • Each team managed their own build and deploy. • While we were a service-based architecture, we had a few large monoliths. • Our primary application was a large monolith supported by 50+ developers. • This build was always broken. • To prepare for a release involved a three-month (at least) effort of careful defect grooming and locking out changes. • Most teams at least talked about using an agile development model. There was no standardization of process. Various iteration times meant inter-team coordination was made even more difficult. • Each release was thrown over the wall to ops. It was then their problem to deploy into production environments.
  • 72. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Specific Cultural or Organizational Changes • Each team built and deployed their own way. • Builds often broken. • Problem • Created a build and a deploy pipeline managed by specialists. These pipelines were automated so they worked the same way. • Updates to trunk. Pull requests to manage code reviews. No branches. Small commits. • Change
  • 73. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. More Specific Cultural or Organizational Changes • Long release cycle • No consistency in dev model • No good insight into system operation • Too many human failures • Problem • Continuous Integration/Delivery • Consistent agile process; common iteration cycle • Extensive monitoring and logging • AUTOMATE EVERYTHING! • Change
  • 74. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Family Search Standard Roles, Activities and Artifacts
  • 75. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Family Search Agile Process
  • 76. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Development & Operations  DevOps • Development • Operations • DevOps
  • 77. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Tools of the Trade
  • 78. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. BluePrint: A Component Description Tool • Declarative description of a component’s: • Build Requirements • Test/Validation Requirements • Deployment Requirements • Dependent Services such as databases, queues, etc. • Scaling parameters • Maps to multiple environments • On-premise VM or hardware • Private cloud • Public cloud
  • 79. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Sample BluePrint version: 1.0 name: fs-platform-api build: - name: maven-build type: maven run_sonar: true run_clirr: true validate: - name: acceptance-tests type: maven #Profile called: acceptance.testing execution_directory: functional-tests environment_variables: environment: build-1 validation_systems: - build-1 prod: throttle: type: redis location: production-fh1-useast1-primary-1 resource_name: prod-throttle redis_version: 2.8.24 node_type: cache.t2.small cluster_parameters: activeRehashing: "yes" # Custom parameter in Redis, any combination of them can be added web-app: type: Beanstalk With Apache Bypassed v1_0 location: production-fh1-useast1-primary-1 path_to_artifact: platform-apiwebapp/target/platform.war
  • 80. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. BluePrint Sample Continued stack_options: - option_name: Xmx # max JVM heap size namespace: aws:elasticbeanstalk:container:tomcat:jvmoptions value: 6144M - option_name: Xms # initial JVM heap size namespace: aws:elasticbeanstalk:container:tomcat:jvmoptions value: 3072M - option_name: XX:MaxPermSize # maximum JVM PermGen size namespace: aws:elasticbeanstalk:container:tomcat:jvmoptions value: 512M instance_type: m5.large autoscale_options: min_instances: 6 max_instances: 100 health_check_grace_period: 480 health_check_type: ELB #Due to build warning triggers PlatformApiCPUHigh: description: fs-platform-api scale up trigger for cpu metric_name: CPUUtilization metric_statistic: Average threshold_comparison_operator: gt threshold: 75 scale_adjustment: 3 cooldown: 300 period_duration: 1 evaluation_periods: 2 PlatformApiCPULow: description: fs-platform-api scale down trigger cpu metric_name: CPUUtilization metric_statistic: Average threshold_comparison_operator: lt
  • 81. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Electric Flow
  • 82. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Continuous Integration Flow • Pipelines are constructed to deliver each commit independently • The delivery of any change is executed in parallel with other changes • Failure to deliver one change does not affect the delivery of another • Synchronization points support proper delivery order
  • 83. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. The Commit • A commit generally consists of a single version control change, but may include all changes in a small time window • Commits are never reverted automatically
  • 84. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. The Component Pipeline • Run against every commit • Creates a release candidate • Failures place a guard on the component • If it fails, fix it immediately
  • 85. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. The Integration Pipeline • Executes end-to-end tests in a production-like environment • Triggered whenever a release candidate is published by the component pipeline • If the release candidate includes changes to more than one component, multiple parallel integration pipelines are used • A failure identifies the faulty component and places a guard on the component • If it fails, fix it immediately
  • 86. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. The Deployment Pipeline • Uses the same deployment mechanism for all environments • No interruption in service • Supports quick rollback if a failure is detected • If it fails, fix it immediately
  • 87. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Continuous Delivery Principles • Create a repeatable, reliable process for releasing software • Automate everything! • Keep everything in version control • If something is difficult or painful, do it more often • Build quality in! • Done means ‘Released’ • Everyone has responsibility for the process • Improve continuously
  • 88. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Continuous Delivery Best Practices • Developing • One trunk, no branches • Every commit is deployment worthy • Trunk is always stable • Small frequent commits (every ~30mins) • Write testable code • Create small single purpose components and services
  • 89. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Continuous Delivery Best Practices • Building • Every commit is built independent of other commits • Every commit creates a release candidate • Build binaries only once
  • 90. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Continuous Delivery Best Practices • Testing • Test as early as possible • Rely on automated testing • Every change is tested • If it isn’t tested, it isn’t done • Final validation is done in production
  • 91. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Splunk Dashboard Showing Current Blueprint Deploys
  • 92. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Monitor or You Don’t Know
  • 93. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Additional Critical Tools • Apica • Web monitoring • 24/7 Ops Center • Monitored endpoints associated via XMatters with DevOps • XMatters • Primarily for DevOps Alerting • Multiple access mechanisms: voice, SMS, etc. • Point person, backup, escalation. • Logging/Splunk reports, dashboards, and automated alerts • AppDynamics • JVM, internal resources • Transactions • Confluence – internal developer Wiki • Slack – team collaboration – including incident management
  • 94. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Security and Architecture
  • 95. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. DevOps Access to Servers in Production (or Test for that matter) • DevOps engineer first logs into our DevOps console. • This requires VPN access. • VPN access requires 2-factor Authentication • Blueprint Tab shows what Operators (DevOps engineers) are authorized to work on which blueprints (components) • Selecting the AWS console tab allows the operator to locate the scaling group associated with the component configured by the blueprint. • This lets an operator get the IP address for a specific server that is to be inspected via SSH. • The operator copies the IP address from the AWS console to the clipboard. • Selecting the AWS SSH Access Tab gives the operator access to the device. • We automatically generate a temporary SSH key that will give the group access the operator is authorized to get. • The operator can then tunnel to the server. • We mark the server ‘tainted’ and terminate it in 24 hours.
  • 96. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Blueprint Tab Manges Metadata Relating to the Blueprint
  • 97. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. AWS Console Access
  • 98. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. DevOps Engineer Requests an SSH Key
  • 99. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Happy DevOpsing! tc@familysearch.org Convention over Configuration Automate Everything!
  • 100. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Primary VPC Architecture Pattern
  • 101. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Three VPC Patterns – Managed Service, Primary VPC, Auxiliary VPC
  • 102. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. aws.amazon.com/devops
  • 103. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. AWS DevOps Blog
  • 104. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Thank you!
  • 105. ? https://secure.flickr.com/photos/dullhunk/202872717/ © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
  • 106. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Appendix
  • 107. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. General Best Practices used by Amazon Developers • CI/CD is a MUST! • Commit frequently • Builds on every commit • Build once in a given execution flow • Deploy to a running environment for further testing
  • 108. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. General Best Practices used by Amazon Developers • CI/CD is a MUST! • Commit frequently • Builds on every commit • Build once in a given execution flow • Deploy to a running environment for further testing • Everything that is code (application, infrastructure, documentation) goes into a repository • If its not in a repository, it doesn’t go into Production environments!
  • 109. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. General Best Practices used by Amazon Developers • CI/CD is a MUST! • Commit frequently • Builds on every commit • Build once in a given execution flow • Deploy to a running environment for further testing • Everything that is code (application, infrastructure, documentation) goes into a repository • If its not in a repository, it doesn’t go into production environments! • Start with continuous delivery (“gated” promotion) and build up to continuous deployment once evidence of a high-level of excellence in testing is clear
  • 110. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. General Best Practices used by Amazon Developers • CI/CD is a MUST! • Commit frequently • Builds on every commit • Build once in a given execution flow • Deploy to a running environment for further testing • Everything that is code (application, infrastructure, documentation) goes into a repository • If its not in a repository, it doesn’t go into production environments! • Start with continuous delivery (“gated” promotion) and build up to continuous deployment once evidence of a high-level of excellence in testing is clear • Deploy to canaries, test, deploy to an AZ, test, deploy to a Region, test
  • 111. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. General Best Practices used by Amazon Developers (cont.) • Code Reviews are one of the best mechanisms for “good” code: • Does this code look clean and can someone else understand it? • Is the design of it meeting the expectations of its needs? • Are there better/easier ways to do this same thing?
  • 112. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. General Best Practices used by Amazon Developers (cont.) • Code Reviews are one of the best mechanisms for “good” code: • Does this code look clean and can someone else understand it? • Is the design of it meeting the expectations of its needs? • Are there better/easier ways to do this same thing? • Style checkers • Will someone else in the company be able to update/fix/maintain this code?
  • 113. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. General Best Practices used by Amazon Developers (cont.) • Code Reviews are one of the best mechanisms for “good” code: • Does this code look clean and can someone else understand it? • Is the design of it meeting the expectations of its needs? • Are there better/easier ways to do this same thing? • Style checkers • Will someone else in the company be able to update/fix/maintain this code? • Auto-rollbacks can be the quickest recovery mechanism after failure • Rollback first, then debug what went wrong with logs/graphs/etc.
  • 114. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. General Best Practices used by Amazon Developers (cont.) • Code Reviews are one of the best mechanisms for “good” code: • Does this code look clean and can someone else understand it? • Is the design of it meeting the expectations of its needs? • Are there better/easier ways to do this same thing? • Style checkers • Will someone else in the company be able to update/fix/maintain this code? • Auto-rollbacks can be the quickest recovery mechanism after failure • Rollback first, then debug what went wrong with logs/graphs/etc. • Thorough dashboards • What is happening now? • What ”normal” looks like typically over some period of time? • What do I do if this graph looks wrong/an alarm has been triggered? • What events can I correlate with a move in a graph?
  • 115. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved. Code* Tips and Tricks • All Code* products can(and should) be provisioned and managed with AWS CloudFormation! • You could literally store the CloudFormation templates that provision your Code* resources in CodeCommit and update them via CodePipeline (It’s like Code* Inception!) • Deep integration with IAM. You can assign permissions on who can commit code, approve manual approvals, deploy to certain deployment groups and more! • Integrate with AWS Lambda to do almost anything: • CodeCommit has Repository Triggers • CodeDeploy has Event Notifications • CodePipeline has native Lambda invoke AWS CodePipeline AWS CodeCommit AWS CodeBuildAWS CodeDeploy