Earlier this month, we shared an employee spotlight that featured the incredibly talented, Kristijan Kralj. Kristijan is an award-winning coder with a soft spot for C#. He is a critical part of Keeper Solutions and leads a team from Keeper’s delivery centre in Varaždin, Croatia. He is a valued mentor and teacher to everyone across the organisation. Kristijan is also a gifted writer and shares his thoughts on all things C# from his personal blog, MethodPoet, which is well worth checking out.

This guest blog post was written by Kristijan himself. We hope you enjoy it as much as we did.  


7 Actionable Ways to Improve Your Development Process Using DevOps

It’s a competitive world out there.

It’s not just about building better software anymore – it’s about building a better development process. If you want to stay ahead of your competitors, you need to take a serious look at how you’re doing things and how they’re doing things and figure out where you can improve. One significant leverage you can use in your company is to implement DevOps practices.

I will share seven actionable ways we leverage DevOps at Keeper Solutions to help our client partners save time and money – without compromising security or code quality.

What is DevOps?

DevOps is a term that describes the practice of merging the development and operation teams into one continuous process. This concept describes organizations where developers, quality assurance engineers, and other IT professionals collaborate to maintain the reliability of software services by automating the development process.

The goal is to release software changes faster while preserving all user expectations for speed, stability, functionality, and security.

The research conducted by Harvard Business Review Analytic Services states that companies that use DevOps have seen the following benefits:

                          • 70% have seen an increase in speed to market.
                          • 67% have seen an increase in productivity.
                          • 64% have seen an increase in service quality.
                          • 66% have seen an increase in innovation.

DevOps teams are looking for ways to make changes faster and find productivity gains to keep up with the pace of today’s market. While many development teams are still trying to figure out the best way to move forward, here is how you can use DevOps in your company to improve the overall development process.

#1 Store your process in a configuration file

In the old days, the way to configure your test and production environments was to manually install all necessary programs and libraries and tweak other system settings. However, the whole configuration process can be written down and stored in a configuration file when it comes to DevOps. Keeping configuration in a file is known as the ‘Infrastructure as Code’ approach.

In Infrastructure as Code, the infrastructure used in production is specified in code. This approach eliminates human error from manual configuration tasks and produces highly repeatable environments. Using DevOps to manage the infrastructure that allows rapid and reliable updates gives teams an edge in maintaining and extending production environments.

Most often, you would store configuration as a YAML file.

#2 Merge code changes often

The first step toward a shorter release cycle is merging developers’ code often. This process is known as continuous integration.

Continuous integration, or CI, is a software engineering practice in which developers integrate code changes frequently. It is the process of compiling, testing, and integrating the changes that developers submit. Continuous integration aims to automate testing and integrating changes so that errors are found early, along with solid feedback about the quality of the submitted changes.

CI also makes it easier for teams to have a single codebase to simultaneously work on different parts of the project. These frequent merges result in an overall reduction in bugs that slow down projects.

You can use many different tools, such as Jenkins, Azure DevOps, Travis, etc. Here at Keeper Solutions, we use Azure DevOps. It offers many tools for planning, deploying, testing, and releasing your software application.

#3 Automate testing

Testing is the next step you can automate with DevOps. When it comes to testing, you can have different kinds of tests:

                          • Unit teststhese tests ensure small units in your code work as expected.
                          • Integration tests – these tests ensure bigger modules work together correctly.
                          • UI (End-to-end) tests – the UI tests focus on checking that the overall system works from the end-users perspective.

Once you automate test execution, you can run tests often to get early feedback. DevOps helps create an environment where developers know that their code will work appropriately in production environments with high degrees of certainty. You can identify defects as early as possible to fix them before they are deployed to production.

You can also test the latest code changes on a test environment to ensure it works well before getting into the production environment.

#4 Automate deployment

In DevOps, continuous deployment (CD) is a process where the team deploys code changes to production as soon as they are ready. So, instead of having a separate development process, (where developers implement new features and fix bugs, and the IT department is in charge of deploying the latest changes, mostly manually or executing some scripts) you can automate and unify the development and release process.

This method has many benefits, including faster time to market, higher quality, and more frequent feedback loops.

Once you have a CD in place, you can concentrate on developing features that customers want rather than worrying about deployment.

#5 Monitor and respond to changes

Companies need to be quick in responding to changes to succeed in today’s competitive, fast-paced world.

In your company, there are many things that you need to monitor and manage. But when you have too many items on your plate, it can become difficult to prioritize what needs to be done first. One way to solve this problem is by using DevOps.

One of the main drivers for implementing DevOps is scaling and responding quickly to changing business needs and digital disruption. However, with increased customer expectations and technological innovation, DevOps is no longer just about getting software released faster; it’s about providing the level of service expected by customers in today’s digital economy.

It’s about responding to customer’s feedback in the fastest possible way.

#6 Automate security checks with DevOps

Do you feel that a security check should be a part of your release process?

As the world moves towards the skilled use of automation, it seems like security teams struggle to keep up with the increased pace of development. One way it is possible to do so is by making sure that security checks are a part of a DevOps process.

In a traditional software development process, security checks are typically conducted later in the process to ensure the quality of the project. You can try to find them during code reviews, where a security department looks at the code and tries to identify a security issue. Or, alternatively, you can perform penetration testing once the application is live. The purpose of penetration testing is to identify gaps and security loopholes on a particular application that might otherwise go unnoticed. After the vulnerabilities have been found, the developer has to take time to resolve them. The fix can take up to a couple of days, which means your application is exposed before you patch all security issues.

In a DevOps environment, security checks can be conducted earlier in the process. For example, you can usually implement automated checks to verify the code. Then, as part of your build pipeline, you can run those checks to discover any security issues.

Security flaws should be found and fixed as soon as possible in the development process. The early detection and resolution of security flaws help reduce the total cost of ownership.

#7 Use feature flags to manage feature rollouts

Release early; release often.

But what if the feature is big, and it’s not ready to be released after one sprint? It can be difficult to launch new features and keep disruptions to your customers to a minimum, but feature flags can help you with that.

Feature flags allow an individual feature to be turned on and off without deploying a new app version. You can use flags in the code to control the feature state. This makes it possible to release a new app or new version that’s incomplete without requiring a time-consuming build and deployment. Feature flags to be helpful in a few ways:

                          • They reduce the risk of deployment
                          • They allow you to beta test new features
                          • They allow you to switch features on and off at will
                          • They allow you to roll out a new feature to a subset of users

Conclusion

In this article, I have presented to you seven actionable ways to start using DevOps.

But the most crucial thing about DevOps is: You don’t start with DevOps by introducing new tools to automate the process. 

Instead, you begin with DevOps by building a culture that supports DevOps. Building such a culture requires openness, transparency, and mutual respect between different departments. Work to eradicate silos between various departments and foster internal and external communication. You also need to educate and empower your people. 

Because people are at the heart of every DevOps process.


A huge thank you to Kristijan Kralj. For more employee spotlights check out:

Can You C# The Future? An Interview with Kristijan Kralj

Employee Spotlight: Q&A with Keeper Solutions CTO, Nick Holme

Employee Spotlight: Q&A with Giovanni Bonessa From our Costa Rica Centre