A Brief History of DevOps and the Link to Cloud Development Environments
In this article, I use the famous DevOps HandBook to regurgitate a concise history of DevOps, add my personal experience and opinion, and establish a link to Cloud Development Environments (CDEs), i.e. the practice of providing access to, and running, development environments online as a service for developers.
Published: January 31, 2024
A Few Good Books on DevOps’ History
The Agile Manifesto
The Three Ways of DevOps and the Principles of Flow
- improving the flow of work (First Way), i.e the elimination of bottlenecks, reduction of batch sizes, and acceleration of workflow from development to production,
- amplifying feedback loops (Second Way), i.e. quickly and accurately collect information about any issues or inefficiencies in the system, and
- fostering a culture of continuous learning and experimentation (Third Way), i.e encourage a culture of continuous learning and experimentation.
From Developer Workstations to a CDE Platform
- manage development environments online, as containers or virtual machines such that developers can access them fully built and configured, substituting step (1) above; then
- provide a mechanism for authoring source code online, i.e. inside the development environment using an IDE or a terminal, substituting step (2); and finally
- provide a way to execute build commands inside the development environment (via the IDE or terminal), substituting step (3).
What Comes Out of Using Cloud Development Environments in DevOps
- Streamlined Workflow: CDEs enhance the workflow by removing data from the developer's workstation, decoupling the hardware from the development process. This ensures that the development environment is consistent and not limited by local hardware constraints.
- Environment Definition: With CDEs, version control becomes more robust as it can uniformize not only the environment definition but all the tools attached to the workflow, leading to a standardized development process across the organization and consistency across teams.
- Centralized Environments: The self-service aspect is improved by centralizing the production, maintenance, and evolution of environments based on distributed development activities. This allows developers to quickly access and manage their environments without the need for Operations' manual work.
- Asset Utilization: Migrating the consumption of computing resources from local hardware to centralized and shared cloud resources not only lightens the load on local machines but also leads to more efficient use of organizational resources and potential cost savings. You can test economic assumptions with this online calculator.
- Improved Collaboration: Ubiquitous access to development environments, secured by embedded security measures in the access mechanisms, allows organizations to cater to a diverse group of developers, including internal, external, and temporary workers, fostering collaboration across various teams and geographies.
- Scalability and Flexibility: CDEs offer scalable cloud resources that can be adjusted to project demands, facilitating the management of multiple containerized environments for testing and development, thus supporting the distributed nature of modern software development teams.
- Enhanced Security and Observability: Centralizing development environments in the Cloud not only improves security (more about secure CDEs) but also provides immediate observability due to their online nature, allowing for real-time monitoring and management of development activities.