SlideShare a Scribd company logo
S A N F R A N C I S C O | A P R I L 2 0 , 2 0 2 2
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Improving developer experience
with CDK
Casey Lee
D E V 2 0 2
Chief Technology Officer
Gaggle
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Gaggle’s Transformation Story
Blocked Items
190,616,612
105%
Messages
5,155,335,282
350%
Files
6,276,549,392
489%
PSS
20,395
61%
Human Items
38,815,291
34%
Lives Saved
1,338
50%
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Challenge:
“The tech team never gets
anything done...when they do,
it is months late!”
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved.
% Efficiency = (# Engineers) / (WIP)
WIP = (Lead Time) x (Deploy Frequency)
High WIP, Low Efficiency
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Challenge:
Inability to
work in
isolation
results in long
feedback loops
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Solution: Provision separate AWS
accounts per developer
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Challenge: Unable to use
existing CI/CD to deploy
into dev account
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Solution: Use CDK
for each
application
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Solution: Use CDK for each application
from gaggle_cdk.core import S3Website, S3JsonFile, apply_permissions_boundary
class AppStack(core.Stack):
def __init__() -> None:
s3_website = S3Website(
self,
hosted_zone=hosted_zone,
website_sources=s3deploy.Source.asset(artifact)
)
config = S3JsonFile(
bucket=s3_website.bucket,
object_key="assets/config.json",
values={
"version": os.getenv("CODEBUILD_RESOLVED_SOURCE_VERSION","-"),
"identityProviderId": user_pool_idp,
"baseApiUrl": base_url,
}
)
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Solution: Automate IAM Permission Boundary
from gaggle_cdk.core import apply_permissions_boundary
class AppStack(core.Stack):
def __init__(self) -> None:
apply_permissions_boundary(self)
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Solution: Automate Tag Policy
tags = GaggleTags(
application=application,
environment=environment,
team=team,
some_random_tag=”foo",
)
# Create a stack, add resources to it
stack = core.Stack(app, "my-stack")
# Apply the tags to the stack
tags.apply(stack)
# Additionally you can apply tags to the entire app
tags.apply(app)
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Challenge: Deploying dependencies
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Solution:
Automate
build/deploy of
dependencies
from source
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Solution: Automate build/deploy of
dependencies from source
# Define the commands needed to build build:
- npm run build
# Define the dependencies to load
dependencies:
- repo: gaggle-net/service-a.git
ref: main
# Define the applications to run locally
- basedir: infrastructure
stacks: ui-stack
context:
my-context-key: my-context-value
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Challenge: QA
is now a
bottleneck to
delivery
process
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Solution:
Separate
integration
accounts per
team
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Solution: Create
pipeline for
each service
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Solution: Create pipeline for
each service
from aws_cdk import core
from gaggle_cdk.core.pipelines import DeploymentPipeline
class ExamplePipelineStack(core.Stack):
def __init__(self,scope: core.Construct):
pipeline = DeploymentPipeline(
self,
github_repo="sample-api",
github_org="gaggle-net",
integration_account="100000000000",
staging_account="200000000000",
production_account="300000000000",
)
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Challenge: Many
accounts can be
expensive!!
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Solution:
Budget
Automation
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved.
# The 'org' sections defines settings for the entire organization
org:
owner: org-owner@gaggle.net
workspace: T0000000
channel: ZZZZZZZ
default_daily_limit: 5
# Teams are containers for accounts.
# 'owner' - email address to notify for overages
# 'channel' - slack channel to notify for overages
teams:
- name: FOO
owner: alice@gaggle.net
channel: YYYYYYYYYYY
# Accounts are matched by 'name'.
# - 'owner' an additional 'owner' can be specified to be included in overage emails.
# - 'daily_limit' can be overridden per team
account_costs:
- name: developer-alice
- name: developer-bob
owner: bob@gaggle.net
Solution: Budget Automation
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved.
from account_budget import AccountBudget
class BudgetsStack(core.Stack):
def __init__(self) -> None:
for account in accounts:
b = AccountBudget(
self,
account_id=account.id,
daily_limit=daily_limit,
emails=[team.owner,account_cost.owner]
)
# create chatbot channel
aws_chatbot.SlackChannelConfiguration(
self,
slack_channel_id=config.org.channel,
slack_workspace_id=config.org.workspace,
notification_topics=[b.topic]
)
Solution: Budget Automation
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved.
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Solution: Budget Automation
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Results...
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved.
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved.
% Efficiency = (# Engineers) / (WIP)
WIP = (Lead Time) x (Deploy Frequency)
Kickoff Transformation
Thank you!
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Casey Lee
@nektos
Survey Link 
Please complete
the session survey
© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved.

More Related Content

Similar to 2022 SF Summit - Improving Developer Experience with CDK

Speed up your Machine Learning workflows with built-in algorithms - Tel Aviv ...
Speed up your Machine Learning workflows with built-in algorithms - Tel Aviv ...Speed up your Machine Learning workflows with built-in algorithms - Tel Aviv ...
Speed up your Machine Learning workflows with built-in algorithms - Tel Aviv ...
Amazon Web Services
 
BDA210 AWS DeepLens Workshop Building Computer Vision Applications
BDA210 AWS DeepLens Workshop Building Computer Vision Applications BDA210 AWS DeepLens Workshop Building Computer Vision Applications
BDA210 AWS DeepLens Workshop Building Computer Vision Applications
Amazon Web Services
 
High Velocity DevOps: Four Ways to Leverage CloudFront in Faster DevOps Workf...
High Velocity DevOps: Four Ways to Leverage CloudFront in Faster DevOps Workf...High Velocity DevOps: Four Ways to Leverage CloudFront in Faster DevOps Workf...
High Velocity DevOps: Four Ways to Leverage CloudFront in Faster DevOps Workf...
Amazon Web Services
 
AWS, I Choose You: Pokemon's Battle against the Bots (SEC402-R1) - AWS re:Inv...
AWS, I Choose You: Pokemon's Battle against the Bots (SEC402-R1) - AWS re:Inv...AWS, I Choose You: Pokemon's Battle against the Bots (SEC402-R1) - AWS re:Inv...
AWS, I Choose You: Pokemon's Battle against the Bots (SEC402-R1) - AWS re:Inv...
Amazon Web Services
 
Advanced Container Automation, Security, and Monitoring - AWS Summit Sydney 2018
Advanced Container Automation, Security, and Monitoring - AWS Summit Sydney 2018Advanced Container Automation, Security, and Monitoring - AWS Summit Sydney 2018
Advanced Container Automation, Security, and Monitoring - AWS Summit Sydney 2018
Amazon Web Services
 
DevConfZA 2020 : Automating your cloud: What are the building blocks
DevConfZA 2020 : Automating your cloud: What are the building blocksDevConfZA 2020 : Automating your cloud: What are the building blocks
DevConfZA 2020 : Automating your cloud: What are the building blocks
Cobus Bernard
 
Azure from scratch part 4
Azure from scratch part 4Azure from scratch part 4
Azure from scratch part 4
Girish Kalamati
 
Building Deep Learning Applications with TensorFlow and SageMaker on AWS - Te...
Building Deep Learning Applications with TensorFlow and SageMaker on AWS - Te...Building Deep Learning Applications with TensorFlow and SageMaker on AWS - Te...
Building Deep Learning Applications with TensorFlow and SageMaker on AWS - Te...
Amazon Web Services
 
20201013 - Serverless Architecture Conference - How to migrate your existing ...
20201013 - Serverless Architecture Conference - How to migrate your existing ...20201013 - Serverless Architecture Conference - How to migrate your existing ...
20201013 - Serverless Architecture Conference - How to migrate your existing ...
Marcia Villalba
 
AWS DeepLens Workshop: Building Computer Vision Applications - BDA201 - Anahe...
AWS DeepLens Workshop: Building Computer Vision Applications - BDA201 - Anahe...AWS DeepLens Workshop: Building Computer Vision Applications - BDA201 - Anahe...
AWS DeepLens Workshop: Building Computer Vision Applications - BDA201 - Anahe...
Amazon Web Services
 
AWS DATABASE USER GROUP - LAUNCH EVENT (LONDON) December 7, 2022 - COM311 Mi...
AWS DATABASE USER GROUP - LAUNCH EVENT (LONDON)  December 7, 2022 - COM311 Mi...AWS DATABASE USER GROUP - LAUNCH EVENT (LONDON)  December 7, 2022 - COM311 Mi...
AWS DATABASE USER GROUP - LAUNCH EVENT (LONDON) December 7, 2022 - COM311 Mi...
Matt Houghton
 
COM311 Migrating 600 Databases To AWS
COM311 Migrating 600 Databases To AWS COM311 Migrating 600 Databases To AWS
COM311 Migrating 600 Databases To AWS
Matt Houghton
 
AWS DevDay Vienna - Automating building blocks choices you will face with con...
AWS DevDay Vienna - Automating building blocks choices you will face with con...AWS DevDay Vienna - Automating building blocks choices you will face with con...
AWS DevDay Vienna - Automating building blocks choices you will face with con...
Cobus Bernard
 
PRG 420 Week 3 Individual Assignment Netbeans Project (annual co.docx
PRG 420 Week 3 Individual Assignment Netbeans Project (annual co.docxPRG 420 Week 3 Individual Assignment Netbeans Project (annual co.docx
PRG 420 Week 3 Individual Assignment Netbeans Project (annual co.docx
harrisonhoward80223
 
AEM target Integration
AEM target IntegrationAEM target Integration
AEM target Integration
Kanika Gera
 
How to build unified Batch & Streaming Pipelines with Apache Beam and Dataflow
How to build unified Batch & Streaming Pipelines with Apache Beam and DataflowHow to build unified Batch & Streaming Pipelines with Apache Beam and Dataflow
How to build unified Batch & Streaming Pipelines with Apache Beam and Dataflow
Daniel Zivkovic
 
CIRCUIT 2015 - Responsive Websites & Grid-Based Layouts
CIRCUIT 2015 - Responsive Websites & Grid-Based LayoutsCIRCUIT 2015 - Responsive Websites & Grid-Based Layouts
CIRCUIT 2015 - Responsive Websites & Grid-Based Layouts
ICF CIRCUIT
 
AEM responsive
AEM responsiveAEM responsive
AEM responsive
Damien Antipa
 
DevOps on AWS
DevOps on AWSDevOps on AWS
DevOps on AWS
Amazon Web Services
 
AWS DeepLens Workshop: Building Computer Vision Applications
AWS DeepLens Workshop: Building Computer Vision ApplicationsAWS DeepLens Workshop: Building Computer Vision Applications
AWS DeepLens Workshop: Building Computer Vision Applications
Amazon Web Services
 

Similar to 2022 SF Summit - Improving Developer Experience with CDK (20)

Speed up your Machine Learning workflows with built-in algorithms - Tel Aviv ...
Speed up your Machine Learning workflows with built-in algorithms - Tel Aviv ...Speed up your Machine Learning workflows with built-in algorithms - Tel Aviv ...
Speed up your Machine Learning workflows with built-in algorithms - Tel Aviv ...
 
BDA210 AWS DeepLens Workshop Building Computer Vision Applications
BDA210 AWS DeepLens Workshop Building Computer Vision Applications BDA210 AWS DeepLens Workshop Building Computer Vision Applications
BDA210 AWS DeepLens Workshop Building Computer Vision Applications
 
High Velocity DevOps: Four Ways to Leverage CloudFront in Faster DevOps Workf...
High Velocity DevOps: Four Ways to Leverage CloudFront in Faster DevOps Workf...High Velocity DevOps: Four Ways to Leverage CloudFront in Faster DevOps Workf...
High Velocity DevOps: Four Ways to Leverage CloudFront in Faster DevOps Workf...
 
AWS, I Choose You: Pokemon's Battle against the Bots (SEC402-R1) - AWS re:Inv...
AWS, I Choose You: Pokemon's Battle against the Bots (SEC402-R1) - AWS re:Inv...AWS, I Choose You: Pokemon's Battle against the Bots (SEC402-R1) - AWS re:Inv...
AWS, I Choose You: Pokemon's Battle against the Bots (SEC402-R1) - AWS re:Inv...
 
Advanced Container Automation, Security, and Monitoring - AWS Summit Sydney 2018
Advanced Container Automation, Security, and Monitoring - AWS Summit Sydney 2018Advanced Container Automation, Security, and Monitoring - AWS Summit Sydney 2018
Advanced Container Automation, Security, and Monitoring - AWS Summit Sydney 2018
 
DevConfZA 2020 : Automating your cloud: What are the building blocks
DevConfZA 2020 : Automating your cloud: What are the building blocksDevConfZA 2020 : Automating your cloud: What are the building blocks
DevConfZA 2020 : Automating your cloud: What are the building blocks
 
Azure from scratch part 4
Azure from scratch part 4Azure from scratch part 4
Azure from scratch part 4
 
Building Deep Learning Applications with TensorFlow and SageMaker on AWS - Te...
Building Deep Learning Applications with TensorFlow and SageMaker on AWS - Te...Building Deep Learning Applications with TensorFlow and SageMaker on AWS - Te...
Building Deep Learning Applications with TensorFlow and SageMaker on AWS - Te...
 
20201013 - Serverless Architecture Conference - How to migrate your existing ...
20201013 - Serverless Architecture Conference - How to migrate your existing ...20201013 - Serverless Architecture Conference - How to migrate your existing ...
20201013 - Serverless Architecture Conference - How to migrate your existing ...
 
AWS DeepLens Workshop: Building Computer Vision Applications - BDA201 - Anahe...
AWS DeepLens Workshop: Building Computer Vision Applications - BDA201 - Anahe...AWS DeepLens Workshop: Building Computer Vision Applications - BDA201 - Anahe...
AWS DeepLens Workshop: Building Computer Vision Applications - BDA201 - Anahe...
 
AWS DATABASE USER GROUP - LAUNCH EVENT (LONDON) December 7, 2022 - COM311 Mi...
AWS DATABASE USER GROUP - LAUNCH EVENT (LONDON)  December 7, 2022 - COM311 Mi...AWS DATABASE USER GROUP - LAUNCH EVENT (LONDON)  December 7, 2022 - COM311 Mi...
AWS DATABASE USER GROUP - LAUNCH EVENT (LONDON) December 7, 2022 - COM311 Mi...
 
COM311 Migrating 600 Databases To AWS
COM311 Migrating 600 Databases To AWS COM311 Migrating 600 Databases To AWS
COM311 Migrating 600 Databases To AWS
 
AWS DevDay Vienna - Automating building blocks choices you will face with con...
AWS DevDay Vienna - Automating building blocks choices you will face with con...AWS DevDay Vienna - Automating building blocks choices you will face with con...
AWS DevDay Vienna - Automating building blocks choices you will face with con...
 
PRG 420 Week 3 Individual Assignment Netbeans Project (annual co.docx
PRG 420 Week 3 Individual Assignment Netbeans Project (annual co.docxPRG 420 Week 3 Individual Assignment Netbeans Project (annual co.docx
PRG 420 Week 3 Individual Assignment Netbeans Project (annual co.docx
 
AEM target Integration
AEM target IntegrationAEM target Integration
AEM target Integration
 
How to build unified Batch & Streaming Pipelines with Apache Beam and Dataflow
How to build unified Batch & Streaming Pipelines with Apache Beam and DataflowHow to build unified Batch & Streaming Pipelines with Apache Beam and Dataflow
How to build unified Batch & Streaming Pipelines with Apache Beam and Dataflow
 
CIRCUIT 2015 - Responsive Websites & Grid-Based Layouts
CIRCUIT 2015 - Responsive Websites & Grid-Based LayoutsCIRCUIT 2015 - Responsive Websites & Grid-Based Layouts
CIRCUIT 2015 - Responsive Websites & Grid-Based Layouts
 
AEM responsive
AEM responsiveAEM responsive
AEM responsive
 
DevOps on AWS
DevOps on AWSDevOps on AWS
DevOps on AWS
 
AWS DeepLens Workshop: Building Computer Vision Applications
AWS DeepLens Workshop: Building Computer Vision ApplicationsAWS DeepLens Workshop: Building Computer Vision Applications
AWS DeepLens Workshop: Building Computer Vision Applications
 

More from Casey Lee

The Last Bottleneck of Continuous Delivery
The Last Bottleneck of Continuous DeliveryThe Last Bottleneck of Continuous Delivery
The Last Bottleneck of Continuous Delivery
Casey Lee
 
Using AWS to Achieve Both Autonomy and Governance at 3M
Using AWS to Achieve Both Autonomy and Governance at 3MUsing AWS to Achieve Both Autonomy and Governance at 3M
Using AWS to Achieve Both Autonomy and Governance at 3M
Casey Lee
 
AWS DOs and DONTs
AWS DOs and DONTsAWS DOs and DONTs
AWS DOs and DONTs
Casey Lee
 
AWS re:Invent 2018
AWS re:Invent 2018 AWS re:Invent 2018
AWS re:Invent 2018
Casey Lee
 
Continuous Delivery on AWS with Zero Downtime
Continuous Delivery on AWS with Zero DowntimeContinuous Delivery on AWS with Zero Downtime
Continuous Delivery on AWS with Zero Downtime
Casey Lee
 
Container based CI/CD on GitHub Actions
Container based CI/CD on GitHub ActionsContainer based CI/CD on GitHub Actions
Container based CI/CD on GitHub Actions
Casey Lee
 
WORKSHOP: Microservices as Containers on AWS
WORKSHOP: Microservices as Containers on AWSWORKSHOP: Microservices as Containers on AWS
WORKSHOP: Microservices as Containers on AWS
Casey Lee
 
Microservices as Containers on AWS . . . for Fun and Profit
Microservices as Containers on AWS . . . for Fun and ProfitMicroservices as Containers on AWS . . . for Fun and Profit
Microservices as Containers on AWS . . . for Fun and Profit
Casey Lee
 
Serverless Delivery
Serverless DeliveryServerless Delivery
Serverless Delivery
Casey Lee
 
Top10 Characteristics of Awesome Apps
Top10 Characteristics of Awesome AppsTop10 Characteristics of Awesome Apps
Top10 Characteristics of Awesome Apps
Casey Lee
 

More from Casey Lee (10)

The Last Bottleneck of Continuous Delivery
The Last Bottleneck of Continuous DeliveryThe Last Bottleneck of Continuous Delivery
The Last Bottleneck of Continuous Delivery
 
Using AWS to Achieve Both Autonomy and Governance at 3M
Using AWS to Achieve Both Autonomy and Governance at 3MUsing AWS to Achieve Both Autonomy and Governance at 3M
Using AWS to Achieve Both Autonomy and Governance at 3M
 
AWS DOs and DONTs
AWS DOs and DONTsAWS DOs and DONTs
AWS DOs and DONTs
 
AWS re:Invent 2018
AWS re:Invent 2018 AWS re:Invent 2018
AWS re:Invent 2018
 
Continuous Delivery on AWS with Zero Downtime
Continuous Delivery on AWS with Zero DowntimeContinuous Delivery on AWS with Zero Downtime
Continuous Delivery on AWS with Zero Downtime
 
Container based CI/CD on GitHub Actions
Container based CI/CD on GitHub ActionsContainer based CI/CD on GitHub Actions
Container based CI/CD on GitHub Actions
 
WORKSHOP: Microservices as Containers on AWS
WORKSHOP: Microservices as Containers on AWSWORKSHOP: Microservices as Containers on AWS
WORKSHOP: Microservices as Containers on AWS
 
Microservices as Containers on AWS . . . for Fun and Profit
Microservices as Containers on AWS . . . for Fun and ProfitMicroservices as Containers on AWS . . . for Fun and Profit
Microservices as Containers on AWS . . . for Fun and Profit
 
Serverless Delivery
Serverless DeliveryServerless Delivery
Serverless Delivery
 
Top10 Characteristics of Awesome Apps
Top10 Characteristics of Awesome AppsTop10 Characteristics of Awesome Apps
Top10 Characteristics of Awesome Apps
 

Recently uploaded

Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
IES VE
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
kalichargn70th171
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Natan Silnitsky
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
Georgi Kodinov
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
Donna Lenk
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
wottaspaceseo
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Globus
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
WSO2
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Globus
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
Google
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Shahin Sheidaei
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
informapgpstrackings
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
Globus
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Mind IT Systems
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns
 

Recently uploaded (20)

Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 

2022 SF Summit - Improving Developer Experience with CDK

  • 1. S A N F R A N C I S C O | A P R I L 2 0 , 2 0 2 2
  • 2. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Improving developer experience with CDK Casey Lee D E V 2 0 2 Chief Technology Officer Gaggle
  • 3. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Gaggle’s Transformation Story Blocked Items 190,616,612 105% Messages 5,155,335,282 350% Files 6,276,549,392 489% PSS 20,395 61% Human Items 38,815,291 34% Lives Saved 1,338 50%
  • 4. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Challenge: “The tech team never gets anything done...when they do, it is months late!”
  • 5. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. % Efficiency = (# Engineers) / (WIP) WIP = (Lead Time) x (Deploy Frequency) High WIP, Low Efficiency
  • 6. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Challenge: Inability to work in isolation results in long feedback loops
  • 7. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Solution: Provision separate AWS accounts per developer
  • 8. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Challenge: Unable to use existing CI/CD to deploy into dev account
  • 9. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Solution: Use CDK for each application
  • 10. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Solution: Use CDK for each application from gaggle_cdk.core import S3Website, S3JsonFile, apply_permissions_boundary class AppStack(core.Stack): def __init__() -> None: s3_website = S3Website( self, hosted_zone=hosted_zone, website_sources=s3deploy.Source.asset(artifact) ) config = S3JsonFile( bucket=s3_website.bucket, object_key="assets/config.json", values={ "version": os.getenv("CODEBUILD_RESOLVED_SOURCE_VERSION","-"), "identityProviderId": user_pool_idp, "baseApiUrl": base_url, } )
  • 11. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Solution: Automate IAM Permission Boundary from gaggle_cdk.core import apply_permissions_boundary class AppStack(core.Stack): def __init__(self) -> None: apply_permissions_boundary(self)
  • 12. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Solution: Automate Tag Policy tags = GaggleTags( application=application, environment=environment, team=team, some_random_tag=”foo", ) # Create a stack, add resources to it stack = core.Stack(app, "my-stack") # Apply the tags to the stack tags.apply(stack) # Additionally you can apply tags to the entire app tags.apply(app)
  • 13. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Challenge: Deploying dependencies
  • 14. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Solution: Automate build/deploy of dependencies from source
  • 15. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Solution: Automate build/deploy of dependencies from source # Define the commands needed to build build: - npm run build # Define the dependencies to load dependencies: - repo: gaggle-net/service-a.git ref: main # Define the applications to run locally - basedir: infrastructure stacks: ui-stack context: my-context-key: my-context-value
  • 16. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Challenge: QA is now a bottleneck to delivery process
  • 17. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Solution: Separate integration accounts per team
  • 18. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Solution: Create pipeline for each service
  • 19. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Solution: Create pipeline for each service from aws_cdk import core from gaggle_cdk.core.pipelines import DeploymentPipeline class ExamplePipelineStack(core.Stack): def __init__(self,scope: core.Construct): pipeline = DeploymentPipeline( self, github_repo="sample-api", github_org="gaggle-net", integration_account="100000000000", staging_account="200000000000", production_account="300000000000", )
  • 20. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Challenge: Many accounts can be expensive!!
  • 21. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Solution: Budget Automation
  • 22. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. # The 'org' sections defines settings for the entire organization org: owner: org-owner@gaggle.net workspace: T0000000 channel: ZZZZZZZ default_daily_limit: 5 # Teams are containers for accounts. # 'owner' - email address to notify for overages # 'channel' - slack channel to notify for overages teams: - name: FOO owner: alice@gaggle.net channel: YYYYYYYYYYY # Accounts are matched by 'name'. # - 'owner' an additional 'owner' can be specified to be included in overage emails. # - 'daily_limit' can be overridden per team account_costs: - name: developer-alice - name: developer-bob owner: bob@gaggle.net Solution: Budget Automation
  • 23. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. from account_budget import AccountBudget class BudgetsStack(core.Stack): def __init__(self) -> None: for account in accounts: b = AccountBudget( self, account_id=account.id, daily_limit=daily_limit, emails=[team.owner,account_cost.owner] ) # create chatbot channel aws_chatbot.SlackChannelConfiguration( self, slack_channel_id=config.org.channel, slack_workspace_id=config.org.workspace, notification_topics=[b.topic] ) Solution: Budget Automation
  • 24. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved.
  • 25. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Solution: Budget Automation
  • 26. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Results...
  • 27. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved.
  • 28. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. % Efficiency = (# Engineers) / (WIP) WIP = (Lead Time) x (Deploy Frequency) Kickoff Transformation
  • 29. Thank you! © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Casey Lee @nektos Survey Link 
  • 30. Please complete the session survey © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved.

Editor's Notes

  1. Duration: 120 seconds Talk Track Casey: Talk about who Gaggle is
  2. Duration: 30 seconds Talk Track Casey: The challenge…
  3. Duration: 60 seconds Talk Track Casey: Describe problem: * Lead time = 47 days * Deploy frequency = 2/day * WIP 87 * Efficiency = 12%
  4. Duration: 90 seconds Talk Track Casey: Inability to work in isolation -> long feedback loops * developers can’t run everything locally (lambdas, kinesis, sqs, etc) * Forced use of shared account and release branches. * QA owns shared environment and deployed to shared account. SLOW FEEDBACK. → DEV and QA are coupled to get feedback.
  5. Duration: 30 seconds Talk Track Casey: Use Control tower to provision each developer their own account
  6. Duration: 90 seconds Talk Track Casey: How do they deploy to new accounts? Can’t use bamboo 
  7. Duration: 120 seconds Talk Track Casey: Wrap existing CFN templates with CDK where possible. Create shared resources.
  8. Duration: 120 seconds Talk Track Casey: Create higher order constructs S3Website – S3 Bucket, CloudFront, Route53, Deploy code S3JsonFile – dynamic values from CFN pushed to JSON file in bucket
  9. Duration: 60 seconds Talk Track Casey: IAM Permission Boundary to allow creating IAM policies in CDK, but automatically add the appropriate perm boundary to avoid privilege escalation
  10. Duration: 60 seconds Talk Track Casey: We enforce certain tags – make it easy to add those tags to the stack or app
  11. Duration: 90 seconds Talk Track Casey: How do I deploy my dependencies?
  12. Duration: 120 seconds Talk Track Casey: Define dependencies in code, pull/build/deploy deps Quickly converge any environment to run an app and its deps
  13. Duration: 120 seconds Talk Track Casey: CDKR tool. Define deps in YAML. Run deploy Clones dependencies and deploys
  14. Duration: 60 seconds Talk Track Casey: Still waiting on QA for all testing – and now devs are providing pressure! Still have shared account and release branches. Bottleneck is now QA. They own shared environment and deployed to shared account. SLOW FEEDBACK. → COUPLING between ALL dev teams to test/release changes. ONLY 1 path to production!
  15. Duration: 60 seconds Talk Track Casey: MOAR accounts! New account per team This account allows teams to handle their integration testing in parallel of other teams
  16. Duration: 60 seconds Talk Track Casey: Each service gets CodePipeline Explain how dependencies are deployed into team accounts but not to higher accounts
  17. Duration: 120 seconds Talk Track Casey: CDK - high level construct for a pipeline Creates build job - use buildspec Creates deploy to integration and runs tests “ Staging “ prod
  18. Duration: 60 seconds Talk Track Casey: Hard to manage costs across dozens of accounts Devs trying new things Devs scaling old things Need visibility
  19. Duration: 120 seconds Talk Track Casey: Approach: decentralized view into budgets...give ownership to others Automate provisioning of budget per member account Attach SNS top to budget Subscribe slack and email
  20. Duration: 120 seconds Talk Track Casey: # 'owner' - email address to notify for overages # 'workspace' - slack workspace id # 'channel' - slack channel to notify for overages # 'default_daily_limit' - a default daily limit for any account that isn't included in a team
  21. Duration: 120 seconds Talk Track Casey: Run in master account. Loop through all accounts and create an account budget construct Budget construct does the budget, notifications, and sns topic Include daily limit and emails for notifications Include chatbot from budget SNS topic
  22. Duration: 30 seconds Talk Track Casey: Leverage existing AWS tools (budget in console)
  23. Duration: 30 seconds Talk Track Casey: Slack message
  24. Duration: 5 seconds Talk Track Casey: transition…
  25. Duration: 12= seconds Talk Track Casey: New process
  26. Duration: 90 seconds Talk Track Casey: Results after transformation * Lead time = 47 days -> 12 days * Deploy frequency = 2/day -> 6/day * WIP 72 (40% increase in headcount) Efficiency = 12% -> 61% Pipelines launched efficiency and throughput