DevOps Stack. Reid Holmes. Chris Parnin: https://github.com/csc-devops/course



Similar documents
Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

Software Continuous Integration & Delivery

Enabling Continuous Delivery by Leveraging the Deployment Pipeline

SUCCESFUL TESTING THE CONTINUOUS DELIVERY PROCESS

WHITEPAPER. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. Principle #1, Agile Manifesto

Continuous Delivery: implementation considerations. Léon Hagenaars-Keus Edwin van Dillen

ACCELERATE DEVOPS USING OPENSHIFT PAAS

SUCCESFUL TESTING THE CONTINUOUS DELIVERY PROCESS

Continuous Delivery: Automating the Deployment Pipeline. Solution Brief

Continuous Integration Using Cruise Control

The Importance of Continuous Integration for Quality Assurance Teams

Understanding Code Management in a Multi-Vendor Environment. Examples of code management in a multi-team environment

Continuous Delivery. Ariel Alonso, IPC

Continuous Integration: Aspects in Automation and Configuration Management

The Virtualization Practice

DevOps Course Content

Fundamentals of Continuous Integration

Continuous Integration, Delivery and Deployment. Eero Laukkanen T Software Testing and Quality Assurance P

In depth study - Dev teams tooling

Continuous Delivery Workshop

Delivery. Continuous. Jez Humble and David Farley. AAddison-Wesley. Upper Saddle River, NJ Boston Indianapolis San Francisco

Software Configuration Management and Continuous Integration

Continuous Delivery for Alfresco Solutions. Satisfied customers and happy developers with!! Continuous Delivery!

DevOps. Building a Continuous Delivery Pipeline

Implementing Continuous Integration Testing Prepared by:

DevOps for the Mainframe

A Pythonic Approach to Continuous Delivery

18/09/2015. DevOps. Prof. Filippo Lanubile. Outline. Definitions Collaboration in DevOps Automation in DevOps. Prof.

Continuous Integration and Delivery at NSIDC

The Tools For Continuous Delivery

Serena Dimensions CM. Develop your enterprise applications collaboratively securely and efficiently SOLUTION BRIEF

Continuous Integration

Build Automation for Mobile. or How to Deliver Quality Apps Continuously. Angelo Rüggeberg

A central continuous integration platform

Software Construction

GETTING STARTED WITH CONTINUOUS DELIVERY. Lana wcgp.co

Modern practices TIE-21100/

NeXUS REPOSITORY managers

Patterns to Introduce Continuous Integration to Organizations

"Infrastructure as Code" für Anfänger. XP Days Germany David Völkel

Getting Started with DevOps Automation

Application Release Automation (ARA) Vs. Continuous Delivery

Collaborative DevOps Learn the magic of Continuous Delivery. Saurabh Agarwal Product Engineering, DevOps Solutions

How To Write Unit Tests In A Continuous Integration

DevOps to Enterprise Agile

CPSC 491. Today: Source code control. Source Code (Version) Control. Exercise: g., no git, subversion, cvs, etc.)

Building a Continuous Integration Pipeline with Docker

DevOps for. Developers. Michael Huttermann. Apress-

Agile Software Factory: Bringing the reliability of a manufacturing line to software development

Why continuous delivery needs devops, and why devops needs infrastructure-as-code. Sriram 25-Oct-2012

Continuous Integration Multi-Stage Builds for Quality Assurance

CONTINUOUS INTEGRATION. Introduction

DevOps Best Practices for Mobile Apps. Sanjeev Sharma IBM Software Group

Delivering Quality Software with Continuous Integration

The Deployment Production Line

Software Development In the Cloud Cloud management and ALM

Continuous Delivery. Alejandro Ruiz

Continuous Delivery Software-Deployments ohne graue Haare. 3. April 2012 Corsin Decurtins

An Introduction to Continuous Delivery

What Is the Cloud?

Kevin Lee Technical Consultant As part of a normal software build and release process

Continuous Delivery of Software

Java PaaS Enabling CI, CD, and DevOps

Servers. Servers. NAT Public Subnet: /20. Internet Gateway. VPC Gateway VPC: /16

Software Engineering I (02161)

Automated testing and continuous integration

Service Orchestration

Whitepaper. Continuous Integration Tools Applying Best Practices to the Toolchain

Continuous Integration: Put it at the heart of your development

Automated performance testing using Maven & JMeter. George Barnett, Atlassian Software

Impact of Architecture on Continuous Delivery

Agile Requirements And Testing For Continuous Software Delivery

The Role of Feedback in Continuous Integration, Continuous Delivery and Agile ALM

Automation & Open Source. How to tame the Cloud?

Continuous Integration For Fusion Middleware

Solution Spotlight KEY OPPORTUNITIES AND PITFALLS ON THE ROAD TO CONTINUOUS DELIVERY

Mobile Development with Git, Gerrit & Jenkins

Continuous Integration. CSC 440: Software Engineering Slide #1

Continuous Integration Processes and SCM To Support Test Automation

DEVOPS IN THE FEDERAL SECTOR

ITIL Asset and Configuration Management in the Cloud. January 2016

Continuous Delivery: Bridging Quality Between Development and Customers

A Sumo Logic White Paper. Harnessing Continuous Intelligence to Enable the Modern DevOps Team

Agility via Software Engineering Practices

DevOps. Jesse Pai Robert Monical 8/14/2015

Goodbye war room, hello DevOps 2.0

Continuous Integration For Real: The Perforce Java Platform. Hamish Reid Perforce Software Inc.

SOFTWARE DEVELOPMENT BASICS SED

MasterClass 26 th March 2015 DevOps and Continuous Deployment

Continuous Integration/Testing and why you should assume every change breaks your code

Transcription:

Chris Parnin: https://github.com/csc-devops/course DevOps Stack Reid Holmes https://upload.wikimedia.org/wikipedia/commons/thumb/b/b5/devops.svg/2000px-devops.svg.png

Pro Ben Stil Waterfall model

Agile Processes Iteration: Plan, Requirements, Development, Testing.

Continuous Development Continuous * (Perpetual Developme We ll circle back to this.

Who does Ops? Operations Responsibility http://perfcap.blogspot.ca/2012/03/ops-devops-and-noops-at-netflix.html REID HOLMES - CPSC 410: ADVANCED SOFTWARE ENGINEERING

DevOps Values No silos One team, owning changes Developers are responsible for supporting their code Leads to a quality-focused culture Carrying a beeper makes you careful

REID HOLMES - CPSC 410: Advanced Software Engineering Configuration Management Tracking and control activities that manage baseline and alternative versions of systems. CM enables changes to flow through different versions and releases while supporting traceability and reproducibility.

Configuration Management Baseline: snapshot of a system. All changes are submitted as change requests against the baseline. Gates can be established to ensure changes are scrutinized before they are applied. CM does not just apply to code: Documentation Environment Libraries

CM at Google Monorepo: 1 billion files 9 million source files 2 billion LOC 35 million commits 45,000 commits / day 86 terabytes in total REID HOLMES - CPSC 410: ADVANCED SOFTWARE ENGINEERING HTTPS://WWW.YOUTUBE.COM/WATCH?V=W71BTKUBDQE

Branching Branches: mechanisms for allowing concurrent changes to be made to the repository. HTTPS://WWW.ATLASSIAN.COM/GIT/TUTORIALS/COMPARING-WORKFLOWS/GITFLOW-WORKFLOW REID HOLMES - CPSC 410: ADVANCED SOFTWARE ENGINEERING

Modern Branching REID HOLMES - CPSC 410: ADVANCED SOFTWARE ENGINEERING

Branching Anti-Patterns Merge paranoia: avoid merging any changes. Merge mania: spend all your time merging. Big bang: try to merge all branches simultaneously. Branch mania: too many branches. Cascading branches: branching but never merging. Dev freeze: halting progress to allow merging. Spaghetti branching: unstructured merging. HTTP://WWW.HILLSIDE.NET/PLOP/PLOP98/FINAL_SUBMISSIONS/P37.PDF REID HOLMES - CPSC 410: ADVANCED SOFTWARE ENGINEERING

Branching Anti-Patterns REID HOLMES - CPSC 410: ADVANCED SOFTWARE ENGINEERING

REID HOLMES - CPSC 410: Advanced Software Engineering Nightly Build Systems should be built and executed on a nightly basis. Smoke tests are often used to quickly check the build is not functionally broken.

Nightly Build Build code and run smoke tests. Popularized my MSFT in the mid 90s Benefits Minimizes integration risk Reduces risk of low quality Enables early defect diagnosis Improves morale

Build Automation Automated build steps: 1) Checkout the system. 2) Acquire all dependencies. 3) Build the system. 4) Report build status. Can be built: On demand Through a schedule Via a trigger

Build Automation HTTPS://UPLOAD.WIKIMEDIA.ORG/WIKIPEDIA/COMMONS/9/91/BOEING-WHICHATA_B-29_ASSEMBLY_LINE_-_1944.JPG REID HOLMES - CPSC 410: ADVANCED SOFTWARE ENGINEERING

Big Steps 1. Checkout the system: Configuration Management (git, hg) 2. Acquire required dependencies: Package Managers (apt, npm, gem) 3. Build the system: Build Managers (ant, mvn, gulp, rake) 4. Run tests: Test Runners (junit, karma, rake test)

Smoke Tests Preliminary tests to reveal catastrophic failures. Only a few tests will run. Tests should not be flaky. Tests should be cheap to run. Important for systems with huge test suites. Validates key functionality. If they do not pass, it is not worth bothering with the full suite; the build is broken.

REID HOLMES - CPSC 410: Advanced Software Engineering Continuous Integration A practice where developers automatically build, test, and analyze each change committed to the source repository.

Why CI? Detect and fix problems faster. Measurable software health. Document environmental assumptions. Effort on automation eases release stress / errors. Global failure feedback. Gives developers trust in their changes.

Principles Invest in automated tools. Frequent commits. Only commit compiling code. Fix broken builds immediately. All tests must pass. Run private builds. Pull code only from known-good configurations.

Risks (of not doing CI) Little confidence tests will pass after integration. Long integration phases. Inability to generate testable builds. Fear of making large changes (e.g., refactoring). Late defect discovery. Low quality awareness.

Automated Testing at Google 10,000 devs HTTP://WWW.INFOQ.COM/PRESENTATIONS/CONTINUOUS-TESTING-BUILD-CLOUD 50,000 builds / day Monorepo Practical Issues: Load Growth and Spikes Bigger and bigger tests Long running tests with lots of dependencies trigger often Load spikes Most submits are during west-coast US working hours Low-level changes can trigger many thousands of tests Everyone submits before going to lunch 20+ changes / minute 10 million test suites / day 60 million test cases executed per day

Code Analysis Linting Flags suspicious source code constructs. Heuristic-based. e.g., use before def, div/0, range violations. Esp. important for interpreted languages. Dependency analysis Checks code dependencies and identifies call sites that could be affected by a change. Architectural compliance checking Ensure change does not violate model.

CI Challenges Granularity: Every change? Time delta? Batching? How to deal with failures: Notify one person? Team? Organization? Tool support: Remote test execution (Jenkins, Travis CI) Track build failures (Jenkins, Travis CI) Track per-test failures (Jenkins)

REID HOLMES - CPSC 410: Advanced Software Engineering Continuous Delivery A practice that ensures that a software change can be delivered and ready for use by a customer in production-like environments.

Continuous Delivery Dogfooding Heavier infrastructure needs: Test infrastructure. Containers helpful: Build & distribute virtual environment (vagrant can manage VM or containers like Docker) Why Continuous Delivery? Can deploy at _any_ time (e.g., security fixes). Even better feedback / more confidence.

Managing Infrastructure Configuring hosts is not easy in practice: Dynamic: Install/manage hosts (cobbler) Configure host environment (puppet, chef) Deploy code to hosts (ansible, puppet, chef) Monitoring hosts (puppet, AppDynamics) Static: Amazon Machine Image (AMI) Similar to above tools but static snapshots.

REID HOLMES - CPSC 410: Advanced Software Engineering Continuous Deployment A practice where incremental software changes are automatically tested, vetted, and deployed to production environments.

Deployment Automation REID HOLMES - CPSC 410: ADVANCED SOFTWARE ENGINEERING HTTPS://DZONE.COM/ARTICLES/DEPLOYMENT-AUTOMATION-VS-BUILD

Example Pipeline Example Deployment Pipeline