SlideShare una empresa de Scribd logo
1 de 41
CONDUCTOR - AUTOMATING CI AND CD
2
 Introduction
 Continuous Integration Overview
 Reforming Continuous Integration at Conductor
 Common Issues and Mitigations
 Deployment Overview
 Microservices at Conductor
 Q and A
AGENDA
3
WHO WE ARE
4
WHO WE ARE
5
“The practice of integrating and testing source code continuously
in an automated fashion”
WHAT IS CONTINUOUS INTEGRATION?
6
 Minimize the duration and effort required by each integration
episode
 Be able to deliver a product version suitable for release at any
moment
OBJECTIVES
7
 Maintain a single source repository
 Automate the build
 Make Your build self-testing
 Keep the build Fast
 Test in a clone of the production environment
 Automate deployment
PRACTICES OF CONTINUOUS INTEGRATION
8
QUALITY GATES
Static Code
Analysis
Unit Tests
Integration
Tests
Functional UI
Tests
Performance
Tests
9
REFORMING CI AT CONDUCTOR
10
· Choose and setup a CI tool
· Build and configure Testing Environment
· Build a Continuous Integration pipeline
· Collect statistics and metrics
MILESTONES / GOALS
11
 Choose and setup a CI tool
· Build and configure Testing Environment
· Build a Continuous Integration pipeline
· Collect statistics and metrics
MILESTONES / GOALS
12
CONTINUOUS INTEGRATION TOOLS
13
CONTINUOUS INTEGRATION TOOLS
14
Choose and setup a CI tool
 Build and configure Testing Environment
· Build a Continuous Integration pipeline
· Collect statistics and metrics
MILESTONES / GOALS
15
 Easy to spin up and maintain
 Immutable and disposable Infrastructure
 Production-like
 Cost effective
 Environment agnostic
TEST ENVIRONMENT REQUIREMENTS
16
ORIGINAL TEST ENVIRONMENT
17
CURRENT TEST ENVIRONMENT
PBE
Searchlight
ZooKeeper
WireMock MySQL
Thrift
Selenium Grid
Node
Node
NodeHub
18
CONTINUOUS INTEGRATION ARCHITECTURE
GitHub
Docker
Registry
TeamCity Master
Nexus
TeamCity Agent Selenium
Grid
PBE
19
Choose and setup a CI tool
Build and configure Testing Environment
 Build a Continuous Integration pipeline
· Collect statistics and metrics
MILESTONES / GOALS
20
PULL REQUEST WORKFLOW
Open PR
Unit and
Integration
Tests
Jasmine and
Karma Tests
Linting
Launch
Selenium Grid
Launch PBE Feature Tests
Merge PR
21
PULL REQUEST IN TC
22
Choose and setup a CI tool
Build and configure Testing Environment
Build a Continuous Integration pipeline
 Collect statistics and metrics
MILESTONES / GOALS
23
 “require branches to be up to date before merging” is disabled in Github
 To mitigate conflicts we run a “heartbeat” workflow against master every 4 hours
 Posts build status into Slack dev channels
 PRs are paused in the case of failure
PR HEARTBEAT
24
PR STATISTICS
25
PR STATISTICS
26
Choose and setup a CI tool
Build and configure Testing Environment
Build a Continuous Integration pipeline
Collect statistics and metrics
MILESTONES / GOALS
27
COMMON ISSUES AND MITIGATIONS
28
 Inconsistent behavior (flaky tests, code, infrastructure, etc.)
 Differences in production and PBE environments
 AWS is having a bad day
COMMON BUILD PROBLEMS
29
FLAKY TESTS AND HOW WE MITIGATE THEM
Validate
artifacts
Launch
Selenium
Grid
Launch PBE
Rerun
Failures
Terminate
Resources
Green Check
PR
30
 Kubernetes is an open-source
system for automating deployment,
scaling, and management of
containerized applications.
 It groups containers that make up
an application into logical units for
easy management and discovery.
TEST ENVIRONMENTS ON KUBERNETES
Kubernetes Cluster
Selenium Grid
Hub
Node
Node
Node
Searchlight
ZooKeeper
WireMock MySQL
Thrift
PBE Selenium Grid
Hub
Node
Node
Node
Searchlight
ZooKeeper
WireMock MySQL
Thrift
PBE
31
TC CLOUD AGENTS
Configured TeamCity with AWS to start and stop images with TeamCity agents on-
demand based on the queued builds.
32
DEPLOYMENT OVERVIEW
33
 Tests similar to those run for PRs are used
 Runs on a production-like beta environment
 Test results are reviewed
 Jenkins job deploys in rolling fashion with zero downtime
DEPLOY TESTING
34
PROD DEPLOY PIPELINE
Checkout
SCM
Schedule
Icinga
Downtime
DB
Migrations
Deploy UIs
Deploy
Thrift
Post
Actions
Instance
Auto Scaling Group
Auto Scaling Group
Instance InstanceInstance
Instance InstanceInstance
35
MONITORING
36
 Integrate performance tests into the PR process
 Run security scanning as part of PRs
 Remove reliance on release testing
 Microservices!
WHAT’S NEXT?
37
 Large Monolithic applications are complicated!
 They create unnecessary dependencies
 They are hard to scale vertically and horizontally
 Overall velocity and speed is hindered
WHY MICROSERVICES?
38
 Define organizational standards for designing, developing, testing and
deploying microservices
 Use out of the box solutions as much as possible
 Build new features as microservices alongside the monolith
 Migrate existing features to microservices when necessary
GREAT, NOW WHAT?
39
MICROSERVICE CI/CD
Jenkins
Dev Kubernetes Cluster
(1) a PR is opened against
a branch in GitHub
(2) Jenkins runs tests against that branch, if
successful changes are merged
(3) Jenkins runs tests against the head of features, if successful
artifacts are published to Nexus and the Docker registry
(4) Engineers can deploy their service manually to the development
Kubernetes cluster for manual validation during development
Prod Kubernetes Cluster
(5) Deployments to the production Kubernetes cluster are
triggered manually
E2E TESTS PERF TESTS
SCALE
TESTS
(6) E2E, performance and scale tests are run in a "blue"
environment and if successful the service is switched to "green"
Nexus
Docker
Registry
CD Tool
LINTING UNIT TESTS
CONTRACT
TESTS
CODE
COVERAGE
PUBLISH
ARTIFACTS
GitHub
Jenkins
LINTING UNIT TESTS
CONTRACT
TESTS
CODE
COVERAGE
OPEN PR
40
· Daily monolith deploys
· Frequent microservice deploys
· Deliver bug fixes and new features faster
· Fewer bugs in production
· Continued adoption of microservices
WHERE WE ARE TODAY
41
QUESTIONS?

Más contenido relacionado

La actualidad más candente

From Continuous integration to Continuous Delivery with TeamCity
From Continuous integration to Continuous Delivery with TeamCityFrom Continuous integration to Continuous Delivery with TeamCity
From Continuous integration to Continuous Delivery with TeamCitySergey Pak
 
Showdown CI/CD - TeamCity
Showdown CI/CD - TeamCityShowdown CI/CD - TeamCity
Showdown CI/CD - TeamCityBoyan Mihaylov
 
Continuous Integration with Bamboo for Salesforce
Continuous Integration with Bamboo for SalesforceContinuous Integration with Bamboo for Salesforce
Continuous Integration with Bamboo for SalesforceKlea Kolaric
 
Bamboo Continuous Integration Server - Brief
Bamboo Continuous Integration Server - BriefBamboo Continuous Integration Server - Brief
Bamboo Continuous Integration Server - BriefEllen Feaheny
 
BizTalk ALM (Toon Vanhoutte @ Integration Monday)
BizTalk ALM (Toon Vanhoutte @ Integration Monday)BizTalk ALM (Toon Vanhoutte @ Integration Monday)
BizTalk ALM (Toon Vanhoutte @ Integration Monday)Codit
 
QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration
QConSP 2014 - Continuous Delivery - Part 03 - Continuous IntegrationQConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration
QConSP 2014 - Continuous Delivery - Part 03 - Continuous IntegrationRodrigo Russo
 
Continuous integration using atlassian bamboo
Continuous integration using atlassian bambooContinuous integration using atlassian bamboo
Continuous integration using atlassian bambooAlexander Masalov
 
Continuous deployment steve povilaitis
Continuous deployment   steve povilaitisContinuous deployment   steve povilaitis
Continuous deployment steve povilaitisSteve Povilaitis
 
Sps monaco vincent biret spfx devops
Sps monaco vincent biret spfx devopsSps monaco vincent biret spfx devops
Sps monaco vincent biret spfx devopsVincent Biret
 
Continuous Integration: A Case Study
Continuous Integration: A Case StudyContinuous Integration: A Case Study
Continuous Integration: A Case StudyIndicThreads
 
Keeping Your CI/CD Pipeline as Fast as It Needs to Be
Keeping Your CI/CD Pipeline as Fast as It Needs to BeKeeping Your CI/CD Pipeline as Fast as It Needs to Be
Keeping Your CI/CD Pipeline as Fast as It Needs to BeAbraham Marin-Perez
 
Trunk-Based Development and Toggling
Trunk-Based Development and TogglingTrunk-Based Development and Toggling
Trunk-Based Development and TogglingBryan Liu
 
Continuous integration
Continuous integrationContinuous integration
Continuous integrationamscanne
 
Enhancing Your Workflow with Environment Hub
Enhancing Your Workflow with Environment HubEnhancing Your Workflow with Environment Hub
Enhancing Your Workflow with Environment HubSalesforce Developers
 

La actualidad más candente (20)

From Continuous integration to Continuous Delivery with TeamCity
From Continuous integration to Continuous Delivery with TeamCityFrom Continuous integration to Continuous Delivery with TeamCity
From Continuous integration to Continuous Delivery with TeamCity
 
Showdown CI/CD - TeamCity
Showdown CI/CD - TeamCityShowdown CI/CD - TeamCity
Showdown CI/CD - TeamCity
 
Team City
Team CityTeam City
Team City
 
Continuous Integration with Bamboo for Salesforce
Continuous Integration with Bamboo for SalesforceContinuous Integration with Bamboo for Salesforce
Continuous Integration with Bamboo for Salesforce
 
Bamboo Continuous Integration Server - Brief
Bamboo Continuous Integration Server - BriefBamboo Continuous Integration Server - Brief
Bamboo Continuous Integration Server - Brief
 
BizTalk ALM (Toon Vanhoutte @ Integration Monday)
BizTalk ALM (Toon Vanhoutte @ Integration Monday)BizTalk ALM (Toon Vanhoutte @ Integration Monday)
BizTalk ALM (Toon Vanhoutte @ Integration Monday)
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration
QConSP 2014 - Continuous Delivery - Part 03 - Continuous IntegrationQConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration
QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration
 
Continuous integration using atlassian bamboo
Continuous integration using atlassian bambooContinuous integration using atlassian bamboo
Continuous integration using atlassian bamboo
 
Continuous deployment steve povilaitis
Continuous deployment   steve povilaitisContinuous deployment   steve povilaitis
Continuous deployment steve povilaitis
 
Sps monaco vincent biret spfx devops
Sps monaco vincent biret spfx devopsSps monaco vincent biret spfx devops
Sps monaco vincent biret spfx devops
 
Continuous Integration: A Case Study
Continuous Integration: A Case StudyContinuous Integration: A Case Study
Continuous Integration: A Case Study
 
Devops | CICD Pipeline
Devops | CICD PipelineDevops | CICD Pipeline
Devops | CICD Pipeline
 
Jenkins
JenkinsJenkins
Jenkins
 
CICD by Teerapat
CICD by TeerapatCICD by Teerapat
CICD by Teerapat
 
Keeping Your CI/CD Pipeline as Fast as It Needs to Be
Keeping Your CI/CD Pipeline as Fast as It Needs to BeKeeping Your CI/CD Pipeline as Fast as It Needs to Be
Keeping Your CI/CD Pipeline as Fast as It Needs to Be
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Trunk-Based Development and Toggling
Trunk-Based Development and TogglingTrunk-Based Development and Toggling
Trunk-Based Development and Toggling
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Enhancing Your Workflow with Environment Hub
Enhancing Your Workflow with Environment HubEnhancing Your Workflow with Environment Hub
Enhancing Your Workflow with Environment Hub
 

Similar a Continuous Integration and Delivery using TeamCity and Jenkins

Build it, Test it, Ship it: Continuous Delivery at Turner Broadcasting System...
Build it, Test it, Ship it: Continuous Delivery at Turner Broadcasting System...Build it, Test it, Ship it: Continuous Delivery at Turner Broadcasting System...
Build it, Test it, Ship it: Continuous Delivery at Turner Broadcasting System...Atlassian
 
Quality in a Square. K8s-native Quality Assurance of Microservices with Testkube
Quality in a Square. K8s-native Quality Assurance of Microservices with TestkubeQuality in a Square. K8s-native Quality Assurance of Microservices with Testkube
Quality in a Square. K8s-native Quality Assurance of Microservices with TestkubeQAware GmbH
 
Quadratisch. Praktisch. Gut. K8s-native Quality Assurance mit Testkube @ Java...
Quadratisch. Praktisch. Gut. K8s-native Quality Assurance mit Testkube @ Java...Quadratisch. Praktisch. Gut. K8s-native Quality Assurance mit Testkube @ Java...
Quadratisch. Praktisch. Gut. K8s-native Quality Assurance mit Testkube @ Java...QAware GmbH
 
Continuous Delivery Applied
Continuous Delivery AppliedContinuous Delivery Applied
Continuous Delivery AppliedExcella
 
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)Mike McGarr
 
Agile Bodensee - Testautomation & Continuous Delivery Workshop
Agile Bodensee - Testautomation & Continuous Delivery WorkshopAgile Bodensee - Testautomation & Continuous Delivery Workshop
Agile Bodensee - Testautomation & Continuous Delivery WorkshopMichael Palotas
 
Driving Systems Stability & Delivery Agility through DevOps [Decoding DevOps ...
Driving Systems Stability & Delivery Agility through DevOps [Decoding DevOps ...Driving Systems Stability & Delivery Agility through DevOps [Decoding DevOps ...
Driving Systems Stability & Delivery Agility through DevOps [Decoding DevOps ...InfoSeption
 
Continuous integration for se group meeting
Continuous integration for se group meetingContinuous integration for se group meeting
Continuous integration for se group meetingSergii Shmarkatiuk
 
TMF2014 CI-CD Workshop Michael Palotas
TMF2014 CI-CD Workshop Michael PalotasTMF2014 CI-CD Workshop Michael Palotas
TMF2014 CI-CD Workshop Michael PalotasKJR
 
Test Automation NYC 2014
Test Automation NYC 2014Test Automation NYC 2014
Test Automation NYC 2014Kishore Bhatia
 
Continuous Delivery Applied (AgileDC)
Continuous Delivery Applied (AgileDC)Continuous Delivery Applied (AgileDC)
Continuous Delivery Applied (AgileDC)Mike McGarr
 
AzureDay Kyiv 2016 Release Management
AzureDay Kyiv 2016 Release ManagementAzureDay Kyiv 2016 Release Management
AzureDay Kyiv 2016 Release ManagementSergii Kryshtop
 
Introduction to Continuous Integration
Introduction to Continuous IntegrationIntroduction to Continuous Integration
Introduction to Continuous IntegrationZahra Golmirzaei
 
No Test without Integration - final
No Test without Integration - finalNo Test without Integration - final
No Test without Integration - finalAndre Verschelling
 
Modernizing Testing as Apps Re-Architect
Modernizing Testing as Apps Re-ArchitectModernizing Testing as Apps Re-Architect
Modernizing Testing as Apps Re-ArchitectDevOps.com
 
Continuous delivery applied (DC CI User Group)
Continuous delivery applied (DC CI User Group)Continuous delivery applied (DC CI User Group)
Continuous delivery applied (DC CI User Group)Mike McGarr
 
Continuous delivery applied (RJUG)
Continuous delivery applied (RJUG)Continuous delivery applied (RJUG)
Continuous delivery applied (RJUG)Mike McGarr
 

Similar a Continuous Integration and Delivery using TeamCity and Jenkins (20)

Build it, Test it, Ship it: Continuous Delivery at Turner Broadcasting System...
Build it, Test it, Ship it: Continuous Delivery at Turner Broadcasting System...Build it, Test it, Ship it: Continuous Delivery at Turner Broadcasting System...
Build it, Test it, Ship it: Continuous Delivery at Turner Broadcasting System...
 
TCE Automation
TCE AutomationTCE Automation
TCE Automation
 
Quality in a Square. K8s-native Quality Assurance of Microservices with Testkube
Quality in a Square. K8s-native Quality Assurance of Microservices with TestkubeQuality in a Square. K8s-native Quality Assurance of Microservices with Testkube
Quality in a Square. K8s-native Quality Assurance of Microservices with Testkube
 
Quadratisch. Praktisch. Gut. K8s-native Quality Assurance mit Testkube @ Java...
Quadratisch. Praktisch. Gut. K8s-native Quality Assurance mit Testkube @ Java...Quadratisch. Praktisch. Gut. K8s-native Quality Assurance mit Testkube @ Java...
Quadratisch. Praktisch. Gut. K8s-native Quality Assurance mit Testkube @ Java...
 
Continuous Delivery Applied
Continuous Delivery AppliedContinuous Delivery Applied
Continuous Delivery Applied
 
Continuous Delivery Applied
Continuous Delivery AppliedContinuous Delivery Applied
Continuous Delivery Applied
 
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
 
Agile Bodensee - Testautomation & Continuous Delivery Workshop
Agile Bodensee - Testautomation & Continuous Delivery WorkshopAgile Bodensee - Testautomation & Continuous Delivery Workshop
Agile Bodensee - Testautomation & Continuous Delivery Workshop
 
Driving Systems Stability & Delivery Agility through DevOps [Decoding DevOps ...
Driving Systems Stability & Delivery Agility through DevOps [Decoding DevOps ...Driving Systems Stability & Delivery Agility through DevOps [Decoding DevOps ...
Driving Systems Stability & Delivery Agility through DevOps [Decoding DevOps ...
 
Continuous integration for se group meeting
Continuous integration for se group meetingContinuous integration for se group meeting
Continuous integration for se group meeting
 
Kubernetes + Jenkins X: a Cloud Native Approach
Kubernetes + Jenkins X: a Cloud Native ApproachKubernetes + Jenkins X: a Cloud Native Approach
Kubernetes + Jenkins X: a Cloud Native Approach
 
TMF2014 CI-CD Workshop Michael Palotas
TMF2014 CI-CD Workshop Michael PalotasTMF2014 CI-CD Workshop Michael Palotas
TMF2014 CI-CD Workshop Michael Palotas
 
Test Automation NYC 2014
Test Automation NYC 2014Test Automation NYC 2014
Test Automation NYC 2014
 
Continuous Delivery Applied (AgileDC)
Continuous Delivery Applied (AgileDC)Continuous Delivery Applied (AgileDC)
Continuous Delivery Applied (AgileDC)
 
AzureDay Kyiv 2016 Release Management
AzureDay Kyiv 2016 Release ManagementAzureDay Kyiv 2016 Release Management
AzureDay Kyiv 2016 Release Management
 
Introduction to Continuous Integration
Introduction to Continuous IntegrationIntroduction to Continuous Integration
Introduction to Continuous Integration
 
No Test without Integration - final
No Test without Integration - finalNo Test without Integration - final
No Test without Integration - final
 
Modernizing Testing as Apps Re-Architect
Modernizing Testing as Apps Re-ArchitectModernizing Testing as Apps Re-Architect
Modernizing Testing as Apps Re-Architect
 
Continuous delivery applied (DC CI User Group)
Continuous delivery applied (DC CI User Group)Continuous delivery applied (DC CI User Group)
Continuous delivery applied (DC CI User Group)
 
Continuous delivery applied (RJUG)
Continuous delivery applied (RJUG)Continuous delivery applied (RJUG)
Continuous delivery applied (RJUG)
 

Último

Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
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 AutomationSafe Software
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 

Último (20)

Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
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
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 

Continuous Integration and Delivery using TeamCity and Jenkins

  • 2. 2  Introduction  Continuous Integration Overview  Reforming Continuous Integration at Conductor  Common Issues and Mitigations  Deployment Overview  Microservices at Conductor  Q and A AGENDA
  • 5. 5 “The practice of integrating and testing source code continuously in an automated fashion” WHAT IS CONTINUOUS INTEGRATION?
  • 6. 6  Minimize the duration and effort required by each integration episode  Be able to deliver a product version suitable for release at any moment OBJECTIVES
  • 7. 7  Maintain a single source repository  Automate the build  Make Your build self-testing  Keep the build Fast  Test in a clone of the production environment  Automate deployment PRACTICES OF CONTINUOUS INTEGRATION
  • 8. 8 QUALITY GATES Static Code Analysis Unit Tests Integration Tests Functional UI Tests Performance Tests
  • 9. 9 REFORMING CI AT CONDUCTOR
  • 10. 10 · Choose and setup a CI tool · Build and configure Testing Environment · Build a Continuous Integration pipeline · Collect statistics and metrics MILESTONES / GOALS
  • 11. 11  Choose and setup a CI tool · Build and configure Testing Environment · Build a Continuous Integration pipeline · Collect statistics and metrics MILESTONES / GOALS
  • 14. 14 Choose and setup a CI tool  Build and configure Testing Environment · Build a Continuous Integration pipeline · Collect statistics and metrics MILESTONES / GOALS
  • 15. 15  Easy to spin up and maintain  Immutable and disposable Infrastructure  Production-like  Cost effective  Environment agnostic TEST ENVIRONMENT REQUIREMENTS
  • 17. 17 CURRENT TEST ENVIRONMENT PBE Searchlight ZooKeeper WireMock MySQL Thrift Selenium Grid Node Node NodeHub
  • 18. 18 CONTINUOUS INTEGRATION ARCHITECTURE GitHub Docker Registry TeamCity Master Nexus TeamCity Agent Selenium Grid PBE
  • 19. 19 Choose and setup a CI tool Build and configure Testing Environment  Build a Continuous Integration pipeline · Collect statistics and metrics MILESTONES / GOALS
  • 20. 20 PULL REQUEST WORKFLOW Open PR Unit and Integration Tests Jasmine and Karma Tests Linting Launch Selenium Grid Launch PBE Feature Tests Merge PR
  • 22. 22 Choose and setup a CI tool Build and configure Testing Environment Build a Continuous Integration pipeline  Collect statistics and metrics MILESTONES / GOALS
  • 23. 23  “require branches to be up to date before merging” is disabled in Github  To mitigate conflicts we run a “heartbeat” workflow against master every 4 hours  Posts build status into Slack dev channels  PRs are paused in the case of failure PR HEARTBEAT
  • 26. 26 Choose and setup a CI tool Build and configure Testing Environment Build a Continuous Integration pipeline Collect statistics and metrics MILESTONES / GOALS
  • 27. 27 COMMON ISSUES AND MITIGATIONS
  • 28. 28  Inconsistent behavior (flaky tests, code, infrastructure, etc.)  Differences in production and PBE environments  AWS is having a bad day COMMON BUILD PROBLEMS
  • 29. 29 FLAKY TESTS AND HOW WE MITIGATE THEM Validate artifacts Launch Selenium Grid Launch PBE Rerun Failures Terminate Resources Green Check PR
  • 30. 30  Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications.  It groups containers that make up an application into logical units for easy management and discovery. TEST ENVIRONMENTS ON KUBERNETES Kubernetes Cluster Selenium Grid Hub Node Node Node Searchlight ZooKeeper WireMock MySQL Thrift PBE Selenium Grid Hub Node Node Node Searchlight ZooKeeper WireMock MySQL Thrift PBE
  • 31. 31 TC CLOUD AGENTS Configured TeamCity with AWS to start and stop images with TeamCity agents on- demand based on the queued builds.
  • 33. 33  Tests similar to those run for PRs are used  Runs on a production-like beta environment  Test results are reviewed  Jenkins job deploys in rolling fashion with zero downtime DEPLOY TESTING
  • 34. 34 PROD DEPLOY PIPELINE Checkout SCM Schedule Icinga Downtime DB Migrations Deploy UIs Deploy Thrift Post Actions Instance Auto Scaling Group Auto Scaling Group Instance InstanceInstance Instance InstanceInstance
  • 36. 36  Integrate performance tests into the PR process  Run security scanning as part of PRs  Remove reliance on release testing  Microservices! WHAT’S NEXT?
  • 37. 37  Large Monolithic applications are complicated!  They create unnecessary dependencies  They are hard to scale vertically and horizontally  Overall velocity and speed is hindered WHY MICROSERVICES?
  • 38. 38  Define organizational standards for designing, developing, testing and deploying microservices  Use out of the box solutions as much as possible  Build new features as microservices alongside the monolith  Migrate existing features to microservices when necessary GREAT, NOW WHAT?
  • 39. 39 MICROSERVICE CI/CD Jenkins Dev Kubernetes Cluster (1) a PR is opened against a branch in GitHub (2) Jenkins runs tests against that branch, if successful changes are merged (3) Jenkins runs tests against the head of features, if successful artifacts are published to Nexus and the Docker registry (4) Engineers can deploy their service manually to the development Kubernetes cluster for manual validation during development Prod Kubernetes Cluster (5) Deployments to the production Kubernetes cluster are triggered manually E2E TESTS PERF TESTS SCALE TESTS (6) E2E, performance and scale tests are run in a "blue" environment and if successful the service is switched to "green" Nexus Docker Registry CD Tool LINTING UNIT TESTS CONTRACT TESTS CODE COVERAGE PUBLISH ARTIFACTS GitHub Jenkins LINTING UNIT TESTS CONTRACT TESTS CODE COVERAGE OPEN PR
  • 40. 40 · Daily monolith deploys · Frequent microservice deploys · Deliver bug fixes and new features faster · Fewer bugs in production · Continued adoption of microservices WHERE WE ARE TODAY