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.
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.
- Root cause analysis (RCA) is a method to identify contributing and
- Human Error
The Four Pillars of Effective Devops
The four pillars of effective Devops:
- Collaboration
- The process of building toward a specific outcome through supporting interactions and the input of multiple people.
- Affinity
- 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.
- Tools
- Tools are an accelerator, driving change based on the current culture and direction.
- Scaling
- 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
There are currently no comments for this article.