What is DevOps?
DevOps is a set of common practices that aims to make deployments more frequent, reliable and less time-consuming. DevOps reduces the time between a code change and its deployment to production.
Removing the boundaries between traditional development (Dev) teams and IT operations (Ops) teams, a DevOps Engineer knows both Development and Operations.
A project with DevOps practices has a very similar lifecycle to projects that do not use it.
The difference is in small details that allow lifecycle iterations to spin faster, which means getting feedback faster and being more flexible.
A typical project that implements DevOps practices would have the following aspects:
- The code is hosted in source control, usually a cloud git server like GitHub, Azure DevOps, Bitbucket, etc.
- All code changes should pass automated quality gates such as automated build, automated tests, linting, etc and Code-Review.
- Deployment on different environments is done automatically (not manually or from a local machine).
- Usually, new environments are created using scripts. This can be done using tools such as; ARM scripts, Terraform, AWS CloudFormation, Docker containers with Kubernetes.
- The environments are continuously monitored and are resilient to faults, with the capability for self-recovery and to alert personnel if any manual intervention is required.
A DevOps Engineer must have good knowledge in areas such as:
- Application development.
- Scripting.
- Networking.
- Experience with at least one CI/CD platform (Azure DevOps, Jenkins, TeamCity).
- Experience with cloud services as Azure, AWS, Google Cloud.
The 3 biggest advantages of DevOps
1. Better code quality control processes with Continuous Integration (CI)
CI allows the development team to integrate new code into the existing code base, in an automated way, reducing the need for manual intervention. It checks code for build errors, runs unit tests, validates code coverage, runs static code analysis, and other things that improve code quality.
2. Faster deployments with Continuous Delivery (CD)
CD allows the development team to deploy an application to the production environment much faster. It automates the deployment process so that deployment can be done just by pressing a button. The most advanced way of doing CD is to deploy every change in the production environment, multiple companies such as Facebook and Google have been doing this for years.
Some examples of wieldy used CI/CD tools are:
- Jenkins.
- TeamCity.
- Azure DevOps.
- Bamboo.
- Travis CI.
3. Reliable infrastructure through Infrastructure as Code (IaC)
IaC automates the creation of a new environment using scripts that can stay side by side with source code. It allows us to create a new environment simply by the click of a button. The process of resource allocation (VMs, cloud services, etc.) is no longer managed by a person who needs to remember how to configure everything to make it work, instead, scripts take care of that.
The most widely used IaC tools are:
- Terraform.
- AWS CloudFormation.
- Azure Resource Manager (ARM).
- Google Cloud Deployment Manager.
- Chef.
- Puppet.
- Docker.
3 Points to Consider
1. Cultural shift
DevOps requires a cultural shift in company processes. The Developers and IT Operations need to be merged in a single structure and work very closely with each other. Developers who are used to doing things in a manual way (manual deployment to the production environment, no automated builds) as it was before the DevOps era, will have to change their mindset towards the DevOps mindset, where everything is automated.
2. Learning curve
For those who are not familiar with DevOps practices, it might be a real challenge. The reason for that is that DevOps has been around for more than 10 years and is at a very mature stage with lots of tools and practices. To overcome this challenge, it would be a good idea for those organisations who are just planning to implement DevOps to take external consultancy.
3. Additional effort for legacy code
It is easy to adopt DevOps in a greenfield project that uses new technologies. Adopting DevOps culture in a legacy project might be a more difficult task because the project might use legacy technologies that are harder to automate. Usually, it requires finding workarounds for legacy technologies or replacing them with new technologies that are built with DevOps in mind.
What next?
If you would like to speak to someone at Amdaris about DevOps, just get in touch.
Call +44(0)117 935 3444 or contact us using the form below and let us know about your next plans. We will help you choose the best technology for making your project a success.
Look out for our next series of blogs which will focus in more detail on Infrastructure as Code (IaC) and Azure Resource Manager (ARM).