Development and Operations (DevOps)

Introduction

(From Canvas) You define how you are going to support all stakeholders’ needs in your software development process, especially regarding inevitable changes involving the application (for instance reporting, Service Level Agreements, changes in requirements, releases, end user wishes).

You define environments which will be used by developers in the development and creation of software (for instance test and production environments). These infrastructure environments are defined using ‘Infrastructure as code’ principles.

You make parts of your application independently deployable (for instance using containers). You support automatic testing and measurements which prove the quality of the application (for instance code coverage, security assessment, support for monitoring). You automate all the above as much as possible (for instance using CI/CD principles).

Learning focuses

https://i.imgur.com/oljuVDA.png

Devops has become an integrated part of Software Development.

In order to shape the upcoming curriculum, I’ve chosen various learning focuses for Development and Operations. These are work in progress, and have to be developed out further.

With an automated software build, often called Continuous Integration (CI) and Deployment (CD), one can automate a large part of the software development process. Think about building, testing, deploying, and so on. (Security) defects can be detected easier and sooner. Deploying a new version of the software will also become much easier when using the right tools.

A fairly common scenario with automated software builds is that the software is pulled from a version control system like Git right after a new commit or merge action. The tooling will build the latest version of the code and run the designated tests. When one or more tests fail it will notify the team about this. Otherwise, it will continue the build and eventually deploy the executable onto the right server.

https://i.imgur.com/YYLJM88.png

Category

In the tables below the category tab depicts the nature of the skill concerning the listed task.
Additionally to the standard, I’ve expanded with a custom table with tasks I came up with.
  • T = Technical skills

  • N = Non-technical skills

  • R = Research & development skills

  • P = Professional skills

Learning tasks

Task#

Category

Requirement

Status

Description

#0

T

Should

Done

Setup Portainer as a container manager

#1

T

Must

Done

Setup Jenkins & make it publicly accessible

#2

T

Should

Done

Setup Rancher

#3

T

Must

Done

Setup SonarQube

#4

T+R

Should

Done

Integrate automatic SonarQube static analysis testing

#5

T+R

Must

Done

Expand Jenkins pipeline with Docker.io publishing

#6

P

Should

Done

Share CI/CD knowledge to the team