SlideShare a Scribd company logo
1 of 53
Download to read offline
© 2015, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Lucy Chang
Sr. Software Engineer in Quality, Intuit
CI/CD with Mocking &
Resiliency Testing Using AWS
Alfred Tan
Sr. DevOps Manager, Intuit
Session Overview
• CI/CD and AWS onboarding
• Cross team AWS strategy alignment
• Automating AWS deployment
• Development work is blocked by dependency
• Integration tests fails due to unreliable dependency
• Need to do resiliency testing
CI/CD in AWS
Our Challenges
• Security requirements
• Onboarding into CI/CD
• Highly Available
Our Solution - Slingshot
• Build security in
• Automate onboarding to CI/CD
• Build HA/DR in
CI/CD Pipeline
Continuous Integration
Continuous Delivery/Deployment Pipeline
Promotion Criteria:
• Build pass: 100%
• Unit Test pass: 100%
• Code Coverage: >80%
Build
Promotion Criteria:
• BAT pass: 100%
CI
Promotion Criteria:
• Regression Test
pass: 100%
QA
Promotion Criteria:
• E2E Test pass:
100%
Test Run:
• E2E Test
• Performance Test
E2E/Perf
Test Run:
• Smoke Test pass: 100%
Prod
Slingshot Setup
Initial Setup
GitHub Repo
CI/CD Pipeline
KMS/SSH keys
S3 Buckets
Egress Proxy and Bastion Host
Splunk Forwarder
AWS Account Setup
AWS Account
VPC, Subnets, Routing tables, Route 53 Zone Delegation
One time events
Slingshot Initial Setup
Region US-WEST-2
Bucket for Artifacts KMS Key for SecretsKMS Key for EBSBucket for Secrets
Internet
Gateway
Bastion
ASG
Splunk
Forwarder
Egress
ASG
Public Bastion Subnets Public Egress Subnets
Private DB Subnets
Private APP Subnets
Public ELB Subnets
Private WEB Subnets
Delegated DNS Zones
Slingshot Setup
Initial Setup
GitHub Repo
CI/CD Pipeline
KMS/SSH keys
S3 Buckets
Egress Proxy and Bastion Host
Splunk Forwarder
CI/CD
ELB
Web Tier
App Tier
CNAME
Recurring events
AWS Account Setup
AWS Account
VPC, Subnets, Routing tables, Route 53 Zone Delegation
One time events
CD with Blue-Green Deployment
ci-svc.intuit.com qa-svc.intuit.com svc.intuit.com
PreProd
Account
Prod
Account
Public ELB
Subnets
Private Web
Subnets
Private App
Subnets
100% 5%95% 100%0%
CI Web
Build 10
CI App
Build 10
CI Web
Build 12
CI App
Build 12
QA App
Build 10
QA Web
Build 10
QA App
Build 10
QA Web
Build 12
QA App
Build 12
Prod App
Build 10
Prod Web
Build 10
Prod App
Build 10
Prod Web
Build 12
Prod App
Build 12
Benefits
• Early feedback on changes flowing through the system
• Increase in quality
• Frequent releases to production
• Development productivity from day 1
Slingshot Demo
Recap
Challenges
• Security requirements
• Onboarding into CI/CD
• Highly Available
The Solution: Slingshot
• Build security in
• Automate onboarding to CI/CD
• Build HA/DR in
The Next Problem
• Automation tests failed due to unreliable dependency server
• Builds are not promoted
Our Solution
Overview of Wiremock
Wiremock is a library for stubbing and proxying web services
• Stubbing
• Fault Injection
• Easy Set up
• Easy onboarding
How does Wiremock work?
System
Under Test
Wiremock
Server
Dependency
Server
Automation
Test
• Configure the Wiremock server to be man-in-the-middle
• Increased integration test pass rate
• Increased code coverage
• Does not interrupt other team’s calling the SUT
= Stubs
Before Wiremock
Subnet
ELB for SUT
SUT 1
SUT 2
Dependency
Server
Subnet
Automation
Test
We tried this
Subnet
ELB for SUT
SUT 1
SUT 2
Subnet
Automation
Test
• Deploy Wiremock on SUT EC2 instance
• No consistent stub response!
= Stubs
Our Solution
ELB for WM
SUT 1
SUT 2
Automation
Test
Wiremock
(Stub
Dependency)
ELB for SUT
• Deploy Wiremock on dedicated EC2 and ELB
• Consistent Stub responses!
= Stubs
If no stubs…
ELB for WM
SUT 1
SUT 2
Automation
Test
Wiremock
ELB for SUT
Dependency
Server
WM will proxy the
request to
dependency
server
Wiremock Code Snipets
Starting Up Wiremock Server
java -jar wiremock-1.53-standalone.jar --verbose --
port 8080 --proxy-all=[Dependency Server DNS Name]
Stubbing the response
//This calls Wiremock API to stub the response
stubFor(get(urlEqualTo(“/from/where”))
.willReturn(aResponse().withStatus(200)
.withHeader("Cache-Control", "no-cache")
.withHeader("Content-Type", ”text/plain")
.withBody(“Taiwan” )));
Simulating Fault
//This calls Wiremock API for fault injection
stubFor(get(urlEqualTo(“/some/thing”))
.willReturn(aResponse()
.withFault(Fault.EMPTY_RESPONSE)));
Benefits
• We fixed the CI/CD pipeline
• No more unnecessary test failures debugging
• Less production escapes and firefighting
Recap
The Second Challenge
• Integration tests failures broke CICD pipeline
• Hard to do resiliency testing
The Solution : Wiremock
Next Step
Why don’t we combine them?
Slingshot With Wiremock
Slingshot with Wiremock
W
ASG
Web
ASG
App
ASG
System Under Test
Region US-WEST-2
Availability Zone #1
Wiremock
ASG
Wiremock
Internet Gateway
Dependency
Server
AWS Region X / Datacenter X
Automate WM Deployment
Automate Wiremock Deployment
Chef is an infrastructure automation code tool we use
• Code how you deploy and manage your infrastructure
• Allows version control
• Code can be reused
Automate Wiremock Deployment
We wrote a Wiremock Recipe
• Download the Wiremock jar
• Start up the Wiremock server
Automate Wiremock Deployment
Berkshelf is a dependency manager for chef
• Get the Java recipe to download Java
• Get the Wiremock recipe to deploy Wiremock server
Chef Snipet
#This will start the wiremock server with the
parameters passed in
function start { cd "${USER_DIRECTORY}" ;java -jar
wiremock-${WIREMOCK_VERSION}-standalone.jar --port
${PORT} --proxy-via ${PROXY_VIA} -–proxy-all=
${PROXY_ALL} --verbose > /var/log/wiremock.log 2>&1
& }
Automate Wiremock Stack Creation
Use AWS CloudFormation API
• Provision EC2 instances and ELB
• Create Auto Scaling Group
• Set up other AWS resources
Use WireMock in Slingshot
Call Chef from CloudFormation
How to Call Cookbook From CloudFormation
Write shell scripts In the InstanceLaunchConfig section
1. Download and install chef
2. Run Chef. In this case we created a Wiremock role to
execute the java and Wiremock cookbooks.
Call Chef from CloudFormation
"5_run_chef": {
"command": { "Fn::Join": [ "", [
"/usr/bin/chef-solo -c /var/chef/config/solo.rb -o
'role[", { "Ref": "Role" }, "]' -E '", { "Ref":
"Environment" },"'" ] ]
}
Benefits
• A simplified CI/CD pipeline onboarding
• A successful CI/CD pipeline with increased test pass rate
• Resiliency testing capability built in
• Security features built in
Deep Dives
Demo
SUT Wiremock
Server
YelpTest
Automation
Recap
Recap
Combined Solution: Slingshot with Wiremock
• CI/CD pipeline easy onboarding
• Builds are auto-promoted
• Less Engineers’ time spent on debugging
• Resiliency issue found before production
• Happy Engineers
What we learned
What We Learned
• The initial investment is worth it
• Try to be flexible
• Set up DNS
References
• http://www.pnsqc.org/the-journey-of-mocking-in-aws/
• http://wiremock.org/
• https://www.chef.io/
• http://docs.aws.amazon.com/AWSCloudFormation/latest
/APIReference/Welcome.html
Related Sessions
Breakout Session:
ARC344
How Intuit Improves Security and Productivity with
AWS Virtual Networking, identity, and Account
Services
Track: Architecture
Session Level: Advanced (300 level)
Session Time: Thursday, Oct 8, 2:45 PM – 3:45 PM–
Palazzo
Contact
Lucy Chang
Sr. Software Engineer in Quality , Intuit
https://www.linkedin.com/pub/lucy-chang/11/312/a83
Alfred Tan
Sr. DevOps Manager, Intuit
https://www.linkedin.com/pub/alfred-tan/1/938/9b
Thank you!
Remember to complete
your evaluations!

More Related Content

What's hot

What's hot (20)

Service Virtualization: What, Who, When, and How
Service Virtualization: What, Who, When, and HowService Virtualization: What, Who, When, and How
Service Virtualization: What, Who, When, and How
 
Dependency Down, Flexibility Up – The Benefits of API-First Development
Dependency Down, Flexibility Up – The Benefits of API-First DevelopmentDependency Down, Flexibility Up – The Benefits of API-First Development
Dependency Down, Flexibility Up – The Benefits of API-First Development
 
Managed Test Services - Maveric Systems
Managed Test Services - Maveric SystemsManaged Test Services - Maveric Systems
Managed Test Services - Maveric Systems
 
Design patterns for microservice architecture
Design patterns for microservice architectureDesign patterns for microservice architecture
Design patterns for microservice architecture
 
12 factor app - Core Guidelines To Cloud Ready Solutions
12 factor app - Core Guidelines To Cloud Ready Solutions12 factor app - Core Guidelines To Cloud Ready Solutions
12 factor app - Core Guidelines To Cloud Ready Solutions
 
Microservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring CloudMicroservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring Cloud
 
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 ...
 
Implementing SRE practices: SLI/SLO deep dive - David Blank-Edelman - DevOpsD...
Implementing SRE practices: SLI/SLO deep dive - David Blank-Edelman - DevOpsD...Implementing SRE practices: SLI/SLO deep dive - David Blank-Edelman - DevOpsD...
Implementing SRE practices: SLI/SLO deep dive - David Blank-Edelman - DevOpsD...
 
DevOps-as-a-Service: Towards Automating the Automation
DevOps-as-a-Service: Towards Automating the AutomationDevOps-as-a-Service: Towards Automating the Automation
DevOps-as-a-Service: Towards Automating the Automation
 
Zero-Trust SASE DevSecOps
Zero-Trust SASE DevSecOpsZero-Trust SASE DevSecOps
Zero-Trust SASE DevSecOps
 
Microservices, Kubernetes and Istio - A Great Fit!
Microservices, Kubernetes and Istio - A Great Fit!Microservices, Kubernetes and Istio - A Great Fit!
Microservices, Kubernetes and Istio - A Great Fit!
 
Build CICD Pipeline for Container Presentation Slides
Build CICD Pipeline for Container Presentation SlidesBuild CICD Pipeline for Container Presentation Slides
Build CICD Pipeline for Container Presentation Slides
 
The Cloud Operating Model MVP: From Zero to Production Ready in 12 Weeks - Bu...
The Cloud Operating Model MVP: From Zero to Production Ready in 12 Weeks - Bu...The Cloud Operating Model MVP: From Zero to Production Ready in 12 Weeks - Bu...
The Cloud Operating Model MVP: From Zero to Production Ready in 12 Weeks - Bu...
 
Building an SRE Organization @ Squarespace
Building an SRE Organization @ SquarespaceBuilding an SRE Organization @ Squarespace
Building an SRE Organization @ Squarespace
 
Building a CICD pipeline for deploying to containers
Building a CICD pipeline for deploying to containersBuilding a CICD pipeline for deploying to containers
Building a CICD pipeline for deploying to containers
 
DevOps at Scale: How Datadog is using AWS and PagerDuty to Keep Pace with Gr...
DevOps at Scale:  How Datadog is using AWS and PagerDuty to Keep Pace with Gr...DevOps at Scale:  How Datadog is using AWS and PagerDuty to Keep Pace with Gr...
DevOps at Scale: How Datadog is using AWS and PagerDuty to Keep Pace with Gr...
 
DevOps- exec level briefing
DevOps-  exec level briefingDevOps-  exec level briefing
DevOps- exec level briefing
 
Application Management & Support Best Practices
Application Management & Support Best PracticesApplication Management & Support Best Practices
Application Management & Support Best Practices
 
Gravitee API Management - Ahmet AYDIN
 Gravitee API Management  -  Ahmet AYDIN Gravitee API Management  -  Ahmet AYDIN
Gravitee API Management - Ahmet AYDIN
 
AWS Partner Network 2019 and Beyond (GPSBUS207) - AWS re:Invent 2018
AWS Partner Network 2019 and Beyond (GPSBUS207) - AWS re:Invent 2018AWS Partner Network 2019 and Beyond (GPSBUS207) - AWS re:Invent 2018
AWS Partner Network 2019 and Beyond (GPSBUS207) - AWS re:Invent 2018
 

Similar to (DEV310) CI/CD of Services with Mocking & Resiliency Testing Using AWS

Similar to (DEV310) CI/CD of Services with Mocking & Resiliency Testing Using AWS (20)

Towards automated testing - CloudStack Collab Conference
Towards automated testing - CloudStack Collab ConferenceTowards automated testing - CloudStack Collab Conference
Towards automated testing - CloudStack Collab Conference
 
Containerising bootiful microservices javaeeconf
Containerising bootiful microservices javaeeconfContainerising bootiful microservices javaeeconf
Containerising bootiful microservices javaeeconf
 
Cypress Automation
Cypress  AutomationCypress  Automation
Cypress Automation
 
Getting to Walk with DevOps
Getting to Walk with DevOpsGetting to Walk with DevOps
Getting to Walk with DevOps
 
Andreas Grabner - Performance as Code, Let's Make It a Standard
Andreas Grabner - Performance as Code, Let's Make It a StandardAndreas Grabner - Performance as Code, Let's Make It a Standard
Andreas Grabner - Performance as Code, Let's Make It a Standard
 
Continuous Integration and Deployment Best Practices on AWS
Continuous Integration and Deployment Best Practices on AWSContinuous Integration and Deployment Best Practices on AWS
Continuous Integration and Deployment Best Practices on AWS
 
Aws Amity University Presentation Mar-10-2022
Aws Amity University Presentation Mar-10-2022Aws Amity University Presentation Mar-10-2022
Aws Amity University Presentation Mar-10-2022
 
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer ToolsDevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
 
Putting it All Together: Securing Systems at Cloud Scale
Putting it All Together: Securing Systems at Cloud ScalePutting it All Together: Securing Systems at Cloud Scale
Putting it All Together: Securing Systems at Cloud Scale
 
Continuous Integration with Amazon ECS and Docker
Continuous Integration with Amazon ECS and DockerContinuous Integration with Amazon ECS and Docker
Continuous Integration with Amazon ECS and Docker
 
Automated Virtualized Testing (AVT) with Docker, Kubernetes, WireMock and Gat...
Automated Virtualized Testing (AVT) with Docker, Kubernetes, WireMock and Gat...Automated Virtualized Testing (AVT) with Docker, Kubernetes, WireMock and Gat...
Automated Virtualized Testing (AVT) with Docker, Kubernetes, WireMock and Gat...
 
Advanced Continuous Delivery on AWS
Advanced Continuous Delivery on AWSAdvanced Continuous Delivery on AWS
Advanced Continuous Delivery on AWS
 
TestCorner#22 - Evolving QA implementation for Microservices in Viveport
TestCorner#22 - Evolving QA implementation for Microservices in ViveportTestCorner#22 - Evolving QA implementation for Microservices in Viveport
TestCorner#22 - Evolving QA implementation for Microservices in Viveport
 
Introduction to Spring Cloud
Introduction to Spring Cloud           Introduction to Spring Cloud
Introduction to Spring Cloud
 
Integrating Security into DevOps and CI / CD Environments - Pop-up Loft TLV 2017
Integrating Security into DevOps and CI / CD Environments - Pop-up Loft TLV 2017Integrating Security into DevOps and CI / CD Environments - Pop-up Loft TLV 2017
Integrating Security into DevOps and CI / CD Environments - Pop-up Loft TLV 2017
 
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer ToolsDevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
 
Application Delivery Patterns for Developers - Technical 401
Application Delivery Patterns for Developers - Technical 401Application Delivery Patterns for Developers - Technical 401
Application Delivery Patterns for Developers - Technical 401
 
Kubernetes your tests! automation with docker on google cloud platform
Kubernetes your tests! automation with docker on google cloud platformKubernetes your tests! automation with docker on google cloud platform
Kubernetes your tests! automation with docker on google cloud platform
 
Dropwizard and Groovy
Dropwizard and GroovyDropwizard and Groovy
Dropwizard and Groovy
 
AWS Summit Auckland - Application Delivery Patterns for Developers
AWS Summit Auckland - Application Delivery Patterns for DevelopersAWS Summit Auckland - Application Delivery Patterns for Developers
AWS Summit Auckland - Application Delivery Patterns for Developers
 

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
 

Recently uploaded

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Recently uploaded (20)

Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 

(DEV310) CI/CD of Services with Mocking & Resiliency Testing Using AWS

  • 1. © 2015, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Lucy Chang Sr. Software Engineer in Quality, Intuit CI/CD with Mocking & Resiliency Testing Using AWS Alfred Tan Sr. DevOps Manager, Intuit
  • 2.
  • 3.
  • 4. Session Overview • CI/CD and AWS onboarding • Cross team AWS strategy alignment • Automating AWS deployment • Development work is blocked by dependency • Integration tests fails due to unreliable dependency • Need to do resiliency testing
  • 6. Our Challenges • Security requirements • Onboarding into CI/CD • Highly Available
  • 7. Our Solution - Slingshot • Build security in • Automate onboarding to CI/CD • Build HA/DR in
  • 8. CI/CD Pipeline Continuous Integration Continuous Delivery/Deployment Pipeline Promotion Criteria: • Build pass: 100% • Unit Test pass: 100% • Code Coverage: >80% Build Promotion Criteria: • BAT pass: 100% CI Promotion Criteria: • Regression Test pass: 100% QA Promotion Criteria: • E2E Test pass: 100% Test Run: • E2E Test • Performance Test E2E/Perf Test Run: • Smoke Test pass: 100% Prod
  • 9. Slingshot Setup Initial Setup GitHub Repo CI/CD Pipeline KMS/SSH keys S3 Buckets Egress Proxy and Bastion Host Splunk Forwarder AWS Account Setup AWS Account VPC, Subnets, Routing tables, Route 53 Zone Delegation One time events
  • 10. Slingshot Initial Setup Region US-WEST-2 Bucket for Artifacts KMS Key for SecretsKMS Key for EBSBucket for Secrets Internet Gateway Bastion ASG Splunk Forwarder Egress ASG Public Bastion Subnets Public Egress Subnets Private DB Subnets Private APP Subnets Public ELB Subnets Private WEB Subnets Delegated DNS Zones
  • 11. Slingshot Setup Initial Setup GitHub Repo CI/CD Pipeline KMS/SSH keys S3 Buckets Egress Proxy and Bastion Host Splunk Forwarder CI/CD ELB Web Tier App Tier CNAME Recurring events AWS Account Setup AWS Account VPC, Subnets, Routing tables, Route 53 Zone Delegation One time events
  • 12. CD with Blue-Green Deployment ci-svc.intuit.com qa-svc.intuit.com svc.intuit.com PreProd Account Prod Account Public ELB Subnets Private Web Subnets Private App Subnets 100% 5%95% 100%0% CI Web Build 10 CI App Build 10 CI Web Build 12 CI App Build 12 QA App Build 10 QA Web Build 10 QA App Build 10 QA Web Build 12 QA App Build 12 Prod App Build 10 Prod Web Build 10 Prod App Build 10 Prod Web Build 12 Prod App Build 12
  • 13. Benefits • Early feedback on changes flowing through the system • Increase in quality • Frequent releases to production • Development productivity from day 1
  • 15. Recap Challenges • Security requirements • Onboarding into CI/CD • Highly Available The Solution: Slingshot • Build security in • Automate onboarding to CI/CD • Build HA/DR in
  • 16. The Next Problem • Automation tests failed due to unreliable dependency server • Builds are not promoted
  • 18. Overview of Wiremock Wiremock is a library for stubbing and proxying web services • Stubbing • Fault Injection • Easy Set up • Easy onboarding
  • 19. How does Wiremock work? System Under Test Wiremock Server Dependency Server Automation Test • Configure the Wiremock server to be man-in-the-middle • Increased integration test pass rate • Increased code coverage • Does not interrupt other team’s calling the SUT = Stubs
  • 20. Before Wiremock Subnet ELB for SUT SUT 1 SUT 2 Dependency Server Subnet Automation Test
  • 21. We tried this Subnet ELB for SUT SUT 1 SUT 2 Subnet Automation Test • Deploy Wiremock on SUT EC2 instance • No consistent stub response! = Stubs
  • 22. Our Solution ELB for WM SUT 1 SUT 2 Automation Test Wiremock (Stub Dependency) ELB for SUT • Deploy Wiremock on dedicated EC2 and ELB • Consistent Stub responses! = Stubs
  • 23. If no stubs… ELB for WM SUT 1 SUT 2 Automation Test Wiremock ELB for SUT Dependency Server WM will proxy the request to dependency server
  • 25. Starting Up Wiremock Server java -jar wiremock-1.53-standalone.jar --verbose -- port 8080 --proxy-all=[Dependency Server DNS Name]
  • 26. Stubbing the response //This calls Wiremock API to stub the response stubFor(get(urlEqualTo(“/from/where”)) .willReturn(aResponse().withStatus(200) .withHeader("Cache-Control", "no-cache") .withHeader("Content-Type", ”text/plain") .withBody(“Taiwan” )));
  • 27. Simulating Fault //This calls Wiremock API for fault injection stubFor(get(urlEqualTo(“/some/thing”)) .willReturn(aResponse() .withFault(Fault.EMPTY_RESPONSE)));
  • 28. Benefits • We fixed the CI/CD pipeline • No more unnecessary test failures debugging • Less production escapes and firefighting
  • 29. Recap The Second Challenge • Integration tests failures broke CICD pipeline • Hard to do resiliency testing The Solution : Wiremock
  • 30. Next Step Why don’t we combine them?
  • 32. Slingshot with Wiremock W ASG Web ASG App ASG System Under Test Region US-WEST-2 Availability Zone #1 Wiremock ASG Wiremock Internet Gateway Dependency Server AWS Region X / Datacenter X
  • 34. Automate Wiremock Deployment Chef is an infrastructure automation code tool we use • Code how you deploy and manage your infrastructure • Allows version control • Code can be reused
  • 35. Automate Wiremock Deployment We wrote a Wiremock Recipe • Download the Wiremock jar • Start up the Wiremock server
  • 36. Automate Wiremock Deployment Berkshelf is a dependency manager for chef • Get the Java recipe to download Java • Get the Wiremock recipe to deploy Wiremock server
  • 37. Chef Snipet #This will start the wiremock server with the parameters passed in function start { cd "${USER_DIRECTORY}" ;java -jar wiremock-${WIREMOCK_VERSION}-standalone.jar --port ${PORT} --proxy-via ${PROXY_VIA} -–proxy-all= ${PROXY_ALL} --verbose > /var/log/wiremock.log 2>&1 & }
  • 38. Automate Wiremock Stack Creation Use AWS CloudFormation API • Provision EC2 instances and ELB • Create Auto Scaling Group • Set up other AWS resources
  • 39. Use WireMock in Slingshot Call Chef from CloudFormation
  • 40. How to Call Cookbook From CloudFormation Write shell scripts In the InstanceLaunchConfig section 1. Download and install chef 2. Run Chef. In this case we created a Wiremock role to execute the java and Wiremock cookbooks.
  • 41. Call Chef from CloudFormation "5_run_chef": { "command": { "Fn::Join": [ "", [ "/usr/bin/chef-solo -c /var/chef/config/solo.rb -o 'role[", { "Ref": "Role" }, "]' -E '", { "Ref": "Environment" },"'" ] ] }
  • 42. Benefits • A simplified CI/CD pipeline onboarding • A successful CI/CD pipeline with increased test pass rate • Resiliency testing capability built in • Security features built in
  • 45. Recap
  • 46. Recap Combined Solution: Slingshot with Wiremock • CI/CD pipeline easy onboarding • Builds are auto-promoted • Less Engineers’ time spent on debugging • Resiliency issue found before production • Happy Engineers
  • 48. What We Learned • The initial investment is worth it • Try to be flexible • Set up DNS
  • 49. References • http://www.pnsqc.org/the-journey-of-mocking-in-aws/ • http://wiremock.org/ • https://www.chef.io/ • http://docs.aws.amazon.com/AWSCloudFormation/latest /APIReference/Welcome.html
  • 50. Related Sessions Breakout Session: ARC344 How Intuit Improves Security and Productivity with AWS Virtual Networking, identity, and Account Services Track: Architecture Session Level: Advanced (300 level) Session Time: Thursday, Oct 8, 2:45 PM – 3:45 PM– Palazzo
  • 51. Contact Lucy Chang Sr. Software Engineer in Quality , Intuit https://www.linkedin.com/pub/lucy-chang/11/312/a83 Alfred Tan Sr. DevOps Manager, Intuit https://www.linkedin.com/pub/alfred-tan/1/938/9b