Image by Kelly Sikkema

Video Content

 

Water-Scrum-Fall

The Start

The term Water-Scrum-Fall is used to describe a situation where a company runs their development teams in an agile fashion while interfacing with more traditional waterfall processes outside of the Scrum team. In essence, Scrum is inserted into the middle of a Waterfall Environment.

Introduction

Section 1 - Part 1

I’ve tried to make this article series as accessible as possible for people without significant experience with Software Development and Operations, whilst at the same time trying to ensure it’s also of use for those that do. This particular article is intended as a cheat-sheet for those in the former camp, covering some fairly basic principals necessary to get the most out of the series. Those in the latter camp are likely to already be familiar with the content, in which case you have my permission to skip ahead to the next article.

Environments

Section 1 - Part 2

The concept of an environment is particularly useful when the same application is deployed to different environments. The environments’ independence and isolation from one another creates opportunities to undertake different kinds of activities in each without one affecting the other.

Environmental Consistency

Section 1 - Part 3

Testing software in any environment other than the production environment would be futile if we didn’t have confidence that the application being tested will behave the same once in the production environment as it does where it is being tested.

Introduction to DevOps

Section 2 - Part 1

The DevOps movement has emerged as a set of solutions to a set of recurring problems which limit all manners of organisations’ abilities to deliver and to grow, characterised by the fact that they are attributed principally to the organisations’ Development and Operations departments having isolated approaches. Understanding DevOps really involves understanding these common problems and recognising solutions to them.

Early & Constant Issue Identification & Resolution

Section 2 - Part 2

In many organisations, most issues are only identified when they are reported by customers or users ... is there an alternative ?

Minimising Downtime

Section 2 - Part 3

The quest for ‘zero downtime’ is most pertinent to production environments, where end users would otherwise be affected. Here we look at traditional blue-green deployment.

Continuous Integration

Section 3 - Part 1

The first practice of Continuous Integration is purely process-based. Code branches should be as small as possible and merged back into the main code as frequently as possible. In this way it is easy to identify the causes of issues found and rollbacks are small.

Source Code Management Tool

Section 3 - Part 2

Source code management (SCM) is used to track modifications to a source code repository. SCM tracks a running history of changes to a code base and helps resolve conflicts when merging updates from multiple contributors. SCM is also synonymous with Version control.

Build Tool

Section 3 - Part 3

Build tools are programs that automate the creation of executable applications from source code. Building incorporates compiling, linking and packaging the code into a usable or executable form. In small projects, developers will often manually invoke the build process. This is not practical for larger projects, where it is very hard to keep track of what needs to be built, in what sequence and what dependencies there are in the building process. Using an automation tool allows the build process to be more consistent.

Binary Repository Manager

Section 3 - Part 4

A binary artifact repository stores binary artifacts along with the metadata in a defined directory structure, conceptually similar to a source code repository.

Unit Tests

Section 3 - Part 5

Unit Testing is a type of software testing where individual units or components of a software are tested. The purpose is to validate that each unit of the software code performs as expected.

Integration Tests

Section 3 - Part 6

Integration Testing is defined as a type of testing where software modules are integrated logically and tested as a group.

Automated Test Execution

Section 3 - Part 7

The Automated Tests Execution Engine sets up and executes automated tests against a software application, assessing and reporting on their results against expected behaviour. Automated tests provide feedback to developers within minutes, to accelerate delivery cycles and realise returns on investment sooner.

Code Quality Manager

Section 3 - Part 8

The Code Quality manger assesses code for resource leaks, null pointer references, security vulnerabilities, adherence to organisational coding standards and test coverage.

Automation Server

Section 3 - Part 9

The Automation Server provides the framework to trigger and orchestrate the tools which build, test and inspect committed code, report on the results and store output.