Summary of some concepts about DevOps, based on the book "Modern Software Engineering" - Marco Tulio Valente (https://engsoftmoderna.info/)
Imagine a world where product owners, development, QA, IT Operations, and Infosec work together, not only to help each other but also to ensure that the overall organization succeeds. โ Gene Kim, Jez Humble, Patrick Debois, John Willis
๐ What do you find here?
<aside> ๐ Create a repeatable and reliable process for delivering software: the idea is that software delivery cannot be a traumatic event, with manual steps and subject to surprises. Instead, putting software into production should be as simple as pressing a button.
Automate everything possible: it is advocated that all steps for software delivery must be automatic, including its build, the execution of tests, the configuration and activation of servers and the network, the loading of the database, etc.
Keep everything in a version control system: everything in the principle statement refers not only to all source code, but also system administration files and scripts, documentation, Web pages, data files, etc. Consequently, it must be simple to restore and return the system to a previous state.
If a step causes pain, do it more often and as soon as possible: the idea is to anticipate problems, before they accumulate and the solutions get complicated.
Completed means ready for delivery: this principle argues that when completed, in software projects, it must have a clear semantics, that is: 100% ready to go into production.
Everyone is responsible for delivering the software: it is no longer accepted that the development and operations teams work in independent silos and exchange information only on the eve of a deployment.
</aside>
<aside> ๐ CVCS: centralized VCSs keep the history of changes on a central server from which everyone requests the latest version of the work and pushes the latest changes to. This means that everyone sharing the server also shares everyoneโs work. Sourceforge.net uses this type of versioning in their projects. (Subversion)
DVCS: A distributed version control system (DVCS) is a type of version control where the complete codebase โ including its full version history โ is mirrored on every developer's computer. (Git, Github)
</aside>
Continuous integration (CI) is the practice of automating the integration of code changes from multiple contributors into a single software project. Itโs a primary DevOps best practice, allowing developers to frequently merge code changes into a central repository where builds and tests then run. Automated tools are used to assert the new codeโs correctness before integration.
<aside> ๐ Best Practices
</aside>