DevOps 101
So, you've heard of the term DevOps and are curious, why are people going
bananas over it?! What really is DevOps, is there an industry standard
definition for it? Does it relate to Agile? Is it based on principles like
Agile? My teams are already having a hard time delivering their best, why do I have
to hire a DevOps person now?
All very valid questions. And guess what? I will have some
answers here and some more, later.
Lets begin with the difficult part. There is no universal definition of
DevOps, there is no DevOps Manifesto, unlike Agile and mostly when you
talk to people, each will have similar but varying definition for it. In fact
in the organization that I consult for, there are 172 Groups with name
"DevOps" in them, under varying management! So, does it mean nobody
can say what DevOps is? No, not really, that wouldn't be true. There are broad
principles associated with DevOps practices and culture and these 172 groups
would fit somewhere in the spectrum.
But wait.. culture? Did I just say culture, what has DevOps got to do with
culture? Isn't it about using those work-in-progress fancy tools that evolve so
fast that nobody can keep up with? Well, my esteemed reader, it is so much more
than tools. It is about practices and culture and more. But I am getting ahead
of myself here.
The term "DevOps: in itself comprises of "Developers" –
people who write code and "Operations" – people who keep that
code or the infrastructure under it running across environments, essentially implying close collaboration between
these folks. When we discuss about some of the practices, probably in a future
blog, we'd see how this collaboration gets reflected in various DevOps
activities. Generally speaking, DevOps implies use of engineering practices
that enable quicker delivery of well tested, good quality code on a robust
production environment with significant automation tied in to the process.
With that high level my definition out, lets have a quick chat around some
more details:
§ A brief History
Patrick Debois, a Belgian consultant is credited
for coining the term DevOps, implying collaboration between developers and
operations. Apparently, the term was first used for DevOps Days 2009 conference
in Belgium. The idea of DevOps formed and spread like a wildfire, with coming
together of various industry veterans sharing their learning and passion. In
Velocity conference 2009, John Allspaw and Paul Hammond presented "10+
Deploys Per Day : Dev and Ops Cooperation at Flickr", link in references,
which kind of started shaking the world of how deployments were looked at. The
time to market has since been shrinking and based on a 2016 report Amazon
deploys code to prod every 11.7 seconds on average.
This feat of continuous deployment is achieved
through various architectural and engineering choices that have to be made at
the start of application development. No wonder, you'd hear stories of new age
companies more in DevOps space. However, it would be factually incorrect to
assume that DevOps can be applied only for greenfield projects or only new /
smaller companies. Most of the biggest organizations across various sectors,
including highly controlled sectors such as federal government are adopting DevOps
practices for better profitability / competitiveness or driving innovation
faster.
You might wonder, why deploy faster?
Great question, a really really good topic for a future blog
§ What are DevOps practices?
How do we say a team is adopting DevOps, what do they do when they do
DevOps? At a 10,000 ft perspective, this applies to using CALMS:
§ C for Culture
- DevOps aims to
establish motivated teams with shared pride, ownership and
responsibility of product, that work with a growth mindset.
§ A for Automation
- Automation is
a cornerstone of the DevOps movement and facilitates collaboration.
Automating tasks such as testing, configuration and deployment frees
people up to focus on other valuable activities and reduces the
chance of human error.
§ L for Lean
- Team
members are able to visualize work in progress (WIP),
limit batch sizes and manage queue lengths. Again,
we depend on our partners from Agile community to help with this
§ M for Measurement
- DevOps teams measure a
lot - from performance of delivery pipeline itself, to application and
infrastructure health. This includes things like CPU/ memory monitoring, JVM monitoring or Change Lead
Time. The
Four Key Metrics, which is now "Adopt" section of
ThoughtWorks radar, as name suggests are key metrics for DevOps
measurement itself.
§ S for Share
- Share Success,
Failure, Feedback - between and across the teams and members
§ How do I learn DevOps
Ok, all that mumbo - jumbo is good. Now, where do I start learning DevOps?I will give you three paths :
- Or, wait for more
blogs
- Or, look at this learning path
§ DevOps Thought Leaders
Fortunately, there are many folks in DevOps who really love to share their
awesome work. Some folks that I follow are listed below. By no means this is
not an exhaustive list, just the ones I follow
|
|
|
|
|
|
James Turnbull |
Chris Riley |
Kelsey
Hightower |
Sean Hull |
References:
https://devops.com/the-origins-of-devops-whats-in-a-name/
https://newrelic.com/devops/what-is-devops
https://www.devopsdays.org/about/
https://techbeacon.com/devops/10-companies-killing-it-devops
https://docs.microsoft.com/en-us/azure/devops/learn/what-is-devops-culture
https://martinfowler.com/bliki/DevOpsCulture.html
https://whatis.techtarget.com/definition/CALMS
https://www.scaledagileframework.com/devops/
https://www.thoughtworks.com/radar/techniques/four-key-metrics
https://medium.com/@fabiojose/devops-kpi-in-practice-chapter-2-change-lead-time-and-volume-9e80ac7ca54
https://www.agilealliance.org/glossary/lead-time
https://github.com/kamranahmedse/developer-roadmap
https://sweetcode.io/top-10-thought-leaders-devops/