MIDWEST | OHIO
1
Automated Application
Delivery on AWS using
Github Actions
June 13th 2024
Justin Ranta, Cloud Platform Engineering Manager, Signet Jewelers
Bob Eisenmann, Cloud Architect, Signet Jewelers
2
1 - As of FY23 year-end
2 – Jewelry market reflects the combination of CY22 US estimated market of $65
billion, Canadian estimated market of C$5.7 billion and UK estimated market of
£6.4 billion translated at 12/30/22 Fx rates
3 - Average of FY22-FY23 actuals and FY24 based on the mid-point
of FY24 guidance provided on 8/31/23
Retail
Footprint1
Support
Centers
• Signet is the leading global diamond
retailer and 3X the size of our nearest
competitor in the US
• Signet (NYSE: SIG) operates ~2,800 stores
across a diversified banner portfolio in North
America and the United Kingdom
• Consumer insight and digital led Company
• More than $7 billion in annual revenue
expected in a jewelry market of ~$77 billion2
• Nationally recognized as Great Place to
WorkTM
We are Signet
3
Agenda
1. Application delivery automation overview
2. Application delivery automation capability maturity model
3. Application delivery process and pipelines
4. Application delivery automation tools
5. GitHub Actions and AWS application delivery workflow
6. GitHub Actions and AWS application delivery architecture
7. Recommendations
4
Application Delivery Automation Overview
Application Delivery Automation focuses on accelerating the delivery of
applications by automating the tasks required to build and deploy
applications.
The tasks to be automated include:
• Continuous integration and verification: incrementally build and
regression test every change
• Continuous delivery and deployment: make every change ‘releasable“
and continuously deploy changes to end users
• On-demand environments: manage environments through infrastructure
as code and automate infrastructure change and release
5
Application Delivery Automation Capabilities Maturity Model
6
Continuous Feature Integration
Release1 Release2 Continuous Feature Delivery
User Testing User Testing
Features 1.1 Features 1.2 Features 1.3 Features 2.1 Features 2.2 Features 3.1 Features 3.1
Dev Testing Dev Testing Dev Testing Dev Testing in Dev Testing Dev Testing Dev Testing
A Continuous
Integration Pipeline
builds and deploys code
to the development
environment each time
code in the development
branch is changed
A Continuous Delivery
Pipeline builds and
deploys code to the test
environment each time
code in the release branch
is changed
A Continuous Deployment Pipeline migrates the application
artifacts tested in staging to the production account
Production
Release1
Production
Release2
Continuous Feature Deployment
Application Delivery Automation Process and Pipelines
Release 1 Feature Set Release2 Feature Set Release 3 Feature Set
7
Application Delivery Automation Tooling
GitHub Actions(GHA)
GitHub Actions is a continuous integration and continuous delivery (CI/CD) platform that enables the automation
pipelines. GHA executes workflows that can build and test every pull request to your repository, or deploy merged
pull requests to production. A workflow is a configurable automated process that will run one or more jobs.
AWS CloudFormation
AWS CloudFormation is a service that models and builds Amazon Web Services resources. It uses templates to
describe the AWS resources that need to be built and then provisions and configures a stack composed of the
resources described in the template.
AWS Cloud DevelopmentKit(CDK)
The AWS CDK lets you develop automation that builds applications in the cloud using JavaScript, Python, Java,
and C#/.Net programming languages. CDK provides high-level development constructs that automatically provide
defaults for your AWS resources. CDK dynamically generates Cloudformation which then performs repeatable
and predictable infrastructure deployments. CDK supports the leveraging of software engineering practices such
as code reviews, unit tests, and source control to make 8
Application Delivery Automation Tooling
To automate application delivery, a GitHub Actions(GHA) workflow is configured to be triggered when an event
occurs in a repository. The workflow contains one or more jobs, each running inside its own virtual machine or
container.
• Workflows: A workflow defines a process that will run one or more jobs. A workflow is defined in a YAML file
checked in to your repository and will run when triggered manually by an event in your repository.
• Jobs: A job is a set of steps in a workflow that execute on the same runner. Each step is either a shell script that
will be executed, or an action that will be run. Steps are executed in order and are dependent on each other. Since
each step is executed on the same runner, you can share data from one step to another.
• Actions: An action is a custom application for the GitHub Actions platform that performs a complex but frequently
repeated task. Use an action to help reduce the amount of repetitive code that you write in your workflow files. You
can write your own actions, or you can find actions to use in your workflows in the GitHub Marketplace.
• Runners: A runner is a server that runs your workflows when they're triggered. Each runner can run a single job at a
time. GitHub provides Ubuntu Linux, Microsoft Windows, and macOS runners to run your workflows; each workflow
run executes in a fresh, newly-provisioned virtual machine. If you need a different operating system or require a
specific hardware configuration, you can host your own runners.
9
Typical
Application
Delivery
Automation
Workflow
10
Typical
Application
Delivery
Automation
Architecture
11
Recommendations
People
• Change agents who can help rally the enterprise to elevate and grow
their skillset with cloud concepts, tools, and technologies
• Centralized vs decentralized automation expertise
o Centralized team of automation experts who develop the
automation/pipelines that are assigned to each project
o Decentralized where you have a centralized cloud/platform engineering
team that governs and manages the automation platform but
development teams are responsible for developing their
own automation/pipelines
12
Recommendations
Process
• Governance of AWS resources
o Focuses on managing the creation and usage of resources using AWS
Config, Organizations, SCPs, etc...
• Cost optimization/right sizing
o Focuses on ensuring the right AWS resources are used for the right use
cases
• Automated AWS Account provisioning
o Focuses on quickly providing bootstrapped accounts and access
13
Recommendations
Products
• Need to select IaC tooling
o CDK/CF better at providing flexibility in deploying to multiple
environments without the need for multiple stacks
o CDKTF/TF better at providing a developer platform, owned by a
centralized team, from which developers can provision standard
resources
• Need to develop/enforce the use of enterprise standard common components
o Provides consistent config and reduces time to market
• Need to integrate code scanning, security, and testing tools into the pipelines
14

Bob Eisenmann and Justin Ranta: Automated Application Delivery on AWS using Github Actions

  • 1.
  • 2.
    Automated Application Delivery onAWS using Github Actions June 13th 2024 Justin Ranta, Cloud Platform Engineering Manager, Signet Jewelers Bob Eisenmann, Cloud Architect, Signet Jewelers 2
  • 3.
    1 - Asof FY23 year-end 2 – Jewelry market reflects the combination of CY22 US estimated market of $65 billion, Canadian estimated market of C$5.7 billion and UK estimated market of £6.4 billion translated at 12/30/22 Fx rates 3 - Average of FY22-FY23 actuals and FY24 based on the mid-point of FY24 guidance provided on 8/31/23 Retail Footprint1 Support Centers • Signet is the leading global diamond retailer and 3X the size of our nearest competitor in the US • Signet (NYSE: SIG) operates ~2,800 stores across a diversified banner portfolio in North America and the United Kingdom • Consumer insight and digital led Company • More than $7 billion in annual revenue expected in a jewelry market of ~$77 billion2 • Nationally recognized as Great Place to WorkTM We are Signet 3
  • 4.
    Agenda 1. Application deliveryautomation overview 2. Application delivery automation capability maturity model 3. Application delivery process and pipelines 4. Application delivery automation tools 5. GitHub Actions and AWS application delivery workflow 6. GitHub Actions and AWS application delivery architecture 7. Recommendations 4
  • 5.
    Application Delivery AutomationOverview Application Delivery Automation focuses on accelerating the delivery of applications by automating the tasks required to build and deploy applications. The tasks to be automated include: • Continuous integration and verification: incrementally build and regression test every change • Continuous delivery and deployment: make every change ‘releasable“ and continuously deploy changes to end users • On-demand environments: manage environments through infrastructure as code and automate infrastructure change and release 5
  • 6.
    Application Delivery AutomationCapabilities Maturity Model 6
  • 7.
    Continuous Feature Integration Release1Release2 Continuous Feature Delivery User Testing User Testing Features 1.1 Features 1.2 Features 1.3 Features 2.1 Features 2.2 Features 3.1 Features 3.1 Dev Testing Dev Testing Dev Testing Dev Testing in Dev Testing Dev Testing Dev Testing A Continuous Integration Pipeline builds and deploys code to the development environment each time code in the development branch is changed A Continuous Delivery Pipeline builds and deploys code to the test environment each time code in the release branch is changed A Continuous Deployment Pipeline migrates the application artifacts tested in staging to the production account Production Release1 Production Release2 Continuous Feature Deployment Application Delivery Automation Process and Pipelines Release 1 Feature Set Release2 Feature Set Release 3 Feature Set 7
  • 8.
    Application Delivery AutomationTooling GitHub Actions(GHA) GitHub Actions is a continuous integration and continuous delivery (CI/CD) platform that enables the automation pipelines. GHA executes workflows that can build and test every pull request to your repository, or deploy merged pull requests to production. A workflow is a configurable automated process that will run one or more jobs. AWS CloudFormation AWS CloudFormation is a service that models and builds Amazon Web Services resources. It uses templates to describe the AWS resources that need to be built and then provisions and configures a stack composed of the resources described in the template. AWS Cloud DevelopmentKit(CDK) The AWS CDK lets you develop automation that builds applications in the cloud using JavaScript, Python, Java, and C#/.Net programming languages. CDK provides high-level development constructs that automatically provide defaults for your AWS resources. CDK dynamically generates Cloudformation which then performs repeatable and predictable infrastructure deployments. CDK supports the leveraging of software engineering practices such as code reviews, unit tests, and source control to make 8
  • 9.
    Application Delivery AutomationTooling To automate application delivery, a GitHub Actions(GHA) workflow is configured to be triggered when an event occurs in a repository. The workflow contains one or more jobs, each running inside its own virtual machine or container. • Workflows: A workflow defines a process that will run one or more jobs. A workflow is defined in a YAML file checked in to your repository and will run when triggered manually by an event in your repository. • Jobs: A job is a set of steps in a workflow that execute on the same runner. Each step is either a shell script that will be executed, or an action that will be run. Steps are executed in order and are dependent on each other. Since each step is executed on the same runner, you can share data from one step to another. • Actions: An action is a custom application for the GitHub Actions platform that performs a complex but frequently repeated task. Use an action to help reduce the amount of repetitive code that you write in your workflow files. You can write your own actions, or you can find actions to use in your workflows in the GitHub Marketplace. • Runners: A runner is a server that runs your workflows when they're triggered. Each runner can run a single job at a time. GitHub provides Ubuntu Linux, Microsoft Windows, and macOS runners to run your workflows; each workflow run executes in a fresh, newly-provisioned virtual machine. If you need a different operating system or require a specific hardware configuration, you can host your own runners. 9
  • 10.
  • 11.
  • 12.
    Recommendations People • Change agentswho can help rally the enterprise to elevate and grow their skillset with cloud concepts, tools, and technologies • Centralized vs decentralized automation expertise o Centralized team of automation experts who develop the automation/pipelines that are assigned to each project o Decentralized where you have a centralized cloud/platform engineering team that governs and manages the automation platform but development teams are responsible for developing their own automation/pipelines 12
  • 13.
    Recommendations Process • Governance ofAWS resources o Focuses on managing the creation and usage of resources using AWS Config, Organizations, SCPs, etc... • Cost optimization/right sizing o Focuses on ensuring the right AWS resources are used for the right use cases • Automated AWS Account provisioning o Focuses on quickly providing bootstrapped accounts and access 13
  • 14.
    Recommendations Products • Need toselect IaC tooling o CDK/CF better at providing flexibility in deploying to multiple environments without the need for multiple stacks o CDKTF/TF better at providing a developer platform, owned by a centralized team, from which developers can provision standard resources • Need to develop/enforce the use of enterprise standard common components o Provides consistent config and reduces time to market • Need to integrate code scanning, security, and testing tools into the pipelines 14