SlideShare a Scribd company logo
1 of 73
Download to read offline
CONTINUOUS DEPLOYMENT 2.0
PLAYTIME IS OVER
in itPROFESSIONAL PHP SERVICES
‣ CEO and co-founder of in2it
‣ Community leader
‣ OSS contributor
‣ Conference Speaker
‣ Coach at CoderDojo
MICHELANGELO VAN DAM
MICHIEL ROOK
OUR CD WAS INSPIRED BY
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
MICHIEL’S TALK WAS TO SAY THE LEAST…
QUITE CONTROVERSIAL
▸ deploy to master, no branches
▸ pair programming, quick code reviews
▸ 100% code coverage
▸ strangler pattern to replace 10+ year old
legacy app
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
THAT GOT US
THINKING…
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
LEGACY
APPLICATIONS
COMMON FOR ALL CLIENTS:
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
IN2IT PROCESSES?
? ? ?
?
???
?
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
REFACTORING
ADDING FEATURES
REWRITE FROM SCRATCH
TESTING IS HARD
ONLY NEW FEATURES TESTED
LOTS OF WORK
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
SUPER
HERO
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
IN2IT PROCESSES
ONLY MASTER PAIR PROGRAMMING 100% CODE COVERAGE STRANGLER PATTERN
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
IN2IT PROCESSES
ONLY MASTER ❌ PAIR PROGRAMMING 100% CODE COVERAGE STRANGLER PATTERN
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
IN2IT PROCESSES
ONLY MASTER ❌ PAIR PROGRAMMING ✅ 100% CODE COVERAGE STRANGLER PATTERN
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
IN2IT PROCESSES
ONLY MASTER ❌ PAIR PROGRAMMING ✅ 100% CODE COVERAGE ✅ STRANGLER PATTERN
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
IN2IT PROCESSES
ONLY MASTER ❌ PAIR PROGRAMMING ✅ 100% CODE COVERAGE ✅ STRANGLER PATTERN ❌
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
LET’S SEE WHAT WE’RE MISSING
DO WE NEED TO COMMIT TO MASTER?
▸ All PR’s are going into master branch
▸ Every developer has their own GIT repo
▸ Branching for features
▸ Branching for bug fixes
▸ Deployment Master
▸ Integrates one or more dev branches
▸ Pushes it onto master
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
DEVELOPERS WORK LOCALLY ON A PRIVATE GIT REPO
OUR GIT WORKFLOW
DEVELOPER
PRIVATE REPO
DEVELOPER
PRIVATE REPO
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
ONCE DONE, THEY PUSH TO THEIR PUBLIC REPOS
OUR GIT WORKFLOW
DEVELOPER
PRIVATE REPO
DEVELOPER
PRIVATE REPO
DEVELOPER
PUBLIC REPO
DEVELOPER
PUBLIC REPO
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
AND SEND A PULL REQUEST (PR)
OUR GIT WORKFLOW
DEVELOPER
PRIVATE REPO
DEVELOPER
PRIVATE REPO
DEVELOPER
PUBLIC REPO
DEVELOPER
PUBLIC REPO
TEAM REPO
RELEASE BRANCH
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
OUR RELEASE MANAGER MERGES THE CHANGES IN
OUR GIT WORKFLOW
DEVELOPER
PRIVATE REPO
DEVELOPER
PRIVATE REPO
DEVELOPER
PUBLIC REPO
DEVELOPER
PUBLIC REPO
TEAM REPO
MASTER BRANCH
RELEASE MANAGER
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
CI KICKS IN AND DEPLOYS TO TEST/STAGING/PROD
OUR GIT WORKFLOW
DEVELOPER
PRIVATE REPO
DEVELOPER
PRIVATE REPO
DEVELOPER
PUBLIC REPO
DEVELOPER
PUBLIC REPO
TEAM REPO
MASTER BRANCH
RELEASE MANAGERCI
TEST/STAGING/PROD
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
OUR CONCLUSION
COMMITTING STRAIGHT TO MASTER
▸ Will make the role of “Release Master” obsolete
▸ Good for small teams
▸ Speeds up the deployment process
▸ In our case
▸ We work with distributed teams (3-5 people in each team)
▸ Will only work when all features are live from the start (feature flags)
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
LET’S SEE WHAT WE’RE MISSING…
STRANGLER PATTERN
▸ Is a clean way to replace legacy code with
clean, distributed and optimised code.
▸ Requires domain knowledge (especially for
10+ years of evolution of an app)
▸ Creates duplicate functionality during
transitions
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
INCREMENTALLY MIGRATE A LEGACY SYSTEM BY GRADUALLY
REPLACING SPECIFIC PIECES OF FUNCTIONALITY WITH NEW
APPLICATIONS AND SERVICES. AS FEATURES FROM THE LEGACY
SYSTEM ARE REPLACED, THE NEW SYSTEM EVENTUALLY REPLACES
ALL OF THE OLD SYSTEM'S FEATURES, STRANGLING THE OLD
SYSTEM AND ALLOWING YOU TO DECOMMISSION IT.
Microsoft Cloud Architecture
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
LEGACY APPLICATION
NEW
REPLACEMENT
STRANGLER FAÇADE
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
NEW REPLACEMENT
STRANGLER FAÇADE
LEGACY
APPLICATION
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
OUR CONCLUSION
STRANGLING LEGACY CODE
▸ Will take time to replace old with new code
▸ Until ready, duplicated functional will exist
▸ In our case
▸ We need to replace legacy code with better solutions
▸ We can live with duplicated functionality
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
IMPROVING LEGACY
THE PATH TO
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
PEAR LIBS PECL EXTS
FRAMEWORK
X
FRAMEWORK
Y
CUSTOM
LIBS
BUSINESS LOGIC
Monolithic Code Monster
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
WE NEED A BETTER
SOLUTION!
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
PEAR LIBS PECL EXTS
FRAMEWORK
X
FRAMEWORK
Y
CUSTOM
LIBS
BUSINESS LOGIC
Monolithic Code Monster
FUNCTIONAL MICROSERVICE FUNCTIONAL MICROSERVICE
FUNCTIONAL MICROSERVICE FUNCTIONAL MICROSERVICE
FUNCTIONAL MICROSERVICE FUNCTIONAL MICROSERVICE
FUNCTIONAL MICROSERVICE FUNCTIONAL MICROSERVICE
FUNCTIONAL MICROSERVICE FUNCTIONAL MICROSERVICE
Functional Microservices
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
I CAN HEAR YOU ASK:
WHY MICROSERVICES?
▸ Not tied to a single technology
▸ A service per functionality makes it easier to
upgrade without impacting the whole
application
▸ Improved security on application, network and
infrastructure
▸ Easy to scale and extend
▸ Better resilience against failing services
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
MICROSERVICES SIND
SINNVOLL!
Stefan HogdĂśrfer - @shochdoerfer
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
LET’S LOOK IF IT IS A SOLUTION FOR US
PROS EN CONS
Pro Con
Not tied to a single technology Lots of different skillsets
Easy to upgrade/x or add features Lost in forrest of services
Improved security Requires lots of monitoring
Better scalability Expensive*
Improved resilience for failure
(*) The cost lies in the higher number of “instances” and faster network required to run these services
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
MICROSERVICES &
CONTINUOUS DEPLOYMENT
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
GOALS OF CONTINUOUS
DEPLOYMENT?
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
CONTINUOUS DEPLOYMENT CAN BE THOUGHT OF
AS AN EXTENSION OF CONTINUOUS INTEGRATION,
AIMING AT MINIMIZING LEAD TIME, THE TIME
ELAPSED BETWEEN DEVELOPMENT WRITING ONE
NEW LINE OF CODE AND THIS NEW CODE BEING
USED BY LIVE USERS, IN PRODUCTION.
Agile Alliance - agilealliance.com
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
DOING THINGS MORE THAN ONCE LEAD UP TO…
AUTOMATE DEPLOYMENT PROCESSES
▸ A series of actions taken before changes are
put in production
▸ Chained together with fail switch to create a
pipeline
▸ Provides full reports on each step of the
delivery process
▸ Can be optimized over time
▸ Is repeatable
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
COMPUTERS ARE GREAT AT REPETITIVE TASKS!
MINIMIZE LEAD TIME
▸ Through automation, actions are executed
faster in parallel
▸ Any failures will be reported immediately
▸ Any successes will be notified through
▸ E-mail
▸ Wiki
▸ Slack
▸ …
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
STRESS, PANIC, SICKNESS, … ALL HAVE AN IMPACT ON YOUR CONCENTRATION
PREVENTING HUMAN ERROR!
▸ Automation removes human errors
▸ by stress or a “bad” day
▸ Optimized over time
▸ Repeatable for all stages
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
PROGRAMMING
AGREEMENTS
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
COMMIT SMALL, COMMIT OFTEN
Credits to @CalEvans
THE PROGRAMMER’S MANTRA
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
PERFECT WORLD WOULD MAKE THIS POSSIBLE
OPTIMAL COMMIT
▸ creating/updating class (no body)
▸ creating/changing class method (no body)
▸ creating/changing functionality in method
▸ creating/changing config (no body)
▸ …
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
ON THIS PLANET WE ARE SATISFIED WITH THIS
REALISTIC COMMIT
▸ complete a functionality
▸ complete a logic operation
▸ complete a configuration change
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
SMALL AND OFTEN COMMITS BALANCE
PROS EN CONS
Pro Con
Incremental small improvements Many commits for one task
Errors can be reverted quickly Requires change of attitude
Easy to review
Small impact on production code
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
AIM FOR 100% CODE COVERAGE
Michiel Rook - @michielcts
LET’S GO FOR IT!
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
SMALL CHANGES REQUIRE MINIMAL OVERHEAD
COMMIT SMALL WITH 100% COVERAGE
▸ small code change
▸ small test covering all lines
▸ make use of @covers annotation
▸ Run PHPUnit with “--strict-coverage”
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
EXAMPLE OF USING THE @COVERS ANNOTATION
/**
 * Authentication throws exception for too short password
 *
 * @param string $password
 *
 * @covers LoginFormAuthServiceAuthenticationService::__construct
 * @covers LoginFormAuthServiceAuthenticationService::authenticate
 * @dataProvider shortPasswordProvider
 * @expectedException InvalidArgumentException
 */
public function testAuthenticationThrowsExceptionForTooShortPassword(string $password)
{
    $this->validator->expects($this->once())
        ->method('isValid')
        ->willReturn(false);
    $authService = new AuthenticationService(
        $this->validator,
        $this->accountModel,
        $this->accountEntity,
        $this->twoFactorServiceMock
    );
    $authService->authenticate('username', $password, false);
    $this->fail('Authentication service should throw an exception for too short password input');
}
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
EXAMPLE OF USING THE @COVERS ANNOTATION
/**
 * Authentication throws exception for too short password
 *
 * @param string $password
 *
 * @covers LoginFormAuthServiceAuthenticationService::__construct
 * @covers LoginFormAuthServiceAuthenticationService::authenticate
 * @dataProvider shortPasswordProvider
 * @expectedException InvalidArgumentException
 */
public function testAuthenticationThrowsExceptionForTooShortPassword(string $password)
{
    $this->validator->expects($this->once())
        ->method('isValid')
        ->willReturn(false);
    $authService = new AuthenticationService(
        $this->validator,
        $this->accountModel,
        $this->accountEntity,
        $this->twoFactorServiceMock
    );
    $authService->authenticate('username', $password, false);
    $this->fail('Authentication service should throw an exception for too short password input');
}
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
SHOULD WE ADOPT 100% CODE COVERAGE?
PROS EN CONS
Pro Con
Higher quality of code A huge effort
Every line of code is accountable Requires change of attitude
Huge time/money gain in long tail Time intensive
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
THE PIPELINE
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
A COMMON CI/CD SETUP
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
WE CAN DO BETTER!
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
THE BEGINNING OF A BEAUTIFUL STORY
CODE ASSEMBLY STEP
▸ Check out SCM
▸ Optionally install submodules
▸ Composer packages
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
ARE WE GOOD TO GO?
CODE QUALITY STEP
▸ Version checks (are we on latest version?)
▸ Vulnerability checks (CVE’s)*
▸ Unit testing
▸ Static Analysis
(*) See SensioLabs for composer package validation service
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
LET’S PREPARE EVERYTHING LIKE A TRUE CHEF
PROVISIONING STEP
▸ Create a new environment
▸ Package the code and assets
▸ Sign the package with GPG
▸ Deploy the code
▸ Perform DB migrations
▸ Warm-up caches
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
TEST ALL THE THINGS, AND ADD SOME…
RELEASE QUALITY STEP
▸ Integration testing
▸ Acceptance testing
▸ End-to-end testing
▸ Regression testing
▸ Performance testing
▸ Security testing
▸ Resilience testing
▸ Accessibility testing
▸ UX Testing
▸ …
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
TIME TO SHIP IT!!!
DEPLOYMENT STEP
▸ Stop crons, workers and daemons
▸ Phase out old system with new
▸ Put new system in load balancer
▸ Direct portion of traffic to new node
▸ Validate behaviour of new node
▸ Remove old system from load balancer
▸ Validate deployment
▸ Start crons, workers and daemons
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
KNOWING IS GOOD, KNOWING EVERYTHING IS BETTER - DAVE EGGARS “THE CIRCLE”
REPORTING STEP
▸ Generate release notes
▸ Generate user documentation
▸ Notify training dept. of changes
▸ Generate release report/stats
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
WITH PIPELINES YOU HAVE…
ENDLESS POSSIBILITIES TO DEPLOY
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
AND WHEN SOMETHING DOES GOES WRONG…
THE PIPELINE WILL STOP…
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
WE ROLL FORWARD
WHEN FAILURE HAPPENS
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
YOUR TURN
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
TEST IT ALL!
CONTINUOUS DEPLOYMENT
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
SMALL REMINDER
BY DESIGN
▸ Quality
▸ Security
▸ Privacy
▸ Resilience
▸ Accessibility
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
SET AGREEMENTS AS
A TEAM
IN NEED OF STRUCTURE?
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
WITH PIPELINES
SUCCEED EVERY TIME
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
IMPROVE THE
FEEDBACK LOOP
KNOWLEDGE IS KEY!
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
RESOURCES THAT INSPIRED ME…
RECOMMENDED FOR YOU
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
Use
For feedback on this presentation For discussions on this presentation
Use
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
Continuous Deployment 2.0www.in2it.be - @in2itvofin it
QUESTIONS?
ARE THERE ANY
Continuous Deployment 2.0www.in2it.be - @in2itvofin it

More Related Content

What's hot

From Continuous Integration to Continuous Delivery and DevOps
From Continuous Integration to Continuous Delivery and DevOpsFrom Continuous Integration to Continuous Delivery and DevOps
From Continuous Integration to Continuous Delivery and DevOpsLuca Minudel
 
Continuous Deployment To The Cloud @DevoxxPL 2017
Continuous Deployment To The Cloud @DevoxxPL 2017 Continuous Deployment To The Cloud @DevoxxPL 2017
Continuous Deployment To The Cloud @DevoxxPL 2017 Marcin Grzejszczak
 
Continuous Delivery Overview
Continuous Delivery OverviewContinuous Delivery Overview
Continuous Delivery OverviewLuca Minudel
 
Comparing Agile QA Approaches to End-to-End Testing
Comparing Agile QA Approaches to End-to-End TestingComparing Agile QA Approaches to End-to-End Testing
Comparing Agile QA Approaches to End-to-End TestingKatie Chin
 
CI/CD (DevOps) 101
CI/CD (DevOps) 101CI/CD (DevOps) 101
CI/CD (DevOps) 101Hazzim Anaya
 
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...Marcin Grzejszczak
 
Devops certification training course
Devops certification training courseDevops certification training course
Devops certification training courseRadsS1
 
Monitoring 改造計畫:流程觀點
Monitoring 改造計畫:流程觀點Monitoring 改造計畫:流程觀點
Monitoring 改造計畫:流程觀點William Yeh
 
Scaling Up Lookout
Scaling Up LookoutScaling Up Lookout
Scaling Up LookoutLookout
 
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...Sonatype
 
Introduction to CICD
Introduction to CICDIntroduction to CICD
Introduction to CICDKnoldus Inc.
 
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...Edureka!
 
The DevSecOps Builder’s Guide to the CI/CD Pipeline
The DevSecOps Builder’s Guide to the CI/CD PipelineThe DevSecOps Builder’s Guide to the CI/CD Pipeline
The DevSecOps Builder’s Guide to the CI/CD PipelineJames Wickett
 
Transforming Organizations with CI/CD
Transforming Organizations with CI/CDTransforming Organizations with CI/CD
Transforming Organizations with CI/CDCprime
 
Continuous Testing in DevOps
Continuous Testing in DevOpsContinuous Testing in DevOps
Continuous Testing in DevOpsTechWell
 
Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration Amazon Web Services
 
Software development in Formula One: challenges, complexity and struggle for ...
Software development in Formula One: challenges, complexity and struggle for ...Software development in Formula One: challenges, complexity and struggle for ...
Software development in Formula One: challenges, complexity and struggle for ...Luca Minudel
 
PRINCE2 Foundation Slides - Sample
PRINCE2 Foundation Slides - Sample PRINCE2 Foundation Slides - Sample
PRINCE2 Foundation Slides - Sample Frank Turley
 
PRINCE2 Practitioner Classroom slides - Sample
PRINCE2 Practitioner Classroom slides - Sample PRINCE2 Practitioner Classroom slides - Sample
PRINCE2 Practitioner Classroom slides - Sample Frank Turley
 

What's hot (20)

From Continuous Integration to Continuous Delivery and DevOps
From Continuous Integration to Continuous Delivery and DevOpsFrom Continuous Integration to Continuous Delivery and DevOps
From Continuous Integration to Continuous Delivery and DevOps
 
Continuous Deployment To The Cloud @DevoxxPL 2017
Continuous Deployment To The Cloud @DevoxxPL 2017 Continuous Deployment To The Cloud @DevoxxPL 2017
Continuous Deployment To The Cloud @DevoxxPL 2017
 
Continuous Delivery Overview
Continuous Delivery OverviewContinuous Delivery Overview
Continuous Delivery Overview
 
Comparing Agile QA Approaches to End-to-End Testing
Comparing Agile QA Approaches to End-to-End TestingComparing Agile QA Approaches to End-to-End Testing
Comparing Agile QA Approaches to End-to-End Testing
 
CI/CD (DevOps) 101
CI/CD (DevOps) 101CI/CD (DevOps) 101
CI/CD (DevOps) 101
 
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...
 
Devops certification training course
Devops certification training courseDevops certification training course
Devops certification training course
 
Monitoring 改造計畫:流程觀點
Monitoring 改造計畫:流程觀點Monitoring 改造計畫:流程觀點
Monitoring 改造計畫:流程觀點
 
Scaling Up Lookout
Scaling Up LookoutScaling Up Lookout
Scaling Up Lookout
 
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
 
Agile Apps
Agile AppsAgile Apps
Agile Apps
 
Introduction to CICD
Introduction to CICDIntroduction to CICD
Introduction to CICD
 
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
 
The DevSecOps Builder’s Guide to the CI/CD Pipeline
The DevSecOps Builder’s Guide to the CI/CD PipelineThe DevSecOps Builder’s Guide to the CI/CD Pipeline
The DevSecOps Builder’s Guide to the CI/CD Pipeline
 
Transforming Organizations with CI/CD
Transforming Organizations with CI/CDTransforming Organizations with CI/CD
Transforming Organizations with CI/CD
 
Continuous Testing in DevOps
Continuous Testing in DevOpsContinuous Testing in DevOps
Continuous Testing in DevOps
 
Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration
 
Software development in Formula One: challenges, complexity and struggle for ...
Software development in Formula One: challenges, complexity and struggle for ...Software development in Formula One: challenges, complexity and struggle for ...
Software development in Formula One: challenges, complexity and struggle for ...
 
PRINCE2 Foundation Slides - Sample
PRINCE2 Foundation Slides - Sample PRINCE2 Foundation Slides - Sample
PRINCE2 Foundation Slides - Sample
 
PRINCE2 Practitioner Classroom slides - Sample
PRINCE2 Practitioner Classroom slides - Sample PRINCE2 Practitioner Classroom slides - Sample
PRINCE2 Practitioner Classroom slides - Sample
 

Similar to Continuous deployment 2.0

Sahil Lal Software Engineer
Sahil Lal Software EngineerSahil Lal Software Engineer
Sahil Lal Software EngineerSahil Lal
 
Product Management 2.0: Using Confluence to drive company-wide alignment and ...
Product Management 2.0: Using Confluence to drive company-wide alignment and ...Product Management 2.0: Using Confluence to drive company-wide alignment and ...
Product Management 2.0: Using Confluence to drive company-wide alignment and ...Atlassian
 
Defense-Oriented DevOps for Modern Software Development
Defense-Oriented DevOps for Modern Software DevelopmentDefense-Oriented DevOps for Modern Software Development
Defense-Oriented DevOps for Modern Software DevelopmentJames Wickett
 
Defense-Oriented DevOps for Modern Software Development
Defense-Oriented DevOps for Modern Software DevelopmentDefense-Oriented DevOps for Modern Software Development
Defense-Oriented DevOps for Modern Software DevelopmentVMware Tanzu
 
Continuous Deployment: Beyond Continuous Delivery
Continuous Deployment: Beyond Continuous DeliveryContinuous Deployment: Beyond Continuous Delivery
Continuous Deployment: Beyond Continuous DeliveryTimothy Fitz
 
Cloud Native Cost Optimization UCC
Cloud Native Cost Optimization UCCCloud Native Cost Optimization UCC
Cloud Native Cost Optimization UCCAdrian Cockcroft
 
🚀 Here some of those tools which we have used in most web3.0 mobile app devel...
🚀 Here some of those tools which we have used in most web3.0 mobile app devel...🚀 Here some of those tools which we have used in most web3.0 mobile app devel...
🚀 Here some of those tools which we have used in most web3.0 mobile app devel...vickykhan28
 
Beyond Build Pipelines - Continuous Delivery's Messy Reality
Beyond Build Pipelines - Continuous Delivery's Messy RealityBeyond Build Pipelines - Continuous Delivery's Messy Reality
Beyond Build Pipelines - Continuous Delivery's Messy RealityDevOps.com
 
Make it reversible - Stephen O'Brien at Inside Intercom Austin
Make it reversible - Stephen O'Brien at Inside Intercom AustinMake it reversible - Stephen O'Brien at Inside Intercom Austin
Make it reversible - Stephen O'Brien at Inside Intercom AustinIntercom
 
La Redoute DevOps Adoption, A Transformation Journey
La Redoute DevOps Adoption, A Transformation JourneyLa Redoute DevOps Adoption, A Transformation Journey
La Redoute DevOps Adoption, A Transformation JourneyAntoine Craske
 
Introduction to Enterprise 2.0
Introduction to Enterprise 2.0Introduction to Enterprise 2.0
Introduction to Enterprise 2.0David Saitta
 
Chaos to DevOps oreillysacon 2015
Chaos to DevOps  oreillysacon 2015Chaos to DevOps  oreillysacon 2015
Chaos to DevOps oreillysacon 2015Bianca Xue Jiang
 
Hands On Enterprise 2.0
Hands On Enterprise 2.0Hands On Enterprise 2.0
Hands On Enterprise 2.0Fabrizio Martire
 
Enabling application portability with the greatest of ease!
Enabling application portability with the greatest of ease!Enabling application portability with the greatest of ease!
Enabling application portability with the greatest of ease!Ken Owens
 
Microservices the Good Bad and the Ugly
Microservices the Good Bad and the UglyMicroservices the Good Bad and the Ugly
Microservices the Good Bad and the UglyAdrian Cockcroft
 
Go beyond job scheduling
Go beyond job schedulingGo beyond job scheduling
Go beyond job schedulingDavid Resnic
 
DevOps Days Toronto: From 6 Months Waterfall to 1 hour Code Deploys
DevOps Days Toronto: From 6 Months Waterfall to 1 hour Code DeploysDevOps Days Toronto: From 6 Months Waterfall to 1 hour Code Deploys
DevOps Days Toronto: From 6 Months Waterfall to 1 hour Code DeploysAndreas Grabner
 
Denis Cote Networking Presentation
Denis Cote Networking PresentationDenis Cote Networking Presentation
Denis Cote Networking Presentationdenisco
 

Similar to Continuous deployment 2.0 (20)

Sahil Lal Software Engineer
Sahil Lal Software EngineerSahil Lal Software Engineer
Sahil Lal Software Engineer
 
Product Management 2.0: Using Confluence to drive company-wide alignment and ...
Product Management 2.0: Using Confluence to drive company-wide alignment and ...Product Management 2.0: Using Confluence to drive company-wide alignment and ...
Product Management 2.0: Using Confluence to drive company-wide alignment and ...
 
Defense-Oriented DevOps for Modern Software Development
Defense-Oriented DevOps for Modern Software DevelopmentDefense-Oriented DevOps for Modern Software Development
Defense-Oriented DevOps for Modern Software Development
 
Defense-Oriented DevOps for Modern Software Development
Defense-Oriented DevOps for Modern Software DevelopmentDefense-Oriented DevOps for Modern Software Development
Defense-Oriented DevOps for Modern Software Development
 
Continuous Deployment: Beyond Continuous Delivery
Continuous Deployment: Beyond Continuous DeliveryContinuous Deployment: Beyond Continuous Delivery
Continuous Deployment: Beyond Continuous Delivery
 
Cloud Native Cost Optimization UCC
Cloud Native Cost Optimization UCCCloud Native Cost Optimization UCC
Cloud Native Cost Optimization UCC
 
🚀 Here some of those tools which we have used in most web3.0 mobile app devel...
🚀 Here some of those tools which we have used in most web3.0 mobile app devel...🚀 Here some of those tools which we have used in most web3.0 mobile app devel...
🚀 Here some of those tools which we have used in most web3.0 mobile app devel...
 
Beyond Build Pipelines - Continuous Delivery's Messy Reality
Beyond Build Pipelines - Continuous Delivery's Messy RealityBeyond Build Pipelines - Continuous Delivery's Messy Reality
Beyond Build Pipelines - Continuous Delivery's Messy Reality
 
Make it reversible - Stephen O'Brien at Inside Intercom Austin
Make it reversible - Stephen O'Brien at Inside Intercom AustinMake it reversible - Stephen O'Brien at Inside Intercom Austin
Make it reversible - Stephen O'Brien at Inside Intercom Austin
 
Enterprise 2.0
Enterprise 2.0Enterprise 2.0
Enterprise 2.0
 
La Redoute DevOps Adoption, A Transformation Journey
La Redoute DevOps Adoption, A Transformation JourneyLa Redoute DevOps Adoption, A Transformation Journey
La Redoute DevOps Adoption, A Transformation Journey
 
Introduction to Enterprise 2.0
Introduction to Enterprise 2.0Introduction to Enterprise 2.0
Introduction to Enterprise 2.0
 
Chaos to DevOps oreillysacon 2015
Chaos to DevOps  oreillysacon 2015Chaos to DevOps  oreillysacon 2015
Chaos to DevOps oreillysacon 2015
 
Hands On Enterprise 2.0
Hands On Enterprise 2.0Hands On Enterprise 2.0
Hands On Enterprise 2.0
 
Enabling application portability with the greatest of ease!
Enabling application portability with the greatest of ease!Enabling application portability with the greatest of ease!
Enabling application portability with the greatest of ease!
 
Microservices the Good Bad and the Ugly
Microservices the Good Bad and the UglyMicroservices the Good Bad and the Ugly
Microservices the Good Bad and the Ugly
 
Go beyond job scheduling
Go beyond job schedulingGo beyond job scheduling
Go beyond job scheduling
 
What does it cost to develop an app
What does it cost to develop an app What does it cost to develop an app
What does it cost to develop an app
 
DevOps Days Toronto: From 6 Months Waterfall to 1 hour Code Deploys
DevOps Days Toronto: From 6 Months Waterfall to 1 hour Code DeploysDevOps Days Toronto: From 6 Months Waterfall to 1 hour Code Deploys
DevOps Days Toronto: From 6 Months Waterfall to 1 hour Code Deploys
 
Denis Cote Networking Presentation
Denis Cote Networking PresentationDenis Cote Networking Presentation
Denis Cote Networking Presentation
 

More from Michelangelo van Dam

GDPR Art. 25 - Privacy by design and default
GDPR Art. 25 - Privacy by design and defaultGDPR Art. 25 - Privacy by design and default
GDPR Art. 25 - Privacy by design and defaultMichelangelo van Dam
 
Moving from app services to azure functions
Moving from app services to azure functionsMoving from app services to azure functions
Moving from app services to azure functionsMichelangelo van Dam
 
General Data Protection Regulation, a developer's story
General Data Protection Regulation, a developer's storyGeneral Data Protection Regulation, a developer's story
General Data Protection Regulation, a developer's storyMichelangelo van Dam
 
Leveraging a distributed architecture to your advantage
Leveraging a distributed architecture to your advantageLeveraging a distributed architecture to your advantage
Leveraging a distributed architecture to your advantageMichelangelo van Dam
 
Open source for a successful business
Open source for a successful businessOpen source for a successful business
Open source for a successful businessMichelangelo van Dam
 
Decouple your framework now, thank me later
Decouple your framework now, thank me laterDecouple your framework now, thank me later
Decouple your framework now, thank me laterMichelangelo van Dam
 
Deploy to azure in less then 15 minutes
Deploy to azure in less then 15 minutesDeploy to azure in less then 15 minutes
Deploy to azure in less then 15 minutesMichelangelo van Dam
 
Azure and OSS, a match made in heaven
Azure and OSS, a match made in heavenAzure and OSS, a match made in heaven
Azure and OSS, a match made in heavenMichelangelo van Dam
 
Getting hands dirty with php7
Getting hands dirty with php7Getting hands dirty with php7
Getting hands dirty with php7Michelangelo van Dam
 
Zf2 how arrays will save your project
Zf2   how arrays will save your projectZf2   how arrays will save your project
Zf2 how arrays will save your projectMichelangelo van Dam
 
Create, test, secure, repeat
Create, test, secure, repeatCreate, test, secure, repeat
Create, test, secure, repeatMichelangelo van Dam
 
PHPUnit Episode iv.iii: Return of the tests
PHPUnit Episode iv.iii: Return of the testsPHPUnit Episode iv.iii: Return of the tests
PHPUnit Episode iv.iii: Return of the testsMichelangelo van Dam
 
Easily extend your existing php app with an api
Easily extend your existing php app with an apiEasily extend your existing php app with an api
Easily extend your existing php app with an apiMichelangelo van Dam
 
200K+ reasons security is a must
200K+ reasons security is a must200K+ reasons security is a must
200K+ reasons security is a mustMichelangelo van Dam
 

More from Michelangelo van Dam (20)

GDPR Art. 25 - Privacy by design and default
GDPR Art. 25 - Privacy by design and defaultGDPR Art. 25 - Privacy by design and default
GDPR Art. 25 - Privacy by design and default
 
Moving from app services to azure functions
Moving from app services to azure functionsMoving from app services to azure functions
Moving from app services to azure functions
 
Privacy by design
Privacy by designPrivacy by design
Privacy by design
 
DevOps or DevSecOps
DevOps or DevSecOpsDevOps or DevSecOps
DevOps or DevSecOps
 
Privacy by design
Privacy by designPrivacy by design
Privacy by design
 
General Data Protection Regulation, a developer's story
General Data Protection Regulation, a developer's storyGeneral Data Protection Regulation, a developer's story
General Data Protection Regulation, a developer's story
 
Leveraging a distributed architecture to your advantage
Leveraging a distributed architecture to your advantageLeveraging a distributed architecture to your advantage
Leveraging a distributed architecture to your advantage
 
The road to php 7.1
The road to php 7.1The road to php 7.1
The road to php 7.1
 
Open source for a successful business
Open source for a successful businessOpen source for a successful business
Open source for a successful business
 
Decouple your framework now, thank me later
Decouple your framework now, thank me laterDecouple your framework now, thank me later
Decouple your framework now, thank me later
 
Deploy to azure in less then 15 minutes
Deploy to azure in less then 15 minutesDeploy to azure in less then 15 minutes
Deploy to azure in less then 15 minutes
 
Azure and OSS, a match made in heaven
Azure and OSS, a match made in heavenAzure and OSS, a match made in heaven
Azure and OSS, a match made in heaven
 
Getting hands dirty with php7
Getting hands dirty with php7Getting hands dirty with php7
Getting hands dirty with php7
 
Zf2 how arrays will save your project
Zf2   how arrays will save your projectZf2   how arrays will save your project
Zf2 how arrays will save your project
 
Create, test, secure, repeat
Create, test, secure, repeatCreate, test, secure, repeat
Create, test, secure, repeat
 
The Continuous PHP Pipeline
The Continuous PHP PipelineThe Continuous PHP Pipeline
The Continuous PHP Pipeline
 
PHPUnit Episode iv.iii: Return of the tests
PHPUnit Episode iv.iii: Return of the testsPHPUnit Episode iv.iii: Return of the tests
PHPUnit Episode iv.iii: Return of the tests
 
Easily extend your existing php app with an api
Easily extend your existing php app with an apiEasily extend your existing php app with an api
Easily extend your existing php app with an api
 
Your code are my tests
Your code are my testsYour code are my tests
Your code are my tests
 
200K+ reasons security is a must
200K+ reasons security is a must200K+ reasons security is a must
200K+ reasons security is a must
 

Recently uploaded

Energy Awareness training ppt for manufacturing process.pptx
Energy Awareness training ppt for manufacturing process.pptxEnergy Awareness training ppt for manufacturing process.pptx
Energy Awareness training ppt for manufacturing process.pptxsiddharthjain2303
 
Comprehensive energy systems.pdf Comprehensive energy systems.pdf
Comprehensive energy systems.pdf Comprehensive energy systems.pdfComprehensive energy systems.pdf Comprehensive energy systems.pdf
Comprehensive energy systems.pdf Comprehensive energy systems.pdfalene1
 
Levelling - Rise and fall - Height of instrument method
Levelling - Rise and fall - Height of instrument methodLevelling - Rise and fall - Height of instrument method
Levelling - Rise and fall - Height of instrument methodManicka Mamallan Andavar
 
Computer Graphics Introduction, Open GL, Line and Circle drawing algorithm
Computer Graphics Introduction, Open GL, Line and Circle drawing algorithmComputer Graphics Introduction, Open GL, Line and Circle drawing algorithm
Computer Graphics Introduction, Open GL, Line and Circle drawing algorithmDeepika Walanjkar
 
FUNCTIONAL AND NON FUNCTIONAL REQUIREMENT
FUNCTIONAL AND NON FUNCTIONAL REQUIREMENTFUNCTIONAL AND NON FUNCTIONAL REQUIREMENT
FUNCTIONAL AND NON FUNCTIONAL REQUIREMENTSneha Padhiar
 
TechTACÂŽ CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTACÂŽ CFD Report Summary: A Comparison of Two Types of Tubing Anchor CatchersTechTACÂŽ CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTACÂŽ CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catcherssdickerson1
 
Novel 3D-Printed Soft Linear and Bending Actuators
Novel 3D-Printed Soft Linear and Bending ActuatorsNovel 3D-Printed Soft Linear and Bending Actuators
Novel 3D-Printed Soft Linear and Bending ActuatorsResearcher Researcher
 
『澳洲文凭』买麦考瑞大学毕业证书成绩单办理澳洲Macquarie文凭学位证书
『澳洲文凭』买麦考瑞大学毕业证书成绩单办理澳洲Macquarie文凭学位证书『澳洲文凭』买麦考瑞大学毕业证书成绩单办理澳洲Macquarie文凭学位证书
『澳洲文凭』买麦考瑞大学毕业证书成绩单办理澳洲Macquarie文凭学位证书rnrncn29
 
CME 397 - SURFACE ENGINEERING - UNIT 1 FULL NOTES
CME 397 - SURFACE ENGINEERING - UNIT 1 FULL NOTESCME 397 - SURFACE ENGINEERING - UNIT 1 FULL NOTES
CME 397 - SURFACE ENGINEERING - UNIT 1 FULL NOTESkarthi keyan
 
Stork Webinar | APM Transformational planning, Tool Selection & Performance T...
Stork Webinar | APM Transformational planning, Tool Selection & Performance T...Stork Webinar | APM Transformational planning, Tool Selection & Performance T...
Stork Webinar | APM Transformational planning, Tool Selection & Performance T...Stork
 
Gravity concentration_MI20612MI_________
Gravity concentration_MI20612MI_________Gravity concentration_MI20612MI_________
Gravity concentration_MI20612MI_________Romil Mishra
 
Robotics-Asimov's Laws, Mechanical Subsystems, Robot Kinematics, Robot Dynami...
Robotics-Asimov's Laws, Mechanical Subsystems, Robot Kinematics, Robot Dynami...Robotics-Asimov's Laws, Mechanical Subsystems, Robot Kinematics, Robot Dynami...
Robotics-Asimov's Laws, Mechanical Subsystems, Robot Kinematics, Robot Dynami...Sumanth A
 
Cost estimation approach: FP to COCOMO scenario based question
Cost estimation approach: FP to COCOMO scenario based questionCost estimation approach: FP to COCOMO scenario based question
Cost estimation approach: FP to COCOMO scenario based questionSneha Padhiar
 
Ch10-Global Supply Chain - Cadena de Suministro.pdf
Ch10-Global Supply Chain - Cadena de Suministro.pdfCh10-Global Supply Chain - Cadena de Suministro.pdf
Ch10-Global Supply Chain - Cadena de Suministro.pdfChristianCDAM
 
CS 3251 Programming in c all unit notes pdf
CS 3251 Programming in c all unit notes pdfCS 3251 Programming in c all unit notes pdf
CS 3251 Programming in c all unit notes pdfBalamuruganV28
 
High Voltage Engineering- OVER VOLTAGES IN ELECTRICAL POWER SYSTEMS
High Voltage Engineering- OVER VOLTAGES IN ELECTRICAL POWER SYSTEMSHigh Voltage Engineering- OVER VOLTAGES IN ELECTRICAL POWER SYSTEMS
High Voltage Engineering- OVER VOLTAGES IN ELECTRICAL POWER SYSTEMSsandhya757531
 
Prach: A Feature-Rich Platform Empowering the Autism Community
Prach: A Feature-Rich Platform Empowering the Autism CommunityPrach: A Feature-Rich Platform Empowering the Autism Community
Prach: A Feature-Rich Platform Empowering the Autism Communityprachaibot
 
SOFTWARE ESTIMATION COCOMO AND FP CALCULATION
SOFTWARE ESTIMATION COCOMO AND FP CALCULATIONSOFTWARE ESTIMATION COCOMO AND FP CALCULATION
SOFTWARE ESTIMATION COCOMO AND FP CALCULATIONSneha Padhiar
 
signals in triangulation .. ...Surveying
signals in triangulation .. ...Surveyingsignals in triangulation .. ...Surveying
signals in triangulation .. ...Surveyingsapna80328
 
OOP concepts -in-Python programming language
OOP concepts -in-Python programming languageOOP concepts -in-Python programming language
OOP concepts -in-Python programming languageSmritiSharma901052
 

Recently uploaded (20)

Energy Awareness training ppt for manufacturing process.pptx
Energy Awareness training ppt for manufacturing process.pptxEnergy Awareness training ppt for manufacturing process.pptx
Energy Awareness training ppt for manufacturing process.pptx
 
Comprehensive energy systems.pdf Comprehensive energy systems.pdf
Comprehensive energy systems.pdf Comprehensive energy systems.pdfComprehensive energy systems.pdf Comprehensive energy systems.pdf
Comprehensive energy systems.pdf Comprehensive energy systems.pdf
 
Levelling - Rise and fall - Height of instrument method
Levelling - Rise and fall - Height of instrument methodLevelling - Rise and fall - Height of instrument method
Levelling - Rise and fall - Height of instrument method
 
Computer Graphics Introduction, Open GL, Line and Circle drawing algorithm
Computer Graphics Introduction, Open GL, Line and Circle drawing algorithmComputer Graphics Introduction, Open GL, Line and Circle drawing algorithm
Computer Graphics Introduction, Open GL, Line and Circle drawing algorithm
 
FUNCTIONAL AND NON FUNCTIONAL REQUIREMENT
FUNCTIONAL AND NON FUNCTIONAL REQUIREMENTFUNCTIONAL AND NON FUNCTIONAL REQUIREMENT
FUNCTIONAL AND NON FUNCTIONAL REQUIREMENT
 
TechTACÂŽ CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTACÂŽ CFD Report Summary: A Comparison of Two Types of Tubing Anchor CatchersTechTACÂŽ CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTACÂŽ CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
 
Novel 3D-Printed Soft Linear and Bending Actuators
Novel 3D-Printed Soft Linear and Bending ActuatorsNovel 3D-Printed Soft Linear and Bending Actuators
Novel 3D-Printed Soft Linear and Bending Actuators
 
『澳洲文凭』买麦考瑞大学毕业证书成绩单办理澳洲Macquarie文凭学位证书
『澳洲文凭』买麦考瑞大学毕业证书成绩单办理澳洲Macquarie文凭学位证书『澳洲文凭』买麦考瑞大学毕业证书成绩单办理澳洲Macquarie文凭学位证书
『澳洲文凭』买麦考瑞大学毕业证书成绩单办理澳洲Macquarie文凭学位证书
 
CME 397 - SURFACE ENGINEERING - UNIT 1 FULL NOTES
CME 397 - SURFACE ENGINEERING - UNIT 1 FULL NOTESCME 397 - SURFACE ENGINEERING - UNIT 1 FULL NOTES
CME 397 - SURFACE ENGINEERING - UNIT 1 FULL NOTES
 
Stork Webinar | APM Transformational planning, Tool Selection & Performance T...
Stork Webinar | APM Transformational planning, Tool Selection & Performance T...Stork Webinar | APM Transformational planning, Tool Selection & Performance T...
Stork Webinar | APM Transformational planning, Tool Selection & Performance T...
 
Gravity concentration_MI20612MI_________
Gravity concentration_MI20612MI_________Gravity concentration_MI20612MI_________
Gravity concentration_MI20612MI_________
 
Robotics-Asimov's Laws, Mechanical Subsystems, Robot Kinematics, Robot Dynami...
Robotics-Asimov's Laws, Mechanical Subsystems, Robot Kinematics, Robot Dynami...Robotics-Asimov's Laws, Mechanical Subsystems, Robot Kinematics, Robot Dynami...
Robotics-Asimov's Laws, Mechanical Subsystems, Robot Kinematics, Robot Dynami...
 
Cost estimation approach: FP to COCOMO scenario based question
Cost estimation approach: FP to COCOMO scenario based questionCost estimation approach: FP to COCOMO scenario based question
Cost estimation approach: FP to COCOMO scenario based question
 
Ch10-Global Supply Chain - Cadena de Suministro.pdf
Ch10-Global Supply Chain - Cadena de Suministro.pdfCh10-Global Supply Chain - Cadena de Suministro.pdf
Ch10-Global Supply Chain - Cadena de Suministro.pdf
 
CS 3251 Programming in c all unit notes pdf
CS 3251 Programming in c all unit notes pdfCS 3251 Programming in c all unit notes pdf
CS 3251 Programming in c all unit notes pdf
 
High Voltage Engineering- OVER VOLTAGES IN ELECTRICAL POWER SYSTEMS
High Voltage Engineering- OVER VOLTAGES IN ELECTRICAL POWER SYSTEMSHigh Voltage Engineering- OVER VOLTAGES IN ELECTRICAL POWER SYSTEMS
High Voltage Engineering- OVER VOLTAGES IN ELECTRICAL POWER SYSTEMS
 
Prach: A Feature-Rich Platform Empowering the Autism Community
Prach: A Feature-Rich Platform Empowering the Autism CommunityPrach: A Feature-Rich Platform Empowering the Autism Community
Prach: A Feature-Rich Platform Empowering the Autism Community
 
SOFTWARE ESTIMATION COCOMO AND FP CALCULATION
SOFTWARE ESTIMATION COCOMO AND FP CALCULATIONSOFTWARE ESTIMATION COCOMO AND FP CALCULATION
SOFTWARE ESTIMATION COCOMO AND FP CALCULATION
 
signals in triangulation .. ...Surveying
signals in triangulation .. ...Surveyingsignals in triangulation .. ...Surveying
signals in triangulation .. ...Surveying
 
OOP concepts -in-Python programming language
OOP concepts -in-Python programming languageOOP concepts -in-Python programming language
OOP concepts -in-Python programming language
 

Continuous deployment 2.0

  • 2. in itPROFESSIONAL PHP SERVICES ‣ CEO and co-founder of in2it ‣ Community leader ‣ OSS contributor ‣ Conference Speaker ‣ Coach at CoderDojo MICHELANGELO VAN DAM
  • 3. MICHIEL ROOK OUR CD WAS INSPIRED BY Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 4. MICHIEL’S TALK WAS TO SAY THE LEAST… QUITE CONTROVERSIAL ▸ deploy to master, no branches ▸ pair programming, quick code reviews ▸ 100% code coverage ▸ strangler pattern to replace 10+ year old legacy app Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 5. THAT GOT US THINKING… Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 6. LEGACY APPLICATIONS COMMON FOR ALL CLIENTS: Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 7. IN2IT PROCESSES? ? ? ? ? ??? ? Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 8. REFACTORING ADDING FEATURES REWRITE FROM SCRATCH TESTING IS HARD ONLY NEW FEATURES TESTED LOTS OF WORK Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 10. IN2IT PROCESSES ONLY MASTER PAIR PROGRAMMING 100% CODE COVERAGE STRANGLER PATTERN Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 11. IN2IT PROCESSES ONLY MASTER ❌ PAIR PROGRAMMING 100% CODE COVERAGE STRANGLER PATTERN Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 12. IN2IT PROCESSES ONLY MASTER ❌ PAIR PROGRAMMING ✅ 100% CODE COVERAGE STRANGLER PATTERN Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 13. IN2IT PROCESSES ONLY MASTER ❌ PAIR PROGRAMMING ✅ 100% CODE COVERAGE ✅ STRANGLER PATTERN Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 14. IN2IT PROCESSES ONLY MASTER ❌ PAIR PROGRAMMING ✅ 100% CODE COVERAGE ✅ STRANGLER PATTERN ❌ Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 15. LET’S SEE WHAT WE’RE MISSING DO WE NEED TO COMMIT TO MASTER? ▸ All PR’s are going into master branch ▸ Every developer has their own GIT repo ▸ Branching for features ▸ Branching for bug xes ▸ Deployment Master ▸ Integrates one or more dev branches ▸ Pushes it onto master Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 16. DEVELOPERS WORK LOCALLY ON A PRIVATE GIT REPO OUR GIT WORKFLOW DEVELOPER PRIVATE REPO DEVELOPER PRIVATE REPO Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 17. ONCE DONE, THEY PUSH TO THEIR PUBLIC REPOS OUR GIT WORKFLOW DEVELOPER PRIVATE REPO DEVELOPER PRIVATE REPO DEVELOPER PUBLIC REPO DEVELOPER PUBLIC REPO Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 18. AND SEND A PULL REQUEST (PR) OUR GIT WORKFLOW DEVELOPER PRIVATE REPO DEVELOPER PRIVATE REPO DEVELOPER PUBLIC REPO DEVELOPER PUBLIC REPO TEAM REPO RELEASE BRANCH Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 19. OUR RELEASE MANAGER MERGES THE CHANGES IN OUR GIT WORKFLOW DEVELOPER PRIVATE REPO DEVELOPER PRIVATE REPO DEVELOPER PUBLIC REPO DEVELOPER PUBLIC REPO TEAM REPO MASTER BRANCH RELEASE MANAGER Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 20. CI KICKS IN AND DEPLOYS TO TEST/STAGING/PROD OUR GIT WORKFLOW DEVELOPER PRIVATE REPO DEVELOPER PRIVATE REPO DEVELOPER PUBLIC REPO DEVELOPER PUBLIC REPO TEAM REPO MASTER BRANCH RELEASE MANAGERCI TEST/STAGING/PROD Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 21. OUR CONCLUSION COMMITTING STRAIGHT TO MASTER ▸ Will make the role of “Release Master” obsolete ▸ Good for small teams ▸ Speeds up the deployment process ▸ In our case ▸ We work with distributed teams (3-5 people in each team) ▸ Will only work when all features are live from the start (feature flags) Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 22. LET’S SEE WHAT WE’RE MISSING… STRANGLER PATTERN ▸ Is a clean way to replace legacy code with clean, distributed and optimised code. ▸ Requires domain knowledge (especially for 10+ years of evolution of an app) ▸ Creates duplicate functionality during transitions Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 23. INCREMENTALLY MIGRATE A LEGACY SYSTEM BY GRADUALLY REPLACING SPECIFIC PIECES OF FUNCTIONALITY WITH NEW APPLICATIONS AND SERVICES. AS FEATURES FROM THE LEGACY SYSTEM ARE REPLACED, THE NEW SYSTEM EVENTUALLY REPLACES ALL OF THE OLD SYSTEM'S FEATURES, STRANGLING THE OLD SYSTEM AND ALLOWING YOU TO DECOMMISSION IT. Microsoft Cloud Architecture Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 24. LEGACY APPLICATION NEW REPLACEMENT STRANGLER FAÇADE Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 25. NEW REPLACEMENT STRANGLER FAÇADE LEGACY APPLICATION Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 26. OUR CONCLUSION STRANGLING LEGACY CODE ▸ Will take time to replace old with new code ▸ Until ready, duplicated functional will exist ▸ In our case ▸ We need to replace legacy code with better solutions ▸ We can live with duplicated functionality Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 27. IMPROVING LEGACY THE PATH TO Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 28. PEAR LIBS PECL EXTS FRAMEWORK X FRAMEWORK Y CUSTOM LIBS BUSINESS LOGIC Monolithic Code Monster Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 29. WE NEED A BETTER SOLUTION! Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 30. PEAR LIBS PECL EXTS FRAMEWORK X FRAMEWORK Y CUSTOM LIBS BUSINESS LOGIC Monolithic Code Monster FUNCTIONAL MICROSERVICE FUNCTIONAL MICROSERVICE FUNCTIONAL MICROSERVICE FUNCTIONAL MICROSERVICE FUNCTIONAL MICROSERVICE FUNCTIONAL MICROSERVICE FUNCTIONAL MICROSERVICE FUNCTIONAL MICROSERVICE FUNCTIONAL MICROSERVICE FUNCTIONAL MICROSERVICE Functional Microservices Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 31. I CAN HEAR YOU ASK: WHY MICROSERVICES? ▸ Not tied to a single technology ▸ A service per functionality makes it easier to upgrade without impacting the whole application ▸ Improved security on application, network and infrastructure ▸ Easy to scale and extend ▸ Better resilience against failing services Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 32. MICROSERVICES SIND SINNVOLL! Stefan HogdĂśrfer - @shochdoerfer Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 33. LET’S LOOK IF IT IS A SOLUTION FOR US PROS EN CONS Pro Con Not tied to a single technology Lots of different skillsets Easy to upgrade/x or add features Lost in forrest of services Improved security Requires lots of monitoring Better scalability Expensive* Improved resilience for failure (*) The cost lies in the higher number of “instances” and faster network required to run these services Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 34. MICROSERVICES & CONTINUOUS DEPLOYMENT Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 35. GOALS OF CONTINUOUS DEPLOYMENT? Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 36. CONTINUOUS DEPLOYMENT CAN BE THOUGHT OF AS AN EXTENSION OF CONTINUOUS INTEGRATION, AIMING AT MINIMIZING LEAD TIME, THE TIME ELAPSED BETWEEN DEVELOPMENT WRITING ONE NEW LINE OF CODE AND THIS NEW CODE BEING USED BY LIVE USERS, IN PRODUCTION. Agile Alliance - agilealliance.com Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 37. DOING THINGS MORE THAN ONCE LEAD UP TO… AUTOMATE DEPLOYMENT PROCESSES ▸ A series of actions taken before changes are put in production ▸ Chained together with fail switch to create a pipeline ▸ Provides full reports on each step of the delivery process ▸ Can be optimized over time ▸ Is repeatable Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 38. COMPUTERS ARE GREAT AT REPETITIVE TASKS! MINIMIZE LEAD TIME ▸ Through automation, actions are executed faster in parallel ▸ Any failures will be reported immediately ▸ Any successes will be notied through ▸ E-mail ▸ Wiki ▸ Slack ▸ … Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 39. STRESS, PANIC, SICKNESS, … ALL HAVE AN IMPACT ON YOUR CONCENTRATION PREVENTING HUMAN ERROR! ▸ Automation removes human errors ▸ by stress or a “bad” day ▸ Optimized over time ▸ Repeatable for all stages Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 41. COMMIT SMALL, COMMIT OFTEN Credits to @CalEvans THE PROGRAMMER’S MANTRA Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 42. PERFECT WORLD WOULD MAKE THIS POSSIBLE OPTIMAL COMMIT ▸ creating/updating class (no body) ▸ creating/changing class method (no body) ▸ creating/changing functionality in method ▸ creating/changing cong (no body) ▸ … Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 43. ON THIS PLANET WE ARE SATISFIED WITH THIS REALISTIC COMMIT ▸ complete a functionality ▸ complete a logic operation ▸ complete a conguration change Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 44. SMALL AND OFTEN COMMITS BALANCE PROS EN CONS Pro Con Incremental small improvements Many commits for one task Errors can be reverted quickly Requires change of attitude Easy to review Small impact on production code Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 45. AIM FOR 100% CODE COVERAGE Michiel Rook - @michielcts LET’S GO FOR IT! Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 46. SMALL CHANGES REQUIRE MINIMAL OVERHEAD COMMIT SMALL WITH 100% COVERAGE ▸ small code change ▸ small test covering all lines ▸ make use of @covers annotation ▸ Run PHPUnit with “--strict-coverage” Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 47. EXAMPLE OF USING THE @COVERS ANNOTATION /**  * Authentication throws exception for too short password  *  * @param string $password  *  * @covers LoginFormAuthServiceAuthenticationService::__construct  * @covers LoginFormAuthServiceAuthenticationService::authenticate  * @dataProvider shortPasswordProvider  * @expectedException InvalidArgumentException  */ public function testAuthenticationThrowsExceptionForTooShortPassword(string $password) {     $this->validator->expects($this->once())         ->method('isValid')         ->willReturn(false);     $authService = new AuthenticationService(         $this->validator,         $this->accountModel,         $this->accountEntity,         $this->twoFactorServiceMock     );     $authService->authenticate('username', $password, false);     $this->fail('Authentication service should throw an exception for too short password input'); } Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 48. EXAMPLE OF USING THE @COVERS ANNOTATION /**  * Authentication throws exception for too short password  *  * @param string $password  *  * @covers LoginFormAuthServiceAuthenticationService::__construct  * @covers LoginFormAuthServiceAuthenticationService::authenticate  * @dataProvider shortPasswordProvider  * @expectedException InvalidArgumentException  */ public function testAuthenticationThrowsExceptionForTooShortPassword(string $password) {     $this->validator->expects($this->once())         ->method('isValid')         ->willReturn(false);     $authService = new AuthenticationService(         $this->validator,         $this->accountModel,         $this->accountEntity,         $this->twoFactorServiceMock     );     $authService->authenticate('username', $password, false);     $this->fail('Authentication service should throw an exception for too short password input'); } Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 49. SHOULD WE ADOPT 100% CODE COVERAGE? PROS EN CONS Pro Con Higher quality of code A huge effort Every line of code is accountable Requires change of attitude Huge time/money gain in long tail Time intensive Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 50. THE PIPELINE Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 51. A COMMON CI/CD SETUP Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 52. WE CAN DO BETTER! Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 53. THE BEGINNING OF A BEAUTIFUL STORY CODE ASSEMBLY STEP ▸ Check out SCM ▸ Optionally install submodules ▸ Composer packages Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 54. ARE WE GOOD TO GO? CODE QUALITY STEP ▸ Version checks (are we on latest version?) ▸ Vulnerability checks (CVE’s)* ▸ Unit testing ▸ Static Analysis (*) See SensioLabs for composer package validation service Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 55. LET’S PREPARE EVERYTHING LIKE A TRUE CHEF PROVISIONING STEP ▸ Create a new environment ▸ Package the code and assets ▸ Sign the package with GPG ▸ Deploy the code ▸ Perform DB migrations ▸ Warm-up caches Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 56. TEST ALL THE THINGS, AND ADD SOME… RELEASE QUALITY STEP ▸ Integration testing ▸ Acceptance testing ▸ End-to-end testing ▸ Regression testing ▸ Performance testing ▸ Security testing ▸ Resilience testing ▸ Accessibility testing ▸ UX Testing ▸ … Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 57. TIME TO SHIP IT!!! DEPLOYMENT STEP ▸ Stop crons, workers and daemons ▸ Phase out old system with new ▸ Put new system in load balancer ▸ Direct portion of trafc to new node ▸ Validate behaviour of new node ▸ Remove old system from load balancer ▸ Validate deployment ▸ Start crons, workers and daemons Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 58. KNOWING IS GOOD, KNOWING EVERYTHING IS BETTER - DAVE EGGARS “THE CIRCLE” REPORTING STEP ▸ Generate release notes ▸ Generate user documentation ▸ Notify training dept. of changes ▸ Generate release report/stats Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 61. WITH PIPELINES YOU HAVE… ENDLESS POSSIBILITIES TO DEPLOY Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 62. AND WHEN SOMETHING DOES GOES WRONG… THE PIPELINE WILL STOP… Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 63. WE ROLL FORWARD WHEN FAILURE HAPPENS Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 64. YOUR TURN Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 65. TEST IT ALL! CONTINUOUS DEPLOYMENT Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 66. SMALL REMINDER BY DESIGN ▸ Quality ▸ Security ▸ Privacy ▸ Resilience ▸ Accessibility Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 67. SET AGREEMENTS AS A TEAM IN NEED OF STRUCTURE? Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 68. WITH PIPELINES SUCCEED EVERY TIME Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 69. IMPROVE THE FEEDBACK LOOP KNOWLEDGE IS KEY! Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 70. RESOURCES THAT INSPIRED ME… RECOMMENDED FOR YOU Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 71. Use For feedback on this presentation For discussions on this presentation Use Continuous Deployment 2.0www.in2it.be - @in2itvofin it
  • 73. QUESTIONS? ARE THERE ANY Continuous Deployment 2.0www.in2it.be - @in2itvofin it