Effective DevOps

I don't really know what DevOps is, and I want to learn more about it. I am looking for better ways to update the code on this site. This is currently done by restarting a systemd process, which results in some downtime.

Date Created:
Last Edited:
1 23

References


  • Effective DevOps: Building a Culture of Collaboration, Affinity, and Tooling at Scale; by Jennifer Davis & Katherine Daniels


What is DevOps?


Devops is a way of thinking and a way of working. It is a framework for sharing stories and developing empathy, enabling people and teams to practice their crafts in effective and lasting ways.
Devops is a cultural movement that changes how individuals think about their work, values the diversity of work done, supports intentional processes that accelerate the rate by which businesses realize value, and measures the effect of social and technical change. It is a way of thinking and a way of working that enables individuals and organizations to develop and maintain sustainable work practices. It is a cultural framework for sharing stories and developing empathy, enabling people and teams to practice their crafts in effective and lasting ways.

Software Development Methodology - the process of splitting up development work into different phases

The waterfall methodology or model is a project management process with an emphasis on a sequential progression from one stage of the process to the next.

Scrum is a software development methodology that focuses on maximizing a development team's ability to quickly respond to changes in both project and customer requirements. It uses predefined development cycles called sprints. One of the key features if Scrum is the daily standup, a meeting where team members answer the following questions:

  • What did I do yesterday that helped the team meet its sprint goals?
  • What am I planning to do today to help the team meet those goals?
  • What, if anything, do I see that is blocking either me or the team from reaching their goals?

A version control system records changes to files stored within the system. This can be source code, assets, and other documents that may be part of a software development project. Developers make changes in groups called commits or revisions. Each revision, along with metadata such as who made the change and when, is stored within the system in one way or another. In test-driven development, the code developer starts by writing a failing test for the new code functionality, then writes the code itself, and ensures that the test passes when the code is complete. Application deployment is the process of planning, maintaining, and executing on the delivery of a software release.

Continuous integration (CI) is the process of integrating new code written by developers with a mainline or master branch frequently throughout the day. This is in contrast to having developers working on independent feature branches for weeks or months at a time, merging their code back to the master branch only when it is completely finished. In order to make sure that the integrations were successful, CI systems will usually run a series of tests automatically upon merging in new changes.

Continuous delivery (CD) is a set of general software engineering principles that allow for frequent releases of new software through the use of automated testing and continuous integration.

Continuous Deployment (CD) is the process of deploying changes to production by defining tests and validations to minimize risk.

The idea of the minimum viable product (MVP) is to create a prototype of a proposed product with the minimum amount of effort required to determine if the idea is a good one. MVPs allow organizations to iterate and improve more quickly while reducing cost and waste.

Configuration management (CM) is the process of establishing and maintaining the consistency of something's functional and physical attributes as well as performance throughout its lifecycle. This includes policies, processes, documentation, and tools required to implement this system of consistent performance, functionality, and attributes.

Cloud computing refers to a type of shared, internet-based computing where customers can purchase and use shared computing resources by various cloud providers as needed. The combination of high performance, cost savings, and the flexibility and convenience that many cloud solutions offer has made the cloud an ideal choice for organizations that are looking to both minimize costs and increase the speed at which they can iterate.

Infrastructure automation is a way of creating systems that reduces the burden on people to manage systems and their associated services as well as increasing the quality, accuracy, and precision of a service to its consumers.

An artifact is the output of any step in the software development process.

Software containers are isolated structures that can be developed and deployed relatively independently from the underlying operating system or hardware. Containers provide a way of sandboxing code that runs in them, but unlike virtual machines, they generally have less overhead and less dependence on the operating system and hardware that support them.

A retrospective is a discussion of a project that takes place after it has been completed, where topics such as what went well and what could be improved in future projects are considered. A postmortem occurs after ab unplanned incident or outage, for cases where an event's outcome was surprising to those involved and at least one failure of the system or organization was revealed.

Devops Misconceptions and Anti-Patterns

Common Devops Misconceptions

  • Devops only involves developers and system administrators
  • Devops is a team
  • Devops is a Job Title
  • Devops is relevant only to web startups
  • You need a Devops certification
  • Devops means doing all the work with half the people
  • There is only one right way to do Devops
  • Devops takes a fixed amount of time to implement
  • Devops is all about the tools
  • Devops is about automation
  • Devops is a Fad

Devops Anti-Patterns

  • Blame Culture
    • A blame culture is one that tends toward blaming and punishing people when mistakes are made either at an individual or an organizational level.
  • Silos
  • Root Cause Analysis
    • Root cause analysis (RCA) is a method to identify contributing and root causes to events or near-misses/close calls and the appropriate actions to prevent recurrence.
  • Human Error

The Four Pillars of Effective Devops

The four pillars of effective Devops:

  1. Collaboration
    1. The process of building toward a specific outcome through supporting interactions and the input of multiple people.
  2. Affinity
    1. Affinity is the process of building these inter-team relationships, navigating differing goals or metrics while keeping in mind shared organizational goals, and fostering empathy and learning between different groups of people.
  3. Tools
    1. Tools are an accelerator, driving change based on the current culture and direction.
  4. Scaling
    1. The focus on the processes and pivots that organizations must adopt throughout their lifecycles.


Comments

You have to be logged in to add a comment

User Comments

Insert Math Markup

ESC
About Inserting Math Content
Display Style:

Embed News Content

ESC
About Embedding News Content

Embed Youtube Video

ESC
Embedding Youtube Videos

Embed TikTok Video

ESC
Embedding TikTok Videos

Embed X Post

ESC
Embedding X Posts

Embed Instagram Post

ESC
Embedding Instagram Posts

Insert Details Element

ESC

Example Output:

Summary Title
You will be able to insert content here after confirming the title of the <details> element.

Insert Table

ESC
Customization
Align:
Preview:

Insert Horizontal Rule

#000000

Preview:


View Content At Different Sizes

ESC

Edit Style of Block Nodes

ESC

Edit the background color, default text color, margin, padding, and border of block nodes. Editable block nodes include paragraphs, headers, and lists.

#ffffff
#000000

Edit Selected Cells

Change the background color, vertical align, and borders of the cells in the current selection.

#ffffff
Vertical Align:
Border
#000000
Border Style:

Edit Table

ESC
Customization:
Align:

Upload Lexical State

ESC

Upload a .lexical file. If the file type matches the type of the current editor, then a preview will be shown below the file input.

Upload 3D Object

ESC

Upload Jupyter Notebook

ESC

Upload a Jupyter notebook and embed the resulting HTML in the text editor.

Insert Custom HTML

ESC

Edit Image Background Color

ESC
#ffffff

Insert Columns Layout

ESC
Column Type:

Select Code Language

ESC
Select Coding Language

Insert Chart

ESC

Use the search box below

Upload Previous Version of Article State

ESC