What exactly is DevOps.. and why all the noise about it?
By the end of this article you’ll have a general understanding behind the DevOps approach and how an individual or an organisation can implement DevOps to see huge benefits.
DevOps has taken the technology industry by storm since it’s introduction at the start of the last decade yet there seems to be so much confusion about what it really is.
First let’s take a look at Amazon’s description below:
DevOps is the combination of cultural philosophies, practices, and tools that increases an organisation's ability to deliver applications and services at high velocity: evolving and improving products at a faster pace than organisations using traditional software development and infrastructure management processes. This speed enables organisations to better serve their customers and compete more effectively in the market.
When I was first introduced into DevOps and I came across this description it was very difficult to understand, however having since delved deeper into DevOps I have been able to give a much simpler explanation of what it is and more importantly.. what DevOps offers!
To me DevOps is simply maintaining an application/service that you have developed and ensuring that it runs the same in production as it did when it was being developed. Additionally making changes to the application becomes much simpler, streamlined and automated due to the introduction of Continuous Integration/Continuous Delivery Pipelines.
Now knowing what DevOps is is one thing, but why exactly have we seen it make such an instrumental impact in how companies deliver software.
Organisations using DevOps practices are able to deploy code up to 30 times more frequently than their competitors and this can be seen in DevOps ranking second for the most sought-after roles (second only to the broader category of “developers”). Let’s take a look at some of the benefits to get a greater understanding.
Benefit of DevOps
As mentioned earlier, DevOps implements CI/CD pipelines. This helps to automate the testing of any code that is pushed to central repository, merge that code and if successful then either put those changes into a deployable state (Continuous Delivery) or Deploy these changes in front of the clients (Continuous Deployment).
The automation of these processes allows for a greater amount of code changes to be done in a shorter span of time. As a result of this, organisations can get constant feedback from customers and implement changes based off of this feedback promptly.
DevOps practices also take use of configuration management tools such as Ansible. Ansible uses playbooks to provision multiple servers all through a single command. This means that a sysadmin doesn’t need to Securely enter each server (SSH) respectively and provision them through bash scripts. These manual tasks take much longer to execute and can potentially lead to more errors during runtime; all of which we want to avoid.
DevOps practices introduce using Cloud infrastructure as opposed to on premise services, which comes with great benefit. Using cloud services allows for an organisations services to offer high flexibility and scalability. Take for example Netflix, on Friday evenings their traffic would peak immensely; cloud services allows for the implementation of tools such as load balancers which will increase the number of servers based on the traffic, thus lowering the changes of any website complications as a result of there being too much traffic.
This is hugely important in any organisation as for every minute that an application or website is down, it results in huge profit losses and may result in your organisation being labelled less professional.
Amazon Web Services (AWS) also offers a tool called Route 53 which you can implement to direct traffic to the services where the user experiences the lowest latency, thus improving user experience. Survey’s have shown that 46% of users don’t revisit a low-performing website so ensuring users have a good experience is pivotal!
Using Terraform as Infrastructure as Code (IaC) allows us to create cloud infrastructure from source code, all of which allows for organisation to adopt an immutable infrastructure approach, leading to greater consistency and reliability.
DevOps Culture also favours using Microservices architecture as opposed to the traditional monolithic Architecture. With Microservices each service of the application is separated and communication can take place through REST API calls. The benefit of this is that it enables different parts of the application to be developed constantly without affecting other areas, thus new technologies can be implemented constantly.
In addition to this, it is usually much easier to identify and fix bugs as each service is separated logically, as opposed to a Monolithic Architecture where it’s large size can often make it difficult to see where these bugs stem from. Microservices systems can also be scaled with greater specificity, only the parts of the application that are getting greater traffic are scaled as opposed to the whole application having to be scaled which in turn can help keep costs of a minimum, leading us perfectly onto the next benefit!
Probably the most important benefit is the cost effectiveness that comes from implementing DevOps practices.
An advantage of cloud computing is the reduction in hardware cost. Instead of purchasing in-house equipment, hardware needs are left to the provider. Hardware can be a large, expensive, inconvenience and they have to repaired and updated regularly. Cloud computing alleviates these issues because resources can be acquired quickly and easily. Even better, the cost of repairing or replacing equipment is passed to the vendors.
In addition to the benefits previously mentioned off-site hardware cuts internal power costs and saves space, moving to cloud applications or storage can help maximize space and significantly cut energy expenditures.
When using cloud computing services you pay for what you use.
Cloud providers usually offer a pay as you go pricing model which results in much greater savings and flexibility in many ways. Your organisation doesn’t need to pay for services that they aren’t using. Take the Netflix example again. On Monday afternoons when the traffic is much lower, much fewer servers would be up and running, more servers can then be introduced where necessary on a Friday evening. Compare this to on premise servers where the servers would simply be sitting in the corner doing nothing despite having been payed for.
Let’s take a look at a few of the tools that one would come across within DevOps, it is also important to note that you shouldn’t get hung up on any one tool as multiple tools can be used to do the same job and different tools come around all the time. Instead it is important to get the conceptual understanding of these processes which will then allow you to use any tool where necessary.
- Git for Version Control Management
- Jenkins to create CI/CD Pipelines
- Docker for containerisation
- AWS for Infrastructure as a Service (IaaS)
- Ansible/Chef for configuration management and provisioning of multiple servers simultaneously
- Nagios/Splunk for monitoring of software
The DevOps culture is based on the strong cooperation between both development and operational teams during all steps of the software creation and maintenance, While integrating these processes into an organisation will take some time and effort, the benefits obtained will be astonishing; but I'm sure you already knew that by all the noise you’ve been hearing!
This article is written by Andrew Osborne — A Junior DevOps Engineer! You’re more than welcome to ask any questions through my email email@example.com