SlideShare une entreprise Scribd logo
1  sur  40
Continuous Delivery
with Jenkins
Who we are
Javatar open source activity
https://github.com/JavatarPro
● Real life use cases, where CI/CD could help
● Theory and best practices from CI/CD experts
● Demo with implementation of some best practices
● Declarative pipeline examples
● Features that already implemented
● Features that we plan to do
● Q&A
Agenda
DevOps is deploying on prod manually
WhendevOpsisonsickleave
Database backward compatibility
Database backward compatibility
DevOps resources are bottleneck
DevOps resources are bottleneck
Let’s try to debug
Use Release Tag in VCS
Contract testing
It is hard to maintain knowledge
about best practices
for all programming languages
and different build tools
Context
HP LaserJet Firmware use case
Jenkins Declarative Pipeline (DP)
Declarative pipeline is open source
Jenkins Global Shared Library,
free of charge for commercial use
DP is implementation of best practices
https://martinfowler.com/books/continuousDelivery.html
https://www.thoughtworks.com/continuous-delivery
Build Quality In
“Cease dependence on mass
inspection to achieve quality.
Improve the process and
build quality into the product
in the first place.”
W. Edwards Deming
Why Continuous Delivery?
● Make releases painless, low risk events
● Reduce time to market
● Increase software quality and stability
● Reduce cost of ongoing software development
● Increase customer and employee satisfaction
○ Creates fast feedback loops
Key Principles of Continuous Delivery
● Build quality in
● Work in small batches
● Computers do repetitive task, people solve problems
● Relentlessly pursue continuous improvement
● Everyone is responsible
Deployment Pipeline Practices
● Only build your packages once
● Deploy the same way to every environment
● Smoke test your deployments
● Keep your environments similar
● If anything fails, stop the line!
Low Risk Releases are Incremental
● Feature toggles
● Blue-green deployments
● Canary releases
● Dark Launching
● Production Immune System
If someone threw a server out
of the window, how long would
it take to recreate it?
Infrastructure stability
https://martinfowler.com/bliki/PhoenixServer.html
https://github.com/netflix/SimianArmy
How Stable Prod Env Is?
DEMO TIME
Declarative Pipeline config example
Declarative Pipeline config example
Declarative Pipeline: service suit
Declarative Pipeline: library suit
How to securely deploy to production
Features that already implemented
● Release suits: service, ui, library, service-with-db
● Build types: maven, npm, python, php, sencha
● Integration of your system/ui tests
● Integration with Sonar
● works with gitlab, github, bitbucket (git & mercurial)
● works with Mesos & Marathon
Features that we plan to do
● Blue-green deployments
● Secure deployment to production
● Production Immune System check adoption
● Performance tests easy integration
● Adopt service orchestration with Kubernetes
● Canary releases
HP LaserJet Firmware use case
Technology adoption life cycle
Technology adoption life cycle
Takeaways
● Let’s standardize free of chage CI/CD implementation
● Share with us your feedback what is missing
● Use Declarative Pipeline on your project or sub project
● Contribute with Javatar to Declarative Pipeline
● Experiment with Continuous improvements
https://github.com/JavatarPro
https://www.thoughtworks.com/continuous-delivery
https://martinfowler.com/bliki/PhoenixServer.html
https://github.com/netflix/SimianArmy
https://martinfowler.com/books/continuousDelivery.html
pipeline@javatar.pr
o

Contenu connexe

Tendances

Automated testing on steroids – Trick for managing test data using Docker sna...
Automated testing on steroids – Trick for managing test data using Docker sna...Automated testing on steroids – Trick for managing test data using Docker sna...
Automated testing on steroids – Trick for managing test data using Docker sna...
Lucas Jellema
 

Tendances (20)

Jenkins pipeline as code
Jenkins pipeline as codeJenkins pipeline as code
Jenkins pipeline as code
 
Continuous Testing
Continuous TestingContinuous Testing
Continuous Testing
 
Continuous operations in AWS
Continuous operations in AWSContinuous operations in AWS
Continuous operations in AWS
 
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
 
How to write a Dockerfile
How to write a DockerfileHow to write a Dockerfile
How to write a Dockerfile
 
Continuous Delivery at Snyk
Continuous Delivery at SnykContinuous Delivery at Snyk
Continuous Delivery at Snyk
 
Continuous Integration with Maven for Android apps
Continuous Integration with Maven for Android appsContinuous Integration with Maven for Android apps
Continuous Integration with Maven for Android apps
 
PuppetConf 2017: Puppet Development Kit: A Seamless Workflow for Module Devel...
PuppetConf 2017: Puppet Development Kit: A Seamless Workflow for Module Devel...PuppetConf 2017: Puppet Development Kit: A Seamless Workflow for Module Devel...
PuppetConf 2017: Puppet Development Kit: A Seamless Workflow for Module Devel...
 
PuppetConf 2016: Keynote: Pulling the Strings to Containerize Your Life - Sco...
PuppetConf 2016: Keynote: Pulling the Strings to Containerize Your Life - Sco...PuppetConf 2016: Keynote: Pulling the Strings to Containerize Your Life - Sco...
PuppetConf 2016: Keynote: Pulling the Strings to Containerize Your Life - Sco...
 
Safe deployments with Blue-Green and Spinnaker
Safe deployments with Blue-Green and SpinnakerSafe deployments with Blue-Green and Spinnaker
Safe deployments with Blue-Green and Spinnaker
 
Discovery delivery 中国软件技术大会2011
Discovery delivery 中国软件技术大会2011Discovery delivery 中国软件技术大会2011
Discovery delivery 中国软件技术大会2011
 
Containerised Testing at Demonware : PyCon Ireland 2016
Containerised Testing at Demonware : PyCon Ireland 2016Containerised Testing at Demonware : PyCon Ireland 2016
Containerised Testing at Demonware : PyCon Ireland 2016
 
dotnetsheff: Continuous delivery with Team City and Octopus Deploy
dotnetsheff: Continuous delivery with Team City and Octopus Deploydotnetsheff: Continuous delivery with Team City and Octopus Deploy
dotnetsheff: Continuous delivery with Team City and Octopus Deploy
 
Flash Camp Chennai - Build automation of Flex and AIR applications
Flash Camp Chennai - Build automation of Flex and AIR applicationsFlash Camp Chennai - Build automation of Flex and AIR applications
Flash Camp Chennai - Build automation of Flex and AIR applications
 
DevOps Practices @Pipedrive
DevOps Practices @PipedriveDevOps Practices @Pipedrive
DevOps Practices @Pipedrive
 
Automated testing on steroids – Trick for managing test data using Docker sna...
Automated testing on steroids – Trick for managing test data using Docker sna...Automated testing on steroids – Trick for managing test data using Docker sna...
Automated testing on steroids – Trick for managing test data using Docker sna...
 
Jenkins review buddy
Jenkins review buddyJenkins review buddy
Jenkins review buddy
 
Gitlab ci-cd
Gitlab ci-cdGitlab ci-cd
Gitlab ci-cd
 
Grunt Continuous Development of the Front End Tier
Grunt Continuous Development of the Front End TierGrunt Continuous Development of the Front End Tier
Grunt Continuous Development of the Front End Tier
 
Virtual Puppet User Group: Puppet Development Kit (PDK) and Puppet Platform 6...
Virtual Puppet User Group: Puppet Development Kit (PDK) and Puppet Platform 6...Virtual Puppet User Group: Puppet Development Kit (PDK) and Puppet Platform 6...
Virtual Puppet User Group: Puppet Development Kit (PDK) and Puppet Platform 6...
 

Similaire à Continuous Delivery with Jenkins declarative pipeline XPDays-2018-12-08

Succesful testing-continuous-delivery-testnet
Succesful testing-continuous-delivery-testnetSuccesful testing-continuous-delivery-testnet
Succesful testing-continuous-delivery-testnet
Harald Rietman
 

Similaire à Continuous Delivery with Jenkins declarative pipeline XPDays-2018-12-08 (20)

Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
 
XP Days Ukraine 2019
XP Days Ukraine 2019XP Days Ukraine 2019
XP Days Ukraine 2019
 
Deploying software at Scale
Deploying software at ScaleDeploying software at Scale
Deploying software at Scale
 
Delivery Pipelines as a First Class Citizen @deliverAgile2019
Delivery Pipelines as a First Class Citizen @deliverAgile2019Delivery Pipelines as a First Class Citizen @deliverAgile2019
Delivery Pipelines as a First Class Citizen @deliverAgile2019
 
Perforce on Tour 2015 - Optimising the Developer Pipeline: Deliver Faster & ...
Perforce on Tour 2015 -  Optimising the Developer Pipeline: Deliver Faster & ...Perforce on Tour 2015 -  Optimising the Developer Pipeline: Deliver Faster & ...
Perforce on Tour 2015 - Optimising the Developer Pipeline: Deliver Faster & ...
 
Continuous integration for open source distros v 3.0
Continuous integration for open source distros v 3.0Continuous integration for open source distros v 3.0
Continuous integration for open source distros v 3.0
 
Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...
Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...
Continues Integration and Continuous Delivery with Azure DevOps - Deploy Anyt...
 
PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...
PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...
PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...
 
Succesful testing-continuous-delivery-testnet
Succesful testing-continuous-delivery-testnetSuccesful testing-continuous-delivery-testnet
Succesful testing-continuous-delivery-testnet
 
Successful testing continuous delivery (Testnet 2013)
Successful testing continuous delivery (Testnet 2013)Successful testing continuous delivery (Testnet 2013)
Successful testing continuous delivery (Testnet 2013)
 
Atmosphere 2018: Yury Tsarev - TEST DRIVEN INFRASTRUCTURE FOR HIGHLY PERFORMI...
Atmosphere 2018: Yury Tsarev - TEST DRIVEN INFRASTRUCTURE FOR HIGHLY PERFORMI...Atmosphere 2018: Yury Tsarev - TEST DRIVEN INFRASTRUCTURE FOR HIGHLY PERFORMI...
Atmosphere 2018: Yury Tsarev - TEST DRIVEN INFRASTRUCTURE FOR HIGHLY PERFORMI...
 
ContainerCon - Test Driven Infrastructure
ContainerCon - Test Driven InfrastructureContainerCon - Test Driven Infrastructure
ContainerCon - Test Driven Infrastructure
 
First Steps to DevOps
First Steps to DevOpsFirst Steps to DevOps
First Steps to DevOps
 
Devops CI-CD pipeline with Containers
Devops CI-CD pipeline with ContainersDevops CI-CD pipeline with Containers
Devops CI-CD pipeline with Containers
 
Devops
DevopsDevops
Devops
 
Software Delivery in 2016 - A Continuous Delivery Approach
Software Delivery in 2016 - A Continuous Delivery ApproachSoftware Delivery in 2016 - A Continuous Delivery Approach
Software Delivery in 2016 - A Continuous Delivery Approach
 
Prod-Like Integration Testing for Distributed Containerized Applications
Prod-Like Integration Testing for Distributed Containerized ApplicationsProd-Like Integration Testing for Distributed Containerized Applications
Prod-Like Integration Testing for Distributed Containerized Applications
 
Developers Testing - Girl Code at bloomon
Developers Testing - Girl Code at bloomonDevelopers Testing - Girl Code at bloomon
Developers Testing - Girl Code at bloomon
 
Efficient Parallel Testing with Docker by Laura Frank
Efficient Parallel Testing with Docker by Laura FrankEfficient Parallel Testing with Docker by Laura Frank
Efficient Parallel Testing with Docker by Laura Frank
 
Anatomy of a Build Pipeline
Anatomy of a Build PipelineAnatomy of a Build Pipeline
Anatomy of a Build Pipeline
 

Dernier

Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
chiefasafspells
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
masabamasaba
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
VictoriaMetrics
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
masabamasaba
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
masabamasaba
 

Dernier (20)

What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...
WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...
WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...
 
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
 
BUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptxBUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptx
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptx
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
 
WSO2CON 2024 Slides - Unlocking Value with AI
WSO2CON 2024 Slides - Unlocking Value with AIWSO2CON 2024 Slides - Unlocking Value with AI
WSO2CON 2024 Slides - Unlocking Value with AI
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
 

Continuous Delivery with Jenkins declarative pipeline XPDays-2018-12-08

Notes de l'éditeur

  1. B Добрий день, ця доповідь про Jenkins Declarative Pipeline Open Source Tool для Continuous Delivery for µServices Хочемо поділитись своїм досвідом налаштування Continuous Delivery на проекті. DP наразі використовується успішно на декількох проектах
  2. B Мене звати Зора Борис, Я працював System Architect ом на декількох проектах. У вільний час open соршу з Javatar community S Привіт я Сергій Петриченко, працюю Архітектором в Golden Dimension, Також співпрацюю з Javatar community S На данний момент наший головний приорітет в open сорсі реалізувати CI/CD best practices для µServices в Jenkins Declarative Pipeline Метою якого являється мінімізація часу на перехід на Continuous Delivery
  3. S Вся наша робота знаходиться у відкритому доступі на github Якщо у Вас є пропозиції по функціоналу створюйте, будь-ласка, тікети Якщо хтось хоче зайти під час презентації на github, можете відсканить QRcode B sdfasdf
  4. B Наша Agenda Ми почнемо з реальних ситуацій які були у нашому досвіді Потім перейдемо до теорії. Що рекомендують експерти? Покажемо демо Declarative Pipeline S Також подивимось приклади конфігурації Declarative Pipeline Переглянемо повний список, що на даний момент ми встигли реалізувати і може бути використаним на Ваших проектах Ще пройдемось по списку, що плануємо реалізувати найближчим часом Останньою зупинкою буде відповідь на Ваші запитання Якщо це не те що Ви очікували від почути, ще не пізно пошукати іншу доповідь
  5. B Так виглядає робота devOps по мануальному деплою мікросервісів в прод На high load проекті Підніміть, будь-ласка, руки у кого на проекті деплой на прод автоматичний. (10 сек чекаємо) Дякую, десь % аудиторії
  6. S Якщо Ваш devOps захворів, як виглядає Ваше делівері на прод? Знайома ситуація? Давайте перейдемо до реальний use case-ів
  7. B Так Давайте перейдемо до реальних use case-ів Database backward compatibility У Вас новий реліз сервіса з великою реляційною базою даних QA все відтестили і Ви собі сидите на грумінгу ні про що не хвилюєтесь, А що може піти не так? Але прибігає збентежений девопс менеджер і терміново просить підійти до хлопців які деплоять на прод (Prod deploy failed according to Out of memory issue Rollback is not possible because db has not backward compatible change Restore from dump is time consuming, huge penalty would apply ) issue: you deploy service in production and it fails to start with out of memory error you try to switch to previous version, but service does not start because flyway make some changes and previous version could not start with new database schema. Your customer has downtime. Your devOps add to µService 200 Gb of RAM and this does not help, somebody from devs read all rows from the table into memory (on dev env this works because table has less rows) Workaround: devOps deleted all cron jobs (after some other guess tries) and this help to investigate offline, and resolve issue Best practice: verify database compatibility with previous 3 versions, esspecially on monolith with huge volumes
  8. B Вам кажуть, що сервіс не піднявся і падає з out of memory, навіть якщо йому дати 200 Gb RAM, Ви не довго думаючи пропонуєте ролбек, у нас же все протещено! Ролбек уже пробували, сервіс не піднімається, В логах пише, що немає колонки з потрібним типом. В цей момент Ви розумієте повну картину: при релізі нової версії, на базу даних накатились скрипти flyway, які містили не backward compatible зміни, а саме “Change column type” Коли відбувається ролбек, то версія бази даних залишається новою Проти якої працює стай код, який очікував інший тип колонки На проекті є Database change strategy, але це автоматично не тестувалось Правильним рішенням було б додати нову колонку і тимчасово писати в обидві, а читати з нової а потім через 3 релізи видалить стару колонку Цього зроблено не було Залишається варіант підйому бази даних з дампу, Що потребує більшого даунтайму сервіса А у Вас скажімо підписаний SLA із замовником, якщо даунтайм перевищує 20 хв на місяць штраф $65k (цифри навмисно змінені, щоб не порушить NDA) (Prod deploy failed according to Out of memory issue Rollback is not possible because db has not backward compatible change Restore from dump is time consuming, huge penalty would apply ) issue: you deploy service in production and it fails to start with out of memory error you try to switch to previous version, but service does not start because flyway make some changes and previous version could not start with new database schema. Your customer has downtime. Your devOps add to µService 200 Gb of RAM and this does not help, somebody from devs read all rows from the table into memory (on dev env this works because table has less rows) Workaround: devOps deleted all cron jobs (after some other guess tries) and this help to investigate offline, and resolve issue Best practice: verify database compatibility with previous 3 versions, esspecially on monolith with huge volumes
  9. S Коли у Вас на проекті не вистачає devOps ресурсів, починається надлишкова синхронізація та змагання між командами За часту у Ваша таска не завжди найприорітетніша, тому Вам приходиться відкаласти її та переключитись на іншу задачу, що змушує Вас тримати 2 контекста Пул не закритих задач Вашої команди збільшується Навіть якщо задача може бути виконана Вами за 10 хв, але на проекті чітко відмежовані відповідальності, у Вас просто не має прав на це Team has meeting about if devOps has free time to deploy µService on env and into prod 5 members discuss what they will do if devOps has no time because he fixes/tune kafka for prod CTO says that money only of devs (features) not for devOps control dev & qa env: issue: you have task to create some feature flow, for this purposes you need to create 2 additional µServices, each have it''s own database. You have one devOps in the project, who in on vacation now. Nobody except him has rights to env setup workaround: you ask devOps on his vacation that you have some job for him, and you 3-rd in the line, because all other are also depend on him best practice: dev & qa env should be controlled by dev, qa & devOps. To create new service you should not spend a lot of time, it should be 2 minutes job.
  10. S Таким чином devOps стає ботелнеком У цій ситуації всі залишаються не задоволеними devOps - працює з рутиною і йому немає часу підняти голову на автоматизацію Developer - змінює контексти між тасками та не може вчасно віддати їх на тестування
  11. B Іноді проблема не тривіальна і з логів мало що зрозуміло Проте на мікросервісній архітектурі, де в одному бізнес флоу може бути задіяно десяток мікросервісів важко задебажить Підняти локально - тяжко і часо-затратно або навіть не підйомно по ресурсам bug reproduce or debug µService env: issue: you have 6 µServices and 1 monolith in one feature flow, each service has own database and some of them connected to message broker, all of them connected to service registry, cloud configuration & all request goes though api-gateway (zuul) workaround: you write docker compose and hope you have enough cpu & ram to handle best practice: you can pass cloud config url and your service though vpn will be as a part of µService network, all services can see you and send request, and your service can see them all as well
  12. S У вас баг в проді з первним µService, stack-trace вказує на строки коду, Але вони не відповідають поточній версії, а таг ніхто не зробив Цей сервіс вже 2 роки в проді, але його версія 1.0-SNAPSHOT І в репозиторію лише один бранч - master Щоб знайти відповідну ревізію Ви уточнююєте дату викатки в прод у devOps і шукаєте коміт до цієї дати Лише після цього ви знаходите вірну строку в якій відбулась помилка revision tag: issue: you have issue in some µService, stack-trace points to some line in the code and you can not find it because release tag was not created and this service 3 years in production with version 1.0-SNAPSHOT with only one branch - master workaround: with devOps we find when it was deployed and try to find appropriate commit to checkout that version best practice: µService that now is in production has /info url with release version that corresponds to release tag in VCS
  13. B У Вас є публічний API, який Ви також використовуєте самі internally Коли відбуваються зміни в цей API зазвичай Ви підправляєте внутнішній сервіс, що його використовує А про екстернал систему в основному памятали колишні співробітники, Але тестів на неї не написали. Нові QA тестують лише внутрішню взаємодію та апрувлять реліз. Після нього devOps в проді відловлюють помилки від екстернал клієнтів Service changed with one of downstream services But all other external clients failed, because api not supported old requests System/contract tests in pipeline
  14. S За часту devOps не привязується до якоїсь мови програмування. На попередньому проекті він міг займаться PHP or Python Для яких компіляція не потрібна та є свої нюанси по деплою на прод. В поточному проекті йому потрібно налаштувать деплоймент процес Для java, groovy or scala, для яких він має розшукати best practices. Це може бути тривалим процесом і не факт, що всі практики будуть задіяні devOps previously deployed only php or python code (no need to compile) Change paradigma when he switched to java/groovy/scala He does not know best practices how to do it and need spend more time to achieve results
  15. B Так виглядало розподілення коштів в HP, До імплементації Continuous Delivery На іновації припадало лише 5% загальних витрат Їхня мета була, збільшити відсоток іновацій в 10 разів Свій шлях вони розписали в книжці Large-Scale Agile Development
  16. 10 min S Для того щоб допомогти в Continuous Delivery for µServices Ми обрали найпопулярніший CI/CD tool - Jenkins Для того щоб розділити sensitive information від CI/CD best practice Вся реалізація пішла в pipeline shared library Вся sensitive інформація залишилсь в .yml файлі що підвантажується Jenkinsfile-ом І вона знаходиться в Вашому приватному репозиторії
  17. B Багато best practices, що ми реалізували можна знайти в книжці Continuous Delivery written by Jez Humble & David Farley Також є непоганий ресурс від компанії thoughtworks, Де і працювали ці хлопці, коли писали цю книгу, Можете перейти по QR коду, якщо комусь цікаві ці ресурси Хто не встиг відсканувати, лінки ми відобразимо ще на останньому слайді
  18. S Як запропонував Edwards Deming, Першочергово потрібно вдосконалити процес та вбудовувати якість в продукт
  19. B Чому Continuous Delivery Зробити релізи безболісними та без ризиковими Пришвидшити випуск нових фіч Підвищити якість та стабільність продукту Зменшити витрати на розробку Підвищити задоволеність як клієнтів так і співробітників За допомогою швидкого фідбеку
  20. S Ключові принципи Continuous Delivery Вбудовувати якість в продукт Працювати маленькими батчами Все що можна автоматизувати - автоматизуйте Невтомно вдосконалювати процес Кожен має бути відповідальним
  21. B Deployment Pipeline Practices Білдіть один раз Деплойте однаково на всі енви Робіть smoke tests Тримайте енви схожими При збоях починайте пайплайн заново
  22. S Low Risk Releases are Incremental Використовуйте фіча флаги, ви зможете швидко відкатиться лише змінивши конфігурацію Blue-green deployments Canary releases Dark Launching - це коли Ви викатили бекенд фічу, яку не бачить ui, потім окремим релізом оновлюєте ui і фіча вже доступна, якщо щось йде не так, можна відкотить ui Production Immune System (про неї на окремому слайді)
  23. B Інфраструктура має бути стабільною Якщо Ваш сервер викинуть у вікно, Скільки часу Вам знадобиться щоб відновити його? Це запитання ставить Мартін Фаулер у статті Phoenix Server свого блогу
  24. We also have all things in vcs We have not implement monitoring yet Automatic self corrects to desired state done by mesos & kubernetes
  25. S/B TODO 1 minutes
  26. S Так виглядає реакція devOps на prod issue після того як всі практики були реалізовані. Бізнес prod issue може взагалі не помітити B ! [емоційно] Це відчуття стабільності After all practices implemented on your CI/CD pipeline You are not afraid anymore
  27. What about security?
  28. It is hard to make fluent CI/CD in entire organization in one shot Probably it would be better to start with Innovators & Early adopters And make POC with them
  29. Let’s make adoption easier
  30. На випадок якщо Вам не сподобалась презентація, Ми вставили ось цього котика, це трішки згладити ситуацію Please ask questions at speaker zone