What is DevOps?
What is DevOps?
The term “DevOps” was coined by Patrick Debois a little over 10 years ago but the methodology pre-dates the phrase.
Google defines it as a set of practices that combines software development and IT operations. I had a chat with a couple of the experts to find out a little bit more and one of those started by explaining what DevOps is not.
It is not “something which is bolted on at the end” or simply pulling log files. It is also true to say that you cannot just combine development and operations teams and expect DevOps to work. There needs to be a collaborative approach and a DevOps Engineer MUST be involved throughout the Software Development Life Cycle (SDLC).
What does a company need to do to introduce DevOps successfully?
There is no “set way” as each company will have a different environment, requirements, and applications but the below will help for most.
· Open-minded: The way the company works and has worked previously will change drastically
· Set Foundations: Analyse the current applications and start small. Perhaps with a smaller, non-critical application
· Technology: The current tech-stack needs to be correct and advanced before introducing new technologies
· Skills-gap: If you do not have somebody with hands-on experience setting up CI/CD, automation testing, Infrastructure as Code etc. then it is vital that you give time to up-skill internally or hire externally if this is not possible
· Collaboration: Management need to get all teams on-board and manage expectations
· Patience: It can take years to modify an existing environment and it will not happen overnight.
· Automation, Automation, Automation
Pros:
· Allows a company to deploy new versions more often which means a faster time to market
· Allows a degree of independence when deploying
· Saves time and reduces cost long-term
· Eliminates human error which in turn avoids reputational damage through product failure
· Security is embedded right through the SDLC
· Operations and Development are working together (or should be!!)
Cons:
· There will be an element of push-back internally. The old term “nobody likes change” comes to mind.
· A move into a DevOps environment can seem demoralising for a developer as part of their job has been taken away
· An organisation might not be ready – everybody must work and collaborate together from management, operations, development and security to unit testing which can be difficult.
· There is a skills shortage of experienced DevOps Engineers and unless you have the talent internally, you must hire externally to succeed.
What is the DevOps community talking about right now?
Serverless Computing is a hot topic within the DevOps community. This is the process of outsourcing infrastructure management to a third-party so that the company can focus on the front-end of the product or service.
The big three cloud providers, Amazon, Google, and Microsoft, all offer this through AWS Lambda, Cloud Functions and Azure Functions respectively. IBM also have their own offering in OpenWhisk and I am sure we will see a few more options enter the market in the coming years.
Supply Chain Vulnerability in code is another interesting topic. In this case, a supply chain refers to anything needed to deliver your product or service. A good developer will re-use code or copy and paste from a library when creating a new application. This is great for the developer as they do not have to spend time writing hundreds of lines of code however this is where vulnerability can creep in.
There have been some examples of this in recent times of how one programmer can literally “break the internet” by removing a couple of lines of code. I remember very recently, 14th December 2020 to be precise, all Google apps including Youtube, Gmail and Google Maps were down worldwide due to a technical fault within its authentication system.
Luckily, it was very temporary but if their services were down for a period of time, there would be massive reputational damage as well as significant loss in revenue. Incidents like these are the reason why we are seeing a rise in demand for DevOps and Site Reliability Engineers.
Another such incident, which some may remember, was an IT system crash involving Ulster Bank in 2012. This left hundreds of thousands of customers with no online banking access for a number of weeks. As a result, Ulster Bank was fined over €3.5m by the Central Bank and the wider organisation took a much bigger hit.
The Central Bank report found that the bank “failed to have robust governance arrangements in relation to its IT systems”, something which the bank have recognised and improved since. This leads us on nicely to DevSecOps.
DevSecOps is another term that has been floating around recently. Again, like the term DevOps, the idea has been around longer than the buzz word. It is another practice that aims to implement security right through the SDLC. Ultimately, you need to be aware of your vulnerabilities and safeguard every step of the way.
Most popular DevOps tools and sought-after experience in Ireland:
I discussed this with all the contributors and based of the requirements I see through my 9-5 and the people with the experience, the below seem to be the most popular.
· Docker
· Jenkins
· Ansible
· Terraform
· Git
· Kubernetes
There are several other tools and alternative options to the above. Each company will inevitably choose the tools that suit their environment best.
DevOps tools to keep an eye on:
HashiCorp, the creator of Terraform, is a company to keep an eye on as they are at the fore-front of infrastructure automation currently.
Kubernetes - an open-source platform that automates Linux container operations
KNative - an open-source community project which adds components for deploying, running, and managing serverless, cloud-native applications to Kubernetes
The future of DevOps:
As human beings, we have evolved over time and the speed of which technology has advanced has had a slingshot affect on how quickly we change and adapt. A common opinion across the board from the contributors was that the role of Sys Admins and Backend Engineers will naturally (or un-naturally) evolve into a DevOps Engineer.
I am seeing more and more Sys Admin jobs with requirements such as - the ability design, build, and deploy cloud applications such as AWS and Azure. There is also an expectancy to understand CI/CD pipelines.
The same can be said for Backend Engineers. A lot of backend roles nowadays will include the likes of Python, Java, Scala or whatever the primary language of the company is. An additional requirement which is quite common is knowledge of Docker, Jenkins, Ansible and other similar DevOps tools.
This would leave us to believe that Sys Admins and Backend Engineers will need to upskill over time and eventually, their roles with morph into what we know nowadays as a DevOps Engineer.
Advice for Sys Admins:
· Learn the SDLC and Agile methodology
· Start doing side projects – even if your current company is not planning on introducing DevOps right now, it will only be a matter of time before most companies are working in this way.
· Linux is key – most of these systems run on Linux
Advice for Software Engineers:
· Understand and learn the Infrastructure processes
· Create a version of code with Docker containers and release to production
· Build something on a home environment – systems can be tested locally using Ansible and Terraform
There are plenty of choices when it comes to DevOps meet ups and I will add a couple of popular meet ups to the website this week. I will also upload recommended courses, books, and further education courses.
Thanks so much for reading and I hope the above helps!