Anshul Lalit, Global QA Manager at Kongsberg Digital, discusses how you can reap the benefits of DevOps and the effect it can have.
With the tech industry growing exponentially day by day and new IT tools being regularly introduced to people, it is not unusual to see these buzzwords being thrown around by everyone without them knowing what they mean in their true sense. You might have encountered people who use words like ‘cloud,’ ‘big data’ and ‘scrum,’ and left to wonder whether they were used in the correct context or not. Amongst these buzzwords is ‘DevOps,’ a name that has found its way onto several technicians’ mouths.
However, do they understand the true essence of what DevOps stands for? According to a survey conducted by CA Technologies, nearly half the participants did not know what DevOps meant!
DevOps is much more than just a buzzword. It is not just a tool, or a method, or a professional. DevOps is a culture; a culture that inclines towards growth, communication, and fast response, subsequently transforming the work environment into a much more productive one.
What exactly is DevOps?
Let us understand using a simple example: Imagine that there is a company that provides online services to its customers. To stay ahead of its competitors, it must deliver new and innovative products at a quicker rate and with increased frequency, so its customers remain satisfied and happy at all times.
There are basically two groups or teams working to accomplish this common goal: the development team or ‘Dev’, consisting of all people involved in developing the product like developers, product managers, and QAs, and the operations team or ‘Ops’, comprised of system engineers, administrators, security and other disciplines.
The job of the development team is to write and create new and innovative code and wait for it to enter the production cycle. The task of the operations team is to look after the product after it has been given delivered by Dev team and to enter it into the production cycle. Since the company keeps growing day by day, the environment and process of the operations sector changes as well, which requires the incoming code to be modified and massaged a bit before it is entered into the production cycle. This poses problems as the changes can produce technical issues in the actual code itself. Unfortunately, a wall exists between the two departments and hence the process of rectifying these issues in record time becomes next to impossible, subsequently damaging the relationship of the company with their customers. I am sure our developers and testers, along with Project and Configuration managers may relate to it instantly recalling their endless evenings and cold pizzas on their desk just before the release date for customers.
What DevOps does is that it demolishes this metaphorical wall between the operations and development teams and creates an environment in which constant communication holds the primary status. Both developers and system administrators work together to run tests, identify and rectify problems in the product step by step instead of doing so at the end of the product development.
How to reap the benefits?
With proper implementation of DevOps, a company can completely transform and upgrade the value that the employees and the customers of a business receive. What DevOps does is that it gradually automates the working environment- the processes that used to require tons of painstaking manual work now easily be performed through code. Let us look at some of the other incredible advantages that are brought about through a DevOps system.
- Double the velocity: As there will be no barrier between the two development and production departments, the time taken to execute and put forth a product will inevitably decrease exponentially. There will be increased collaboration between workers, which will lead to quicker responses and actions as engineering and production goes on side by side, neither sides having to wait for the other to understand a problem. Ultimately, this short and quick development cycle leads to even faster deployment. The frequency of new and innovative code being produced increases which in turn keeps the customers happy and satisfied. Such agility gives a company a much needed competitive edge in the current digital era.
- Savings Galore: Not only does this save time and energy of the workers, but it also contributes to savings and budget reduction. DevOps, much like Agile, is based upon principles that incline towards lean usage of resources. Continuous improvement techniques and quick responses save time which has a positive impact on the cost of the operations taking place in the process. Not only does it reduce operation costs, but also increases the revenue generated due to increased customer engagement and interaction as they receive better products in quicker bursts of time.
- Easier and quicker code testing: Built off on Agile methodology, DevOps divides the testing throughout the production process instead of having to test a huge chunk of code at the end. Through this continuous testing system, any defects in the code can be easily detected and rectified in a manner that takes much lesser time, effort and resources. As deployment failures decrease in number and frequency, the need to make massive readjustments decreases as well.
- Reduced Recovery Time: Despite the risks of facing failure in operation at a minimum with the implementation of DevOps, in the case that an issue does lead to those above, the recovery time of the operational and developmental system is significantly short. Since both the Dev and Ops teams understand the environments and jobs of each other, recovering from a problem in either of those departments becomes a collaborative process. More hands on deck mean quicker rollbacks. No more (or seldom, should I say) “Tiger Teams” at the nick of time.
- Innovation at its peak: Collaboration and communication amongst team members allow them to be open to present new ideas and innovate more often. This experimentation can lead to several new projects that may prove to be a hit with the customers.
- A Wider Customer Base: Through DevOps, the product can be provided to the customers at half the regular time and twice the efficacy and quality. This increased market responsiveness allows a company to expand their audience and attract a wider market.
The Effect of DevOps on Traditional Development & Testing Methods
When it comes to traditional (ahem, Waterfall!) development and testing methods, many challenges arise when executing them.
In traditional software development life cycle, testing is something that is taken care of by a particular group of people called Quality Assurance Testers or Quality Testers. Developers develop and write the code for new features and products, and after this special group of people for any defects and faults has tested it, it enters the production cycle. So basically, the work is done in steps: the entire code is written, tested and then produced. DevOps aims to improve on this out-dated methodology of testing.
People now want their products and services fast but not at the expense of quality. So how do you speed up the entire development, operational and testing process without compromising the quality of your service? You integrate the roles in a way that everyone works collaboratively with the word ‘Start.’ What DevOps does is that it instead of going the traditional path of testing at the end of the cycle, the testing part was carried out from the first line of code written. Hence, the software is tested as it is developed and deployed, resulting in faster recovery from defects and keeping the quality of the material top notch simultaneously. All teams and departments are involved in maintaining and assuring the quality of the product through every phase.
One of the other most common problems that surface is that the development and operations environment are very different from each other. Whatever code or feature was working flawlessly in the development environment may not working the same way in the production environment after it has been tossed over the wall dividing the two departments. This results in failure of a process due to lack of synchronization and understanding or communication. With DevOps, no such wall or difference in working environments exist. Operators and developers work side by side to ensure utmost quality and constant experimentation with the product, making the process much more successful and popular in the customers. The most beautiful thing about DevOps, in my opinion, is the continuous feedback loop. It just makes things so powerful, collaborative and efficient.
DevOps and The Cloud
DevOps and cloud strategy seem very much alike in what they aim to do – fast and continuous updates, development, delivery and deployment of product and infrastructure. Which is why at often many companies and franchise look to link the both together and create an efficient system.
Our economy has transformed from being product based to being service based. Gone are the days when you bought those neatly boxed packs with a DVD inside of product installer and documentation – Office 365, Adobe Creative Cloud, Intuit, you name it. Major players have shifted the focus to SaaS or PaaS, of course, handling never-ending piracy issues at the same time. People require agility more than they do stability in the services they receive. Which is why companies have to change their approach and turn to cloud-based services. Companies like Amazon and Azure have users that experience functionality and operation as a single dimension. Hence they need to push out an enormous amount of code every day. It all flows smoothly as a unified being for them, along with additional and constant upgrades. Within a DevOps environment, developers and operators work together at the same pace, with similar goals and views in mind, which allow the service that is provided to the customer to be as quick and as efficient as possible.
Everything about DevOps is continuous: be it continuous service integration, continuous delivery, continuous deployment, continuous testing, etc. Moreover, this exactly why it is suitable to be used along with the cloud where the code runs everything. Since cloud services are substantially dependent upon IT, it is only understandable that DevOps practices be used for their purpose as they are highly automated. Instead of doing the work in large batches for a longer period, it is done in shorter batches that require lesser time and are ‘continuous’ with one another. This gave birth to terminologies such as continuous integration, delivery, and deployment that have revolutionized modern testing and development practices.
With continuous integration, each line of code that a developer writes and checks in goes through a compilation process or into the mainline where it is checked and tested for quality and defect related purposes. This may also be called continuous testing. The software is unit-tested with each line of code entered in an automated system and in return, rapid feedback is received, making the process of development much quicker and responsive.
Continuous delivery, to put into simple words, is when the software or code is always ready to be released for production. Meaning the software goes through continuous integration and automated testing and is rapidly developed and is now prepared to be pushed into the production phase but only upon the decision of the business or through a manual trigger. This process also ensures a fall-back net (safety net) availability most of the time.
Continuous deployment goes one step ahead of this and automates the manual part of continuous delivery: each updated code is automatically released into the production phase after it has gone through automated quality assurance testing. Now this is when it gets tricky at times when vendors do not have access to the customers directly, so this may very well be integrated with a staging environment hosted at customer proxy. This can all be handled beautifully with an excellent collaboration and implemented safety checks and Kaizen practices.
Several tools have been introduced to make possible the aforementioned processes and subsequently incorporate DevOps into the cloud. Some include:
- CHEF: Chef is an automation platform that allows people to configure, build and manage large scale applications easily. It allows the user to use code as infrastructure. Developers build infrastructure by writing and entering code that is automatically tested and put into production.
- PUPPET: Puppet is said to be relatively easier than Chef regarding usability. That being said, Chef is allegedly more loved by developers as they say, but I am no expert in that so feel free to google a vs. story, I am sure you will be surprised. Puppet has its config specific language (easy-to-read apparently) for user specific requirement definition. It turns infrastructure into code and allows the user to set up data centres in the cloud using it as a platform.
- JENKINS: Jenkins is an open source automation server that can be used as a Continuous Integration server or a Continuous Delivery hub as well. You can manage and control dev processes like builds, tests, setup packages, deployment; you name it.
- GITHUB: Github offers a flexible open source repo hosting and integrative platform where you can host and manage your code or infrastructure.
How to Adopt DevOps Practices
Once you have realized the incredible benefits DevOps can bring to your workplace, it is time to adopt and implement it. Remember, DevOps is no magic soap; it needs time and culture shift. Since DevOps, at its core, is all about communication and collaboration, the team members should have freedom to discuss their responsibilities within the environment and be open to change. It is important to involve your workers and developers in this process as they may be resistant to change.
It is salient to have a clear objective in mind when you move to adopt a DevOps practice. You must know where precisely it is that you intend to improve upon and then choose the right tools to help you implement a DevOps strategy in that particular area. Don’t be afraid to run trials with a combination of tool offerings in a small-scale experimental lab to ensure it fits all sizes your company offers to customers. Keep in mind that this is precisely why software companies offer trial licenses, so make use of them. If you are serious towards making a shift, feel free to contact their sales team, discuss your problems, and let them explain how their solution offering can help you do wonders, you never know, but sometimes it just takes a phone call.
The most important thing when adopting DevOps is that you must experiment. Analyse the results you receive and build your series of change upon them. The transition is not an easy one to make, but when done the right way, it can prove to be just the improvement that your company needed.
Read the original article on LinkedIn.
Edited for web by Jordan Platt