migrating to continuous delivery with tfs 2017 - liviu mandras-iura

Click here to load reader

Upload: itcamp

Post on 18-Mar-2018

353 views

Category:

Technology


0 download

TRANSCRIPT

  • Sailing towards Continuous Delivery

    Liviu Mandras-Iura

    @ITCAMPRO #ITCAMP17Community Conference for IT Professionals

  • Why Continuous Delivery?

  • Reduced cycle time

  • Lower Risk, higher ROI

  • https://www.infoq.com/minibooks/continuous-delivery-overview

    https://www.infoq.com/minibooks/continuous-delivery-overview

  • Improved quality

    =

    happy users

  • The challenge!

  • There is no free lunch

    Initial cost in tooling/hardware

    Cultural shift

    Knowledge cost

  • Hard doing it by the book

  • Great news:

    you dont have to

  • The bottom line

    CD will give you:

    + Lower risk

    + Frequent value delivery

    + Higher quality

    - Short term costs

  • GOLD

    SILVER

    PARTNERS

    PLATINUM

    POWERED BY

    @ITCAMPRO #ITCAMP17Community Conference for IT Professionals

    Many thanks to our sponsors & partners!

  • Liviu Mandras-Iura

    30 years old

    Software Architect @

    Into programing for 1/3

    @ITCAMPRO #ITCAMP17Community Conference for IT Professionals

  • Asses initial position

    The deployment pipeline basics

    Pipeline stages

    Agenda

  • Everything

    Manual

    Continuous

    Delivery

    Continuous

    Deployment

    Continuous

    Integration

    You might be here

  • Manual

    CD

    Culture

    &

    Organization

    Design

    &

    Architecture

    Build

    &

    Deploy

    Test

    &

    Verification

    Information

    &

    Reporting

  • Manual

    CD

    Culture

    &

    Organization

    Design

    &

    Architecture

    Build

    &

    Deploy

    Test

    &

    Verification

    Information

    &

    Reporting

  • Continuous delivery can scale down

  • Deployment Pipeline

  • Artifact

    repository

    Source code

    ProductionPerformance Stage User Acceptance

    StageCommit Stage Acceptance Stage

    BIN

    BIN

    Deployment pipeline

  • Where do you start?

  • Start automating your current build process

  • My Process

    Typical SCRUM-BAN process

    Releases every 2 weeks

    Gitflow branching model

  • Branching Model

    https://www.atlassian.com/git/tutorials/comparing-workflows

    https://www.atlassian.com/git/tutorials/comparing-workflows

  • My Environment

    Machine1 Machine 2

    DEV ACC TEST

    QA TRN

    PRODUCTION

    Windows Server 2008 R2

    IIS 7.5

    .NET 4.5.2

    Windows Server 2012 R2

    IIS 8.5

    .NET 4.5.2

  • The Commit Stage

    ProductionPerformance UATCommit Acceptance

  • Commit Stage

    Rule: Commit often on trunk

    No branching

  • Commit Stage

    But Gitflow = branches

    (What the hack?!)

  • Commit Stage

    Rule: Fast build process

  • Commit Stage

  • Commit Stage

    Rule: Run test suite

    before committing

  • Commit Stage

    People forget to run the test suite

  • Commit Stage

    Solution: preflight build

  • Commit Stage

    Create a good test suite

    Dont use broken builds

    Keep the build green

    Fast fix or revert

    Shared code ownership

    Do TDD

  • Commit Stage

  • Commit Stage

  • Commit Stage

    Dev CI

    Preflight

    Code

    analysis

    DEV

    Commit Stage

  • Commit Stage

    Dev CI

    Preflight

    Code

    analysis

    DEV

    Release Artifact

    Repository

    BIN

    Commit Stage

  • The Acceptance Stage

    ProductionPerformance UATCommit Acceptance

  • Acceptance Stage

    More important than you think

    yes, you, the developer

  • Acceptance Stage

    Derived from acceptance criteria

  • Acceptance Stage

    Executable specifications

    Given some contextWhen some action is performedThen observable effects happen

  • Acceptance Stage

    Good acceptance tests

    =

    Carefully designed tests

  • Acceptance Stage

    Tests are first class citizens

    Production

    codeTest code

  • Acceptance Stage

    Test state management

  • Funny story

    Acceptance Stage

  • Why?

    Acceptance Stage

  • Acceptance Stage

    What we did

  • Acceptance Stage

    Devs & QA shared ownership

  • Acceptance Stage

    Acceptance Specification

    Given-When-Then

    Test Implementation

    DSLNo UI references

    Test Framework

    Window Driver PatternPage Object Pattern

    Web Driver

    Selenium

  • My Pipeline

    The pipeline so far

  • My Pipeline

    Source code Commit Stage

    Acceptance Stage

    DEV

    Artifact

    RepositoryBIN

  • The Performance Stage

    ProductionPerformance UATCommit Acceptance

  • Performance Stage

    Derived from acceptance tests

  • Performance Stage

    Get correct metrics!

  • Performance Stage

    No automated performance testing

  • The User Acceptance Stage

    ProductionPerformance UATCommit Acceptance

  • User Acceptance Stage

    DEV

    Commit Stage

    Dev CI

    Preflight

    Code

    analysisRelease

    Artifact Repository

    BIN

    QA

    BIN

    UAT Stage

  • Production Stage

    ProductionPerformance UATCommit Acceptance

  • Production Stage

    One click deploy and rollback

  • Production Stage

    Zero down time deployments

  • Production Stage

    Users

    Router

    X X+1

    Canary release

  • Production Stage

    Users Load Balancer

    Web Server DB Server

    X

    X+1

    X

    X+1

    Blue-Green

    deployment

  • Production Stage

    We take advantage of

    timezone difference

  • My Pipeline

    MergeSource code UAT Stage LiveCommit Stage

    Acceptance Stage

  • My Pipeline

    But there is more

  • Acceptance Stage

    My Pipeline

    Merge

    Source code

    Commit Stage

    Dev CI

    Release

    Deploy & Run

    tSQLt Tests

    Deploy DEV

    DEV

    Run Acc Tests

    ACC

    TEST

    Deploy Live

    PROD

    UAT Stage

    QA

    BIN BIN

    BIN BIN BIN

  • Acceptance Stage

    My Pipeline

    Merge

    Source code

    Commit Stage

    Dev CI Deploy & Run

    tSQLt Tests

    Deploy DEV

    DEV

    Run Acc Tests

    ACC

    TEST

    Deploy Live

    PROD

    UAT Stage

    QA

    BIN BIN

    BIN BIN BIN

  • Summary and

    conclusions

  • Summary

    Reliable build process

    Push button release and rollback

    Separate DEV cycle from UAT cycle

    Some level of quality built in

    Time

  • Summary

    When to stop?

    It depends!

  • Summary

    Value

    Investment0

  • Summary

    Business testing lags behind

  • Tools and processes can help you

    If you use them

  • Skills are required but dont overthink it

    Just start and evolve!

  • Barely on Facebook

    liviu.mandras

  • https://www.linkedin.com/in/liviu-mandras-iura-030b4021/

  • [email protected]

  • Thank You!

    @ITCAMPRO #ITCAMP17Community Conference for IT Professionals

  • @ITCAMPRO #ITCAMP17Community Conference for IT Professionals

    Q & A