Upgrade to remove ads
DevOps and Tools - Midterm Study
Terms in this set (77)
An engineering culture that allows the development and the operations team to work together to accelerate the software development life cycle from idea to production.
A software development methodology that focuses on iterative, incremental, small, and rapid releases of software, along with customer feedback.
What are the stages to a complete DevOps solution?
Minimum viable product; the bare minimum of a product that still accomplishes its most basic objectives.
What six key DevOps categories should architects consider and weigh?
How often does continuous integration require an automated test suite to run tests?
Every time code is committed to a code tracking system.
Automation is key to enabling a "_____ _____" mentality, and testing allows you to "_____ _____" and often if done well.
Shift left, fail early
Developers must make sure that each component does its job and then continues to do its job after updates and changes by writing tests and treating the test code as code.
The development life cycle should include time for what steps?
* Developing test cases
* Writing automated tests
* Running manual tests (if still required)
* Reflecting the delivery
* Making adjustments
Verify that after changes are made to the code, key metrics for how the application works and runs haven't changed as well.
Movement of code from one environment to another.
Name some environments that code can be deployed to.
* User acceptance testing (UAT)
* Quality assurance (QA)
Deployment of code to production for customers.
Continuous Integreation and Continuous Delivery/Deployment (CI/CD)
Breaks down the walls that have historically existed between teams and instead institute a smoother development process.
Merge code changes back into the master or development branch as often as possible, usually with an integration tool to validate the build and run automated tests against the new code
Developers treat every change to the code as deliverable. Releases must be triggered by a human, and the change may not be immediately delivered to an end user.
Every change that passes the entire production
release pipeline is deployed. Code is put directly into production with a thoroughly automated test suite, eliminating human intervention from the deployment process.
How can you implement continuous deployment?
* Maintain a strong testing culture
* Document new features
* Coordinate with other departments
Two versions of a software are released to the production environment and a router is used to determine which version customers have access to. This reduces service outages resulting from a bad deployment.
Software changes are shipped to select customers as a way of testing functionality and reliability in production while limiting the number of customers potentially impacted. Gradual transition between two versions rather than cutting over all at one time.
This type of deployment replaces the version of an application running on a specific instance, instead of releasing a new version to select customers in small incremental chunks. The new version is deployed to each instance one at a time (or in clusters) until all instances or machines are running the latest version.
The size of your grouping is referred to as the _____ _____.
Service Level Agreement (SLA)
The availability you agree to maintain with your customers over a set period of time. It is typically part of your service contracts and is legally enforceable.
Site Reliability Engineers (SREs)
Software engineers at Google who design an
operations team to create systems to accomplish the work that would otherwise be performed, often manually, by sysadmins.
To make risk management tractable and consistent across many types of systems Google runs, they focus on _____ _____.
Unplanned downtime is captured by the desired level of _____ _____, usually expressed in terms of the number of "nines" they would like to provide: 99.9%, 99.99%, or 99.999%.
What are the four golden signals of monitoring?
SREs run services, a set of related systems operated for users, and are ultimately responsible for the health of these services.
What is the typical day-to-day activity for SREs?
Building and operating large distributed computing systems.
Infrastructure as code (IaC)
The process of managing and provisioning computing infrastructure (processes, bare-metal servers, virtual servers, etc.) and their configuration through machine-processable definition files, rather than physical hardware configuration or the use of interactive configuration tools.
A tool used for bug tracking, issue tracking, and project management, with a dashboard consisting of many useful functions and features which make handling of issues easy.
An integrated development environment (IDE) used in computer programming for developing Java applications. It can also be used to develop for other programming languages via plug-ins.
An integrated development environment (IDE) used in computer programming for developing Python applications. It provides code analysis, a graphical debugger, an integrated unit tester, and integration with version control systems (VCSes).
An open-source software tool for automating the build processes of Java software. Initially designed to replace the UNIX Make build tool for Java development, Ant uses XML to describe the code build process and its dependencies (build.xml) instead of a Makefile.
A unit testing framework for the Java programming language, linked as a JAR at compile-time, commonly included as an external library for Java projects. Has been important in the introduction of test-driven development.
An open-source tool used for automating the tests carried out on the web. Only used for testing web applications, but tests can be written in a variety of languages, can be run in many operating systems and in any browser, can be integrated with unit test tools and CI tools like Maven and Jenkins.
A free and open-source version control system that allows you to track changes in a file in which its work can be easily coordinated among your team. It allows for distributed development, supports pull requests, has feature branch workflow, and enables a faster release cycle.
An open-source continuous integration (CI) server written in Java, used for near-real-time change tests and reports. Useful to rapidly find and resolve bugs in code and automate build testing. Has thousands of plug-ins available and provides communication through a web-based GUI, command line, or API.
An open-source DevOps systems management tool for centralizing and automating the configuration management process. Used to configure, manage, deploy, and orchestrate various applications and services across a whole organization infrastructure.
A system that records changes to a file or set of files over time so that you can recall specific versions later. Allows for reverting selected files or the entire project back to a previous state, and compare project changes and issues over time.
What are the three stages of Git and their associated sections?
* Modified (Working Tree)
* Staged (Staging/Index Area)
* Committed (Repository)
How do you create a Git repository for the current directory?
git init .
How do you check the working state of the project with Git?
How do you instantiate or copy over the changes of the README.md file to the staging area in Git?
git add README.md
How do you instantiate or copy over the changes of all the files in the current directory?
git add .
How do you instantiate or copy over the changes of the files in the directory that begin with the letter "R"?
git add R*
How do you take a "snapshot" of the files in the staging area to be put to the repository?
What Git command copies files from the stage to the working directory, throwing away local changes?
How can you check to ensure that a commit has been stored to the repository?
What Git command can be used to
stage changes (but not new files) and commit the staged changes to the repository?
git commit -a
What Git command is used to commit the staged changes to the repository with an attached message (50 characters max) that README.md was added?
git commit -m "add README.md"
What Git command is used to display the differences between the README.md file that was just edited in the workspace versus the version in the staging/index area?
git diff README.md
What Git command is used to display the differences between the staged README.md file with the version in the repository?
git diff --staged README.md
What Git command is used to display the differences between the README.md file in the workspace versus the version in the repository?
git diff HEAD README.md
What Git command is used to show the differences between commit 0123abc and 4567def?
git diff 0123abc 4567def
What Git command is used to eliminate the current commit in the repository and revert back to the commit before?
git reset --hard HEAD^
What Git command is used to revert the staged README.md back to the state it is in the repository?
git reset HEAD README.md
What command is used to remove README.md locally?
What Git command is used to remove README.md both from the local directory and the stage/index?
git rm -f README.md
Making a working copy of source code to then mak changes to the copy.
A symbolic pointer for Git to know which branch has been checked out.
What is the name of the default branch that Git creates?
What Git command can be used to create a branch called "dev"?
git branch dev
What Git command is used to switch to another branch called "dev"?
git checkout dev
All the changes from different developers working on different code bases are brought back together to create one version of the code that can be deployed.
A merge that occurs when there is a linear path from the current branch tip to the target branch. The current branch tip is moved up to the target branch tip, combining the histories of the branches.
What Git command should be executed to list the differences between the latest commit of "master" with the latest commit of "dev"?
git diff master..dev
What Git command is used to merge the "dev" branch to the one currently pointed to by HEAD?
git merge dev
What Git command is used to check what branches have been merged together?
git branch --merged
What Git command is used to delete the "dev" branch?
git branch -d dev
When a direct path from one branch to another does not exist, in which a fast-forward merge is not possible, a _____ occurs.
A specific commit on a given branch is applied to another branch, instead of all commits.
What Git command is used to add commit 4567def to the branch currently pointed to by HEAD?
git cherry-pick 4567def
A branch is merged on top of another without any merge commits, forming a simple linear branch. The branch changes are patched on top of the other, and a fast-forward merge is executed.
What command is used to rebase "dev", where HEAD is pointing to, on top of "master"?
git rebase master
What Git command is used to merge the new changes of "dev" with "master" in a fast forward fashion only?
git merge --ff-only dev
When the same files being merged have changes in the same lines.
OTHER SETS BY THIS CREATOR
DevOps and Tools - Final Study
DevOps Intro Final Study
DevOps Intro Midterm Study