OODA - Observe, Orient, Decide, Act
Version Control - ADO, Github Agile - sprints
Projects must have a clearly defined set of measurable outcomes
- reduce time fixing bugs by 60%
- reduce unplanned work
- reduce out of band work Goal of devops is to provide greater customer value
Types of projects
- Greenfield - Brand new
- Brownfield - something exists and you're being dragged into it.
Decide when to use greenfield and brownfield projects
Greenfield projects
A greenfield project will always appear to be a more accessible starting point. A blank slate offers the chance to implement everything the way that you want.
Suppose current IT policies do not allow the use of cloud-based infrastructure. In that case, the project might be qualified for entirely new applications designed for that environment from scratch.
For example, you can sidestep internal political issues that are well entrenched.
Brownfield projects
Usually, brownfield projects come with:
The baggage of existing codebases.
Existing teams.
A significant amount of technical debt.
But, they can still be ideal projects for DevOps transformations.
When your teams spend large percentages of their time just maintaining existing brownfield applications, you have limited ability to work on new code.
It is essential to find a way to reduce that time and to make software release less risky. A DevOps transformation can provide that.
Agile Manifesto
Team members
Azure DevOps
Organization
Projects
Source Control
What is source control? A Source control system (or version control system) allows developers to collaborate on code and track changes. Use version control to save your work and coordinate code changes across your team. Source control is an essential tool for multi-developer projects.
The version control system saves a snapshot of your files (history) so that you can review and even roll back to any version of your code with ease. Also, it helps to resolve conflicts when merging contributions from multiple sources.
Centralized
- TFVC, Subversion
Decentralized
- Mercurial, Git
Git (distributed)
Git is a distributed version control system. Each developer has a copy of the source repository on their development system. Developers can commit each set of changes on their dev machine.
Branches are lightweight. When you need to switch contexts, you can create a private local branch. You can quickly switch from one branch to another to pivot among different variations of your codebase. Later, you can merge, publish, or dispose of the branch.
Team Foundation Version Control (TFVC-centralized)
Team Foundation Version Control (TFVC) is a centralized version control system.
Typically, team members have only one version of each file on their dev machines. Historical data is maintained only on the server. Branches are path-based and created on the server.
TFVC has two workflow models:
- Server
- Local
Azure DevOps
SSH Key authentication
Git
Summary