Chapter 10 - DevOps Flashcards

1
Q

DevOps

A

a movement that aims to bridge the development (Dev) and operations (Ops) cultures, enabling faster and more agile software deployments

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Version Control System (VCS)

A

First, it provides a repository to store the most recent version of a system’s source code, as well as related files, such as documentation files, configuration files, web pages, wikis, etc. Second, it allows the retrieval of older versions of any file, if necessary.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Distributed Version Control Systems (DVCS)

A

Instead of a client/server architecture, a DVCS employs a peer-to-peer architecture. In practice, this means that each developer has a full version control system on their own machine, which can communicate with systems on other machines

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Git

A

a distributed version control system developed under the leadership of Linus Torvalds, who is also responsible for creating the Linux operating system

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

GitHub

A

a code hosting service that uses the Git system to provide version control.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

multirepos

A

the VCS manages several repositories. Normally, one repository per project.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

monorepos

A

the VCS manages a single repository. Projects are directories of this repository.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Branches

A

internal and virtual sub-directories, managed by the version control system

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

main (when using Git) or trunk (when using other systems, such as SVN)

A

a principal branch

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

feature branches

A

before implementing a new feature, developers often create a branch to hold its code

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

merge

A

When the new feature is completed, its code must be integrated back into the main branch

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

integration or merge conflicts

A

merging can lead to a variety of conflicts

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

integration hell or merge hell

A

commonly used to describe the problems related to the integration of feature branches.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Continuous Integration (CI)

A

a programming practice that originated from Extreme Programming (XP). If a task causes pain, we should not let it accumulate. Instead, we should break it into subtasks that can be performed frequently. Because these subtasks are small and simple, they will cause less pain.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

CI Servers

A

Before a new commit reaches the main branch, the version control system notifies the CI server, which clones the repository,
performs a build, and runs the tests.

The CI server then notifies the commit author about any build errors or failing tests.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Trunk-Based Development (TBD)

A

there are no longer branches for new features or bug fixes (or they exist only in the developer’s local repository and thus have a short duration). As a result, all development takes place on the main branch, also known as the trunk.

17
Q

Pair Programming

A

any new piece of code is reviewed by another developer, who sits next to the lead developer during the programming session

18
Q

Continuous Deployment (CD)

A

every new commit that reaches the main branch is deployed to production, typically within a matter of hours, for instance.

19
Q

Continuous Delivery

A

every push is prepared for immediate deployment to production. However, an external authority—such as a project manager or a release manager— decides when the pushes will actually be released to customers.

20
Q

Deployment vs Delivery

A

Deployment is the process of releasing new software versions to customers.

Delivery is the process of preparing new software versions for potential deployment.

21
Q

feature flags or feature toggles

A

variables used to prevent the deployment of partial implementations

22
Q

canary release

A

a new feature—guarded by a feature flag—is initially made available to a small group of users, for example, only 5% of the user base. This approach minimizes any problems caused by potential bugs in this new feature. After a successful initial deployment, the percentage of users with access to the new feature is gradually increased until it reaches all users.

23
Q

A/B Tests

A

two versions of a feature (old versus new version, for instance) are simultaneously released to distinct user groups, aiming to verify if the new feature indeed adds value to the current implementation.

24
Q

release flags

A

feature flags to prevent a code segment from reaching customers when an organization is using Continuous Deployment

25
Q

business flags

A

creating different versions of the same software. For instance, consider a system with a free and a paid version. Customers of the paid version have access to more features, with this access controlled by feature flags.