DevOps is a set of practices that automates the processes between software development and IT Operations teams, in order that they can build, test, and release software faster and more reliably. In another words DevOps helps SDLC (Software Development Life Cycle) to become more streamlined. It is defined not only as a methodology but more as an organizational culture & a philosophy which bundles various practices, tools & processes along with it.
DevOps is not a new thing in the relatively fast world of tech. It started to get the momentum somewhere around 2008, as a result of organizations wanting to stop Development & Operations working in silos. Aligning your existing development & operations teams according to DevOps methodologies is also not rocket science if you start small.
Benefits of DevOps
Speed & frequency of delivery increases.
One of the most popular term you would hear along with DevOps would be CI (Continuous Integration) and CD (Continuous delivery). CI talks about the build process and CD talks about the deployment. With proper DevOps practices and tools, the overall time taken from build to deployment is minimized as the time taken for each release is reduced and the frequency of releases are increased. This means more bug fixes & more feature delivery gets out of the door. Microservices are usually used heavily to increase the velocity of isolated changes & reduce the dependencies.
Reliability
DevOps brings out a more reliable end result with CI/CD practices as builds & deployments are uni formal. So the chances of missing a deployment step or mis-configurations becomes minimal. When Continuous Testing is added into the build pipeline, you add the icing to your cake.
Better collaboration between Dev and Ops
With DevOps, ball passing between Dev and Ops teams starts to fade away as both teams work in unison to achieve a common goal of getting product delivery done as expected. Ever heard about a Dev telling “Changes work fine on my machine” while it never works on UAT or production? With a standardized build and deliver process made by Devs and Ops together, things would fine in Dev, UAT/Pre-Prod or Production.
According to Puppet Labs 2016 State of DevOps report, teams that practice DevOps deploy 30x more frequently, have 60x fewer failures, and recover 160x faster. Isn’t that good enough reason to even give a try?
Automation
Automating various manual aspects of releasing software and maintaining is a big part of DevOps. Automation could be done using simple scripting or advanced tool stacks. DevOps concept deeply promotes Infrastructure as a code, so the infrastructure could be scripted and built on the fly and rebuilt whenever required. In addition to that configuration management and policy as code would make all the configuration & policy compliance standard across all of the infrastructure and applications.
Monitoring and Logging
Having proper monitoring and logging of infrastructure and application services is always a key part ensuring that the businesses keep their systems up according to the SLAs. Various DevOps related tool sets makes this task easy by aggregating monitoring and log events, and making those easy to analyze trends. Some even take a further step by predicting future issues.
How can I implement DevOps in my organization?
-
- Start small but not too small – Having someone who has solid experience working on a DevOps culture might be a good idea.
- Create a DevOps culture from top to bottom of Engineering and Operations departments.Mind set itself needs to change.
- Identify the current manual processes, bottle necks, manual deployments that are done in the organization.
- Merging Agile framework with DevOps might be One of the best ways to start implementing the culture.
- Bring in Development and Operation teams together to discuss about problems both teams have with product delivery and see the improvements which could be made. With DevOps, the usual blame culture between these parties would eliminate.
- Identify the need of tools or tool stacks & implement starting small. Starting with open source software might be the best option at the beginning since it does not cost anything.
- The pace of implementing DevOps practices would depend on the existing platforms you use. If you’re already leveraging cloud platforms in your tech-stack, you be already One step ahead.
- DevOps is a journey, the destination would need to be defined by the organization itself.
DevOps tooling
- Infrastructure as code — Puppet, Terraform, Ansible Chef
- CI/CD — Jenkins, Bamboo, TeamCity
- Test automation — Selenium, Cucumber, Apache JMeter
- Containerization — Docker, Rocket
- Orchestration — Kubernetes, Docker Swarm, Mesos, Rancher
- Deployment — Elastic Beanstalk, Octopus Deploy, Vamp
- Measurement — NewRelic, Kibana, Datadog, DynaTrace
- ChatOps — Hubot, Lita, Cog
Below is “Periodic Table of DevOps tools” Info-graphic from XebiaLabs. Click on a link to learn more.
Some of the above tools are paid tools but there are always free solutions available in the market which could still serve the purpose. You might already have some of these tools in your organization but not using it to the full potential.
You could get further insight of DevOps by going through few links below.
https://aws.amazon.com/devops/what-is-devops/
https://en.wikipedia.org/wiki/DevOps
https://www.atlassian.com/devops
https://docs.microsoft.com/en-us/azure/devops/learn/what-is-devops
I would recommend a good read on how DevOps culture changed a whole organization. Book is a novel named “Phoenix Project” which is an enjoyable way to learn DevOps.