SlideShare a Scribd company logo
1 of 40
Download to read offline
Why / How / When
Do I need
CONTINUOS
DELIVERY?
Product Developer, E-conomic (Ciklum)
Trainer, XP Injection
beletsky.net
@alexbeletsky
github.com/alexanderbeletsky
Why
How
When
The story of one project

Very simple GTD web application

.NET technological stack based

VPS hosted

Nothing fancy, seriously
•Prepare release branch and merge all required changes there
•Update version in uppercut.config
•Commit changes to SCM
•
Run build.bat
•
FTP package to deployment server
•RDP to deployment server
•Unpackage .zip content to temp folder
•Manually backup staging database
•Stop Stage Web site in IIS manager
•
Run migration scripts for staging database
•
Run deployment scripts for staging environment
•
Run Stage Web site in IIS manager
•
Test manually that on staging server, that build works fine
•If something missed (note it is 60% of all cases) go to 1
•Manually backup production database
•Stop Production Web site in IIS manager
•Run migration scripts for production database
•
Run deployment scripts for production environment
•
Run Production Web site in IIS manager
•Test manually that on production server, that build works fine
Delivery Script ...
If it FAILS in a MIDDLE
— REPEAT
Lucky day: 0.5 h
Bad day: 2 h
Read those figures as:
My customers suffer for 2 hours once in
2 weeks, just becase I do update
And by the way...

It's just takes too much developers time

It's boring

Sooner or later you start to hate
deployments
For bussiness people and
managers

“Time-to-Market” factor is very low

Feedback cycle is very long

Customer dissatisfaction is very high
Why
How
When
Let's define our
TERMINOLOGY
Deployment != Delivery
Deployment: product IS availble
Delivery: product IS availble for users
Deployment first
Delivery after
All you have to know,
the secret formula of
Continuous Deployment
(Integration + Deployment) *
Continuous = Continuous
Deployment
Integration is for:
fetching latest sources
build all product configuration items
run unit tests
run functional tests
generate documentation
package all artifacts
Deployment is for:
update test servers
1. Build and deploy locally with one click
2. Define SCM model based
3. Run it continuosly
Recipe of Success:

Build and tests execution

Binaries versioning

SCM labeling

Database migration

Web application deployment
Step 1 - Build and Deploy

Build and tests execution

Binaries versioning

SCM labeling

Database migration

Web application deployment
Step 1 - Build and Deploy
Solved by Chuck Norris tools
UppercuT batch build framework
RoundhousE database migrations
DropicK application deployment
Meet Chuck Norris Tools
UppercuT
Easy to use
Configurable by XML
Supports config for different environment
RoundhousE
Easy to use
Supports MS SQL, MySQL, Postgress
Migration by SQL Scripts
DropkicK
Deployment script as C# code
Support for services and sites
Different plans
Available on a Github
> deploy.bat LOCAL
> deploy.bat STAGING
> deploy.bat PRODUCTION
Step 1 - Build and Deploy
ACCOMPLISHED

DVCS are simply rule (Git, HG)

TRUNK is production ready

Keep interations in branches

Keep features in branches
Step 2 - Define SCM model
Ideal branches count = 2
master
develop
Typical branches count >= 2
master
develop
release
hotfix
Branch per Environment Layout
Step 2 - Define SCM model
ACCOMPLISHED
> git checkout develop
> git merge --no-ff myfeature
> git branch -d myfeature
> git push origin develop

Availability of Build Server

SCM build triggering

Automatically run deployment script

Roll out application to production
Step 3 - Run it continuously

Fork of famous Hudson project

Open source

Java based

Easy start, easy go

Tons of available plugins
Say 'Hello' to Jenkins
All configuration could be
done in UI
Jenkins Instance is deployed
for each environment
Build/Deployment continuosly
triggered by SCM
As soon as Staging “Looks
Alright”, deploy to production
> git checkout master
> git merge develop
> git tag -a 1.2
> git push origin master
Deployment is nothing more
as pushing changes to
origin/master
Step 3 - Run it continuosly
ACCOMPLISHED
Changes are picked up, built, tested
and deployed automatically
Why
How
When
As sooner as better
And?
Results:

Going live time improved 45x

Site down time reduced 300x

No more iterations, Kanban

Staging is updating with every push

Setup and forget
THANK YOU!
beletsky.net
@alexbeletsky
github.com/alexanderbeletsky

More Related Content

What's hot

What's hot (20)

Jenkins Pipeline 101 and TCI - presentation and workshop
Jenkins Pipeline 101 and TCI - presentation and workshopJenkins Pipeline 101 and TCI - presentation and workshop
Jenkins Pipeline 101 and TCI - presentation and workshop
 
Jenkins
JenkinsJenkins
Jenkins
 
Jenkins pipeline as code
Jenkins pipeline as codeJenkins pipeline as code
Jenkins pipeline as code
 
Atlassian Bamboo Feature Overview
Atlassian Bamboo Feature OverviewAtlassian Bamboo Feature Overview
Atlassian Bamboo Feature Overview
 
Jenkins
JenkinsJenkins
Jenkins
 
Continuous integration in games development
Continuous integration in games developmentContinuous integration in games development
Continuous integration in games development
 
Codecoon - A technical Case Study
Codecoon - A technical Case StudyCodecoon - A technical Case Study
Codecoon - A technical Case Study
 
Hacking Jenkins
Hacking JenkinsHacking Jenkins
Hacking Jenkins
 
Jenkins presentation
Jenkins presentationJenkins presentation
Jenkins presentation
 
Continuous Delivery and Infrastructure as Code
Continuous Delivery and Infrastructure as CodeContinuous Delivery and Infrastructure as Code
Continuous Delivery and Infrastructure as Code
 
Continuous delivery with open source tools
Continuous delivery with open source toolsContinuous delivery with open source tools
Continuous delivery with open source tools
 
(GAM404) Gaming DevOps: Scopely's Continuous Deployment Pipeline | AWS re:Inv...
(GAM404) Gaming DevOps: Scopely's Continuous Deployment Pipeline | AWS re:Inv...(GAM404) Gaming DevOps: Scopely's Continuous Deployment Pipeline | AWS re:Inv...
(GAM404) Gaming DevOps: Scopely's Continuous Deployment Pipeline | AWS re:Inv...
 
Supermondays: Jenkins CI lightning talk
Supermondays: Jenkins CI lightning talkSupermondays: Jenkins CI lightning talk
Supermondays: Jenkins CI lightning talk
 
Pipeline as code using Jenkins -Ministry of Testing
Pipeline as code using Jenkins -Ministry of TestingPipeline as code using Jenkins -Ministry of Testing
Pipeline as code using Jenkins -Ministry of Testing
 
CI and CD with Jenkins
CI and CD with JenkinsCI and CD with Jenkins
CI and CD with Jenkins
 
Jenkins Pipeline Tutorial | Continuous Delivery Pipeline Using Jenkins | DevO...
Jenkins Pipeline Tutorial | Continuous Delivery Pipeline Using Jenkins | DevO...Jenkins Pipeline Tutorial | Continuous Delivery Pipeline Using Jenkins | DevO...
Jenkins Pipeline Tutorial | Continuous Delivery Pipeline Using Jenkins | DevO...
 
Michigan IT Symposium 2017 - CI/CD Workflow Tutorial
Michigan IT Symposium 2017 - CI/CD Workflow TutorialMichigan IT Symposium 2017 - CI/CD Workflow Tutorial
Michigan IT Symposium 2017 - CI/CD Workflow Tutorial
 
vodQA(Pune) 2018 - Docker in Testing
vodQA(Pune) 2018 - Docker in TestingvodQA(Pune) 2018 - Docker in Testing
vodQA(Pune) 2018 - Docker in Testing
 
vodQA(Pune) 2018 - Visual testing of web apps in headless environment manis...
vodQA(Pune) 2018 - Visual testing of web apps in headless environment   manis...vodQA(Pune) 2018 - Visual testing of web apps in headless environment   manis...
vodQA(Pune) 2018 - Visual testing of web apps in headless environment manis...
 
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
 

Similar to Саша Белецкий "Continuous Delivery в продуктовой разработке"

Continuous deployment steve povilaitis
Continuous deployment   steve povilaitisContinuous deployment   steve povilaitis
Continuous deployment steve povilaitis
Steve Povilaitis
 
Build automation best practices
Build automation best practicesBuild automation best practices
Build automation best practices
Code Mastery
 
DCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing Environment
DCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing EnvironmentDCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing Environment
DCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing Environment
Docker, Inc.
 

Similar to Саша Белецкий "Continuous Delivery в продуктовой разработке" (20)

DWX 2023 - Datenbank-Schema Deployment im Kubernetes Release
DWX 2023 - Datenbank-Schema Deployment im Kubernetes ReleaseDWX 2023 - Datenbank-Schema Deployment im Kubernetes Release
DWX 2023 - Datenbank-Schema Deployment im Kubernetes Release
 
Cloud-powered Continuous Integration and Deployment architectures - Jinesh Varia
Cloud-powered Continuous Integration and Deployment architectures - Jinesh VariaCloud-powered Continuous Integration and Deployment architectures - Jinesh Varia
Cloud-powered Continuous Integration and Deployment architectures - Jinesh Varia
 
[20200720]cloud native develoment - Nelson Lin
[20200720]cloud native develoment - Nelson Lin[20200720]cloud native develoment - Nelson Lin
[20200720]cloud native develoment - Nelson Lin
 
Rock Solid WordPress
Rock Solid WordPressRock Solid WordPress
Rock Solid WordPress
 
HOW TO DRONE.IO IN CI/CD WORLD
HOW TO DRONE.IO IN CI/CD WORLDHOW TO DRONE.IO IN CI/CD WORLD
HOW TO DRONE.IO IN CI/CD WORLD
 
CI/CD Development in Kubernetes - Skaffold
CI/CD Development in Kubernetes -  SkaffoldCI/CD Development in Kubernetes -  Skaffold
CI/CD Development in Kubernetes - Skaffold
 
Enabling Hybrid Workflows with Docker/Mesos @Orbitz
Enabling Hybrid Workflows with Docker/Mesos @OrbitzEnabling Hybrid Workflows with Docker/Mesos @Orbitz
Enabling Hybrid Workflows with Docker/Mesos @Orbitz
 
Getting to Walk with DevOps
Getting to Walk with DevOpsGetting to Walk with DevOps
Getting to Walk with DevOps
 
DockerCon SF 2015: Docker at Lyft
DockerCon SF 2015: Docker at LyftDockerCon SF 2015: Docker at Lyft
DockerCon SF 2015: Docker at Lyft
 
Docker - Demo on PHP Application deployment
Docker - Demo on PHP Application deployment Docker - Demo on PHP Application deployment
Docker - Demo on PHP Application deployment
 
Deploying software at Scale
Deploying software at ScaleDeploying software at Scale
Deploying software at Scale
 
Automated Build using teamcity
Automated Build using teamcityAutomated Build using teamcity
Automated Build using teamcity
 
Automating That "Other" OS
Automating That "Other" OSAutomating That "Other" OS
Automating That "Other" OS
 
Best practices for developing your Magento Commerce on Cloud
Best practices for developing your Magento Commerce on CloudBest practices for developing your Magento Commerce on Cloud
Best practices for developing your Magento Commerce on Cloud
 
Continuous deployment steve povilaitis
Continuous deployment   steve povilaitisContinuous deployment   steve povilaitis
Continuous deployment steve povilaitis
 
Build automation best practices
Build automation best practicesBuild automation best practices
Build automation best practices
 
CI/CD on AWS: Deploy Everything All the Time | AWS Public Sector Summit 2016
CI/CD on AWS: Deploy Everything All the Time | AWS Public Sector Summit 2016CI/CD on AWS: Deploy Everything All the Time | AWS Public Sector Summit 2016
CI/CD on AWS: Deploy Everything All the Time | AWS Public Sector Summit 2016
 
CI/CD on AWS Deploy Everything All the Time
CI/CD on AWS Deploy Everything All the TimeCI/CD on AWS Deploy Everything All the Time
CI/CD on AWS Deploy Everything All the Time
 
Drupal 8 DevOps . Profile and SQL flows.
Drupal 8 DevOps . Profile and SQL flows.Drupal 8 DevOps . Profile and SQL flows.
Drupal 8 DevOps . Profile and SQL flows.
 
DCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing Environment
DCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing EnvironmentDCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing Environment
DCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing Environment
 

More from Agile Base Camp

Алексей Колупаев "За что ещё платят менеджеру?"
Алексей Колупаев "За что ещё платят менеджеру?"Алексей Колупаев "За что ещё платят менеджеру?"
Алексей Колупаев "За что ещё платят менеджеру?"
Agile Base Camp
 
Александр Белецкий "Архитектура Javascript приложений"
 Александр Белецкий "Архитектура Javascript приложений" Александр Белецкий "Архитектура Javascript приложений"
Александр Белецкий "Архитектура Javascript приложений"
Agile Base Camp
 
Сергей Кудряшов "Делайте продукт и ничего более"
Сергей Кудряшов "Делайте продукт и ничего более"Сергей Кудряшов "Делайте продукт и ничего более"
Сергей Кудряшов "Делайте продукт и ничего более"
Agile Base Camp
 
Максим Ткачук "Hard Rock Design"
Максим Ткачук "Hard Rock Design"Максим Ткачук "Hard Rock Design"
Максим Ткачук "Hard Rock Design"
Agile Base Camp
 
Daniel Lewis "How to build a motivational system"
Daniel Lewis "How to build a motivational system"Daniel Lewis "How to build a motivational system"
Daniel Lewis "How to build a motivational system"
Agile Base Camp
 
Мark Phillips "Intoduction to Silicon Valley"
Мark Phillips "Intoduction to Silicon Valley"Мark Phillips "Intoduction to Silicon Valley"
Мark Phillips "Intoduction to Silicon Valley"
Agile Base Camp
 
JDaniel Lewis "How to build a motivational system"
JDaniel Lewis "How to build a motivational system"JDaniel Lewis "How to build a motivational system"
JDaniel Lewis "How to build a motivational system"
Agile Base Camp
 
Алексей Колупаев "Неочевидная разница между фальстартом, стартапом и страпоном"
Алексей Колупаев "Неочевидная разница между фальстартом, стартапом и страпоном"Алексей Колупаев "Неочевидная разница между фальстартом, стартапом и страпоном"
Алексей Колупаев "Неочевидная разница между фальстартом, стартапом и страпоном"
Agile Base Camp
 
Боремся со сложностью по-функциональному
Боремся со сложностью по-функциональномуБоремся со сложностью по-функциональному
Боремся со сложностью по-функциональному
Agile Base Camp
 
Brad Hoover "Differences between building a consumer vs. enterprise product"
Brad Hoover  "Differences between building a consumer vs. enterprise product"Brad Hoover  "Differences between building a consumer vs. enterprise product"
Brad Hoover "Differences between building a consumer vs. enterprise product"
Agile Base Camp
 
Сергей Кудряшов "Небольшие команды побеждают мир"
Сергей Кудряшов "Небольшие команды побеждают мир"Сергей Кудряшов "Небольшие команды побеждают мир"
Сергей Кудряшов "Небольшие команды побеждают мир"
Agile Base Camp
 
Решение коммуникативных проблем в распределенных командах
Решение коммуникативных проблем в распределенных командахРешение коммуникативных проблем в распределенных командах
Решение коммуникативных проблем в распределенных командах
Agile Base Camp
 
Игорь Лужанский - Динамика развития отношений в команде разработчиков
Игорь Лужанский - Динамика развития отношений в команде разработчиковИгорь Лужанский - Динамика развития отношений в команде разработчиков
Игорь Лужанский - Динамика развития отношений в команде разработчиков
Agile Base Camp
 
Nadia Zemskova - Invention of bicycle
Nadia Zemskova - Invention of bicycleNadia Zemskova - Invention of bicycle
Nadia Zemskova - Invention of bicycle
Agile Base Camp
 
Yuriy malyi testinginscrumagile
Yuriy malyi testinginscrumagileYuriy malyi testinginscrumagile
Yuriy malyi testinginscrumagile
Agile Base Camp
 
Доклад Гапонова "За двумя требованиями погонишься"
Доклад Гапонова "За двумя требованиями погонишься"Доклад Гапонова "За двумя требованиями погонишься"
Доклад Гапонова "За двумя требованиями погонишься"
Agile Base Camp
 

More from Agile Base Camp (20)

Алексей Колупаев "За что ещё платят менеджеру?"
Алексей Колупаев "За что ещё платят менеджеру?"Алексей Колупаев "За что ещё платят менеджеру?"
Алексей Колупаев "За что ещё платят менеджеру?"
 
Александр Белецкий "Архитектура Javascript приложений"
 Александр Белецкий "Архитектура Javascript приложений" Александр Белецкий "Архитектура Javascript приложений"
Александр Белецкий "Архитектура Javascript приложений"
 
Сергей Кудряшов "Делайте продукт и ничего более"
Сергей Кудряшов "Делайте продукт и ничего более"Сергей Кудряшов "Делайте продукт и ничего более"
Сергей Кудряшов "Делайте продукт и ничего более"
 
Максим Ткачук "Hard Rock Design"
Максим Ткачук "Hard Rock Design"Максим Ткачук "Hard Rock Design"
Максим Ткачук "Hard Rock Design"
 
Daniel Lewis "How to build a motivational system"
Daniel Lewis "How to build a motivational system"Daniel Lewis "How to build a motivational system"
Daniel Lewis "How to build a motivational system"
 
Мark Phillips "Intoduction to Silicon Valley"
Мark Phillips "Intoduction to Silicon Valley"Мark Phillips "Intoduction to Silicon Valley"
Мark Phillips "Intoduction to Silicon Valley"
 
JDaniel Lewis "How to build a motivational system"
JDaniel Lewis "How to build a motivational system"JDaniel Lewis "How to build a motivational system"
JDaniel Lewis "How to build a motivational system"
 
Алексей Колупаев "Неочевидная разница между фальстартом, стартапом и страпоном"
Алексей Колупаев "Неочевидная разница между фальстартом, стартапом и страпоном"Алексей Колупаев "Неочевидная разница между фальстартом, стартапом и страпоном"
Алексей Колупаев "Неочевидная разница между фальстартом, стартапом и страпоном"
 
Боремся со сложностью по-функциональному
Боремся со сложностью по-функциональномуБоремся со сложностью по-функциональному
Боремся со сложностью по-функциональному
 
Brad Hoover "Differences between building a consumer vs. enterprise product"
Brad Hoover  "Differences between building a consumer vs. enterprise product"Brad Hoover  "Differences between building a consumer vs. enterprise product"
Brad Hoover "Differences between building a consumer vs. enterprise product"
 
Сергей Кудряшов "Небольшие команды побеждают мир"
Сергей Кудряшов "Небольшие команды побеждают мир"Сергей Кудряшов "Небольшие команды побеждают мир"
Сергей Кудряшов "Небольшие команды побеждают мир"
 
Решение коммуникативных проблем в распределенных командах
Решение коммуникативных проблем в распределенных командахРешение коммуникативных проблем в распределенных командах
Решение коммуникативных проблем в распределенных командах
 
Deadline management
Deadline managementDeadline management
Deadline management
 
Paper prototyping
Paper prototypingPaper prototyping
Paper prototyping
 
Роман Чернышев “Организационные риски в коммерческих проектах”
Роман Чернышев “Организационные риски в коммерческих проектах”Роман Чернышев “Организационные риски в коммерческих проектах”
Роман Чернышев “Организационные риски в коммерческих проектах”
 
Игорь Лужанский - Динамика развития отношений в команде разработчиков
Игорь Лужанский - Динамика развития отношений в команде разработчиковИгорь Лужанский - Динамика развития отношений в команде разработчиков
Игорь Лужанский - Динамика развития отношений в команде разработчиков
 
Nadia Zemskova - Invention of bicycle
Nadia Zemskova - Invention of bicycleNadia Zemskova - Invention of bicycle
Nadia Zemskova - Invention of bicycle
 
Yuriy malyi testinginscrumagile
Yuriy malyi testinginscrumagileYuriy malyi testinginscrumagile
Yuriy malyi testinginscrumagile
 
Testing in Scrum - Yuriy Malyi
Testing in Scrum - Yuriy Malyi Testing in Scrum - Yuriy Malyi
Testing in Scrum - Yuriy Malyi
 
Доклад Гапонова "За двумя требованиями погонишься"
Доклад Гапонова "За двумя требованиями погонишься"Доклад Гапонова "За двумя требованиями погонишься"
Доклад Гапонова "За двумя требованиями погонишься"
 

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)

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
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
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
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
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
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
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
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
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
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
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
 
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
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 

Саша Белецкий "Continuous Delivery в продуктовой разработке"

  • 1. Why / How / When Do I need CONTINUOS DELIVERY?
  • 2. Product Developer, E-conomic (Ciklum) Trainer, XP Injection beletsky.net @alexbeletsky github.com/alexanderbeletsky
  • 4. The story of one project  Very simple GTD web application  .NET technological stack based  VPS hosted  Nothing fancy, seriously
  • 5. •Prepare release branch and merge all required changes there •Update version in uppercut.config •Commit changes to SCM • Run build.bat • FTP package to deployment server •RDP to deployment server •Unpackage .zip content to temp folder •Manually backup staging database •Stop Stage Web site in IIS manager • Run migration scripts for staging database • Run deployment scripts for staging environment • Run Stage Web site in IIS manager • Test manually that on staging server, that build works fine •If something missed (note it is 60% of all cases) go to 1 •Manually backup production database •Stop Production Web site in IIS manager •Run migration scripts for production database • Run deployment scripts for production environment • Run Production Web site in IIS manager •Test manually that on production server, that build works fine Delivery Script ...
  • 6. If it FAILS in a MIDDLE — REPEAT Lucky day: 0.5 h Bad day: 2 h
  • 7. Read those figures as: My customers suffer for 2 hours once in 2 weeks, just becase I do update
  • 8. And by the way...  It's just takes too much developers time  It's boring  Sooner or later you start to hate deployments
  • 9. For bussiness people and managers  “Time-to-Market” factor is very low  Feedback cycle is very long  Customer dissatisfaction is very high
  • 12. Deployment != Delivery Deployment: product IS availble Delivery: product IS availble for users
  • 14. All you have to know, the secret formula of Continuous Deployment
  • 15. (Integration + Deployment) * Continuous = Continuous Deployment
  • 16. Integration is for: fetching latest sources build all product configuration items run unit tests run functional tests generate documentation package all artifacts Deployment is for: update test servers
  • 17. 1. Build and deploy locally with one click 2. Define SCM model based 3. Run it continuosly Recipe of Success:
  • 18.  Build and tests execution  Binaries versioning  SCM labeling  Database migration  Web application deployment Step 1 - Build and Deploy
  • 19.  Build and tests execution  Binaries versioning  SCM labeling  Database migration  Web application deployment Step 1 - Build and Deploy Solved by Chuck Norris tools
  • 20. UppercuT batch build framework RoundhousE database migrations DropicK application deployment Meet Chuck Norris Tools
  • 21. UppercuT Easy to use Configurable by XML Supports config for different environment RoundhousE Easy to use Supports MS SQL, MySQL, Postgress Migration by SQL Scripts DropkicK Deployment script as C# code Support for services and sites Different plans
  • 22. Available on a Github
  • 23. > deploy.bat LOCAL > deploy.bat STAGING > deploy.bat PRODUCTION Step 1 - Build and Deploy ACCOMPLISHED
  • 24.  DVCS are simply rule (Git, HG)  TRUNK is production ready  Keep interations in branches  Keep features in branches Step 2 - Define SCM model
  • 25. Ideal branches count = 2 master develop Typical branches count >= 2 master develop release hotfix
  • 27. Step 2 - Define SCM model ACCOMPLISHED > git checkout develop > git merge --no-ff myfeature > git branch -d myfeature > git push origin develop
  • 28.  Availability of Build Server  SCM build triggering  Automatically run deployment script  Roll out application to production Step 3 - Run it continuously
  • 29.  Fork of famous Hudson project  Open source  Java based  Easy start, easy go  Tons of available plugins Say 'Hello' to Jenkins
  • 30. All configuration could be done in UI
  • 31. Jenkins Instance is deployed for each environment
  • 33. As soon as Staging “Looks Alright”, deploy to production
  • 34. > git checkout master > git merge develop > git tag -a 1.2 > git push origin master Deployment is nothing more as pushing changes to origin/master
  • 35. Step 3 - Run it continuosly ACCOMPLISHED Changes are picked up, built, tested and deployed automatically
  • 37. As sooner as better
  • 38. And?
  • 39. Results:  Going live time improved 45x  Site down time reduced 300x  No more iterations, Kanban  Staging is updating with every push  Setup and forget