Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

Agenda ● Framework Overview ● Continuous Integration ● Continuous Delivery ● Continuous Deployment ● Feedback Loops ● Demo John Ray Practice Manager, DevOps Derrick Sutherland Senior Consultant

Slide 3

Slide 3 text

A brief history... 1948 Toyota engineers begin the development of the Toyota Production System (TPS) 2001 The Agile manifesto is released. 1913 Henry Ford wants to sell more cars. 1981 Waterfall becomes the dominant software development practice. 2009 10 Deploys a Day and DevOps 2010 Continuous Delivery

Slide 4

Slide 4 text

framework /ˈfrāmˌwərk’/ noun ● a basic structure underlying a system, concept, or text. "the theoretical framework of CI/CD"

Slide 5

Slide 5 text

What’s in a Framework? Sociotechnical systems (STS) in organizational development is an approach to complex organizational work design that recognizes the interaction between people and technology in workplaces. ● coined by Eric Trist, Ken Bamforth and Fred Emery during World War II

Slide 6

Slide 6 text

What’s in a Framework? Toyota embodied this approach by way of Jidoka – meaning "Automation with a human touch"

Slide 7

Slide 7 text

Why? Lower Cost Reduce Risk Respond to your clients and the market quickly

Slide 8

Slide 8 text

Why? Source: https://www.atlassian.com/continuous-delivery/business-value

Slide 9

Slide 9 text

Framework Principles Reduce Waste ● Human Touches ● Alerts that aren’t useful Feedback ● Continuous Improvement ● Feedback at all stages Use the right tools ● Evangelize ● Train Adhere to process ● Fix problems from the start ● Discipline = Freedom

Slide 10

Slide 10 text

Framework Components Code & Commit Feedback Scan & Test Automate & Deploy Build & Config

Slide 11

Slide 11 text

Continuous Integration The practice of frequently integrating one's new or changed code with the existing code repository The main aim of CI is to prevent integration problems, referred to as "integration hell" “Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day.” - Martin Fowler

Slide 12

Slide 12 text

Principles for CI ● Maintain a code repository ● Everyone commits to feature branch daily ● All builds must include unit testing ● Orchestration system will trigger builds on every commit ● Feature branches must be continually merged with baseline

Slide 13

Slide 13 text

Tools for CI ● Build (Maven, Ant, Bazel, etc) ● Testing (JUnit, Inspec, Findbugs, FindSecBugs, etc) ● SCM (Git, SVN, Mercurial, etc) ● Orchestration (Jenkins)

Slide 14

Slide 14 text

Getting Started ● Setup a code repository ex. ● Setup a continuous integration orchestration system ex. ● Setup webhook publishing ● Install build and testing frameworks on CI system ex. ● Build an orchestration pipeline ● Ensure code merges with baseline on build

Slide 15

Slide 15 text

Continuous Integration

Slide 16

Slide 16 text

Continuous Delivery Includes all the practices of Continuous Integration and takes it a step further to include acceptance testing and artifact release. Ensures products are always reliably releasable “Continuous Delivery is a software development discipline where you build software in such a way that the software can be released to production at any time.” - Martin Fowler

Slide 17

Slide 17 text

Principles for Continuous Delivery ● Deliver to staging environment ● Maintain valid acceptance and user tests ● Release new artifact with every commit

Slide 18

Slide 18 text

Tools for Continuous Delivery Same as Continuous Integration Additionally… ● Artifact Repositories (Nexus, Artifactory)

Slide 19

Slide 19 text

Getting Started ● Build a Continuous Integration Pipeline ● Install automation deployment tools on CI system ex. ● Install integration & acceptance testing tools on CI system ex. ● Expand pipeline to include staging, further testing and artifact release

Slide 20

Slide 20 text

Continuous Delivery

Slide 21

Slide 21 text

Continuous Deployment Includes all the practices of Continuous Delivery and takes it a step further to include deploying into production automatically “Continuous Deployment means that every change is deployed through an automated pipeline.”

Slide 22

Slide 22 text

Principles for Continuous Deployment ● Maintain visibility across pipeline ● Automatically provide feedback to team ● Ensure approval before pushing to new environments ● Continually deploy releasable code to production systems

Slide 23

Slide 23 text

Tools for Continuous Deployment Same as Continuous Delivery Additionally… ● Automation (Ansible, Terraform, etc) ● Chatops (Rocketchat, Slack, Hipchat, etc)

Slide 24

Slide 24 text

Feedback Loop

Slide 25

Slide 25 text

Principles for Feedback Loops Alerts must be: ● Useful ● Informative ● Actionable ● Visible

Slide 26

Slide 26 text

Getting Started with CI/CD/CD ● Select the “right” tools ● Build your process iteratively ● Adhere to the process ● Feedback from all stakeholders ● Practice continuous improvement

Slide 27

Slide 27 text

Continuous Deployment

Slide 28

Slide 28 text

Developers Demo Architecture Pre-Prod (Resource Group) Prod (Resource Group) #General channel Master Feature Feature dsutherland1492/jenkinsframeworkapp Pull Build Unit Test Preprod Deploy Preprod Test Prod Deploy Prod Test Merge Create-instance Config Instance Deploy Code Integration Test Merge Acceptance Test

Slide 29

Slide 29 text

Pipeline git clone 1. build (mvn) 2. unit test (junit) 3. Notify Success (Rocketchat) 1. Wait for input 2. Deploy with Ansible to Azure PreProd 1. Test with Inspec 2. Notify Success (Rocketchat) 1. Wait for input 2. Deploy with Ansible to Azure Prod 1. Test with Inspec 2. Notify Success (Rocketchat)

Slide 30

Slide 30 text

Demo

Slide 31

Slide 31 text

CI/CD Framework Review 1. Shadow-Soft will review your existing framework, architecture, and tooling 2. You’ll receive recommendations on how to improve processes and governance 3. Learn how other clients are using Ansible and Jenkins for automation Schedule a time with a consultant [email protected]