DevOps Flashcards
What is DevOps?
DevOps (development and operations) is an enterprise software development phrase used to mean a type of agile relationship between development and IT operations.
The goal of DevOps is to change and improve the relationship by advocating better communication and collaboration between these two business units.
A set of practices that works to automate and integrate the processes between software development and IT teams, so they can build, test, and release software faster and more reliably.
What are the main principles & aspects of DevOps?
Communication, collaboration and integration.
Infrastructure as code Continuous deployment Automation Monitoring Security
What is CI?
Continuous Integration (CI) – developers integrate code into a shared repository multiple times a day
Each isolated change to the code is tested immediately in order to detect and prevent integration problems.
e.g. Jenkins, Teamcity
What is CD?
Continuous Delivery (CD) – As an extension of CI & the next step in incremental software delivery, CD ensures that every version of the code that is tested in the CI repository can be released at any moment.
e.g. Jenkins, Teamcity
What is DevOp’s engineers role in agile development?
DevOps engineer work very closely with Agile development teams to ensure they have an environment necessary to support functions such as automated testing, continuous Integration and continuous Delivery.
A DevOps engineer must be in constant contact with the developers and make all required parts of environment work seamlessly.
What is the function of a CI server?
- continuously integrate all changes being made & committed to repos by different developers.
- check for compile errors
- to build code several times a day, preferably after every commit so it can detect which commit made the breakage if the breakage happens.
What is Resource Orchestration?
The coordination & integration of computer systems. (& automated workflows).
E.G. for micro-services, service-oriented architecture, converged infrastructures, virtualization, and provisioning.
Orchestration makes sure that business needs are aligned with your IT infrastructure resources by leveraging defined AUTOMATED workflows.
What does Containerisation mean?
Containerisation is a type of virtualisation strategy that emerged as an alternative to traditional hypervisor-based virtualisation.
In containerisation, the operating system is shared by the different containers rather than cloned for each virtual machine.
E.G. Docker provides a container virtualisation platform that serves as a good alternative to hypervisor-based arrangements.
What is a container?
Linux containers are lightweight virtualization components that run isolated application workloads. They run their own processes, file systems, and network stacks, which are all virtualized using the root operating system (OS) running on the hardware.
E.G Docker, Kubernetes
What is CM (continuous monitoring) and why is it neccessary?
Continuous Monitoring allows timely identification of problems or weaknesses and quick corrective action that helps reduce expenses of an organisation. Continuous monitoring provides solution that addresses three operational disciplines known as:
continuous audit
continuous controls monitoring
continuous transaction inspection
What is Source/Version Control?
Git/ GitHub
What is a bug tracker?
A bug tracker is a system that aggregates and reports software bugs and defects. It helps R&D organizations with task management and is part of the consistent feedback loop that the DevOps methodology requires.
e.g. JIRA, GitHub
What are the benefits of Test Automation?
It enhances test coverage while supporting efficient release cycles.
E.G. test automation tools help manage, execute, and measure functional tests and load tests.
What is Docker?
Docker is a containerisation platform.
It packages your application & all its dependencies together in the form of containers.
This ensures your application works seamlessly in any environment be it development or test or production.
Docker containers, wrap a piece of software in a complete filesystem that contains everything needed to run: code, runtime, system tools, system libraries etc. anything that can be installed on a server.
This guarantees that the software will always run the same, regardless of its environment. (environment-agnostic)
E.G. replicating the environment it was built in.