The previous post discussed moving enterprise builds and deployments to the cloud for massive
repositories. This article explores the significant other challenges that must
also be overcome to do so.
The environment provisioning and manual testing of the
environment is critical for the DevOps processes to gain popularity. As with
any DevOps practice, the principles on which they are founded must always
include a focus on people, process and technology. With the help of
Infrastructure-as-a-code and blueprints, resources, policies and accesses can
be packaged together and become a unit of provisioning the environment. Not all
such deployments will cater to all the teams. Instead of allowing teams to
customize, there must be some T-shirt sizing and pre-defined flavors for the
environment. Common examples are development, stage and production for flavors
and sizes might involve small, medium or large. Roles could be administrator,
contributor and reader while naming conventions can include well-understood
prefixes and/or suffixes. When organizations look for environments to deploy
code, they might not plan for all of the resources or the best practices for
their configuration. Having the environment to be well-thought out and
pre-defined templates allows them to focus more on their business objectives.
Unfortunately, the task of creating environments might be daunting for a
centralized organization wide IT staff and especially when there are
cross-cutting concerns. In such cases, it is better to delegate the choices to
the customers and then use a consensus to prepare the environments. When the
environment choices and configurations are baked, they can be made reusable,
and a registry could be used to maintain their versions and share them out.
Container images, source code repositories and release
repositories are all examples of reusability of the artifacts that they store.
The public cloud comes with many aspects of automations, functions, runbooks
and logic apps that can help ease the customizations that individual teams
need. Creating a pipeline often involves programmability for these teams to
leverage but it is not possible to anticipate all their logic or provide a
library of common routines. Only as usage increases over time, it is possible to
curate scripts.
In the build and development, there are always cyclical
dependencies that are encountered at various scopes and levels. These must be
broken by forming an initial artifact or logic with which the subsequent cycles
can work with. The creation of a dependency container, for example, might
require the creation of a dependency which in turn might require the container
to package the dependency. This can be broken by creating the first version of
the dependencies and then allowing the subsequent to use the iterative
versions. Cyclical dependencies are a symptom of trouble that must be actively
sought to be eliminated with more streamlined processes so that there is no
remediation required.
The DevOps Adoption RoadMap has evolved over time. What used to be Feature Driven Development
around 1999 gave way to Lean thinking and Lean software development around
2003, which was followed by Product development flows in 2009 and Continuous
Integration/Delivery in 2010. The DevOps Handbook and the DevOps Adoption
Playbook is recent as of the last 5-6 years. Principles that inform practices
that resolve challenges also align accordingly.
For example, the elimination of risk happens with automated testing and
deployments and this resolves the manual
testing, processes, deployments and releases.
No comments:
Post a Comment