Disproving the Big Bang: Slides

May 2024 · 4 minute read

@sublimino

 Freelance Quality Engineer

News UK, Visa, British Gas

www.binarysludge.com

What is a deployment Pipeline?

"Automated manifestation of your process for getting software from version control into the hands of your users"

- Jez Humble

(wrote the book)


or

The code's journey between 

your mind and production 

What is the big bang?


WHAT IS THE BIG BANG?

Who is this TALK appropriate for?

Any developer that desires 

quality, maintainability and sanity


Big Bang Integration testing is Bad

  • Isolating defects is hard - many logs, little granularity
  • Interface problems are not discovered until components are integrated
  • Business pressures often push this to the end of the development lifecycle
  • This leads to stressful development
  • BIG BANG INTEGRATION TESTING IS BAD

    BOTTOM UP INTEGRATION TESTING IS GOOD

    But really, any testing is better than none at all

    the build pipeline

    A set of engineering practices that ensure build quality

    (Often require a cultural shift) 

    HOW?

    it begins with

    Continuous Integration

    "Continuous Integration (CI) is a development practice that requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early.

          By integrating regularly, you can detect errors quickly, and locate them more easily."

          - http://www.thoughtworks.com/continuous-integration

    Continuous integration

    Is compatible with branching and PRs

    Discourages languishing branches

    Relatively widely practiced

    Hosted services are available...


    http://www.infoq.com/research/ci-server

    Full-stack testing


    All code must be 

    automatically testable


    (Private methods are contentious)

    testing 101

    testing 102

    testing gotchas

    next: Deployment automation

    the Deployment Pipeline is the evolution of the CI approach

    Continuousness:

    Delivery vs Deployment

    recap: THE THREE CS

    What is in the pipeline?

    automated deployment

    Deploy, as long as it's automated:

    monitoring and Logging

    So much good stuff available:

    automated rollback

    Intelligent response to metrics and alerts

    Get out of jail...

    Not free

    howto

    Start with tests

    Build a pipeline that's reliable

    Deploy to an environment

    Monitor everything

    Use KPIs for a cluster immune system

    Roll back if KPIs exceed tolerances

    Halt the pipeline, analysis/5 whys?

    Write a failing test case before fixing it

    Re-enable the pipeline

    Sleep well at night

    fin

    @sublimino

    www.binarysludge.com

    ncG1vNJzZmirY2KytnnWnqqtZWFjrq6t2ailmq%2BjY7CwuY6boKeZoq7ArcHDoJxnm5%2BifIWxz6WmsqWVo8GRtc%2Beo6Kmlah8qrrDnq9noKSiuQ%3D%3D