Ways to improve your software development with DevOps

DevOps as a concept has been around for quite some time now. DevOps is a way to increase team’s, organizations and company’s ability to deliver applications and services rapidly. Mostly it aims for culture and environment change where development, testing and releasing happens as easily as possible with the best quality as possible.
Going towards continuous delivery and canary releases might not happen in one night and may not be as easy as it sounds. Moving operations and quality responsibility towards developers needs to be an iterative path, where steps are done incrementally.
Finding which parts from software development process needs to be improved, should be a constant task within the team and the organization. Here are some DevOps practices, which can boost your software development.
DEVOPS PRACTICES
INFRASTRUCTURE AS CODE
Do you have infrastructure that can scale when needed? Are you able to rebuild the whole infrastructure in case of a failure and can it be done instantly? If you think of it, building infrastructure should always be done this way.
CONFIGURATION MANAGEMENT
Unifying configurations across environments and local development environments is a good way to get new developers fast into loop. When configurations are similar like in the production, one can catch problems in the early phases of development.
CONTINUOUS INTEGRATION
Automated testing is a key part of Continuous Integration. Having a fast development/testing cycle enables development to be done in small patches with great quality. Without fast loop-back, one is not able to get new business features into customers’ hands rapidly. When you test with an extensive set of different level automated tests, you know that your software is working. This certainty enable one to deploy software to production more often.
CONTINUOUS DELIVERY
Can you deploy software with moment’s notice? It’s a really good feeling for you and the whole team to be able to revert old software versions back with a snap of your fingers. When have you tested your rollback? When have you tested your database backup? What if you could just deploy new test playground for your Ops team to test backup procedures? Or your Test team to test separate Feature branch? With a correct CD and infrastructure practices this is possible.
MEASURE
Constantly monitoring your infrastructure and software functionality gives — of course — constant feedback how things are working, but also enables you to do A/B testing. If the infrastructure is built in a way that’s easily replicable, the customers can be routed into different versions and functionality of the services. Seeing how taking new features into production affects your business revenue is a key thing in today’s software services.
DEVOPS TOPOLOGIES
DevOps team topology can be setup in many ways. https://web.devopstopologies.com/ have really nice overview of different topologies including DevOps Anti-Types.
The product or service you are building needs to be matched with the company’s/organizations development processes and a suitable DevOps team topology has to be linked into it. Starting with one topology and modifying it later is one option.
Depending on the size of service/product, one can think how much responsibility of the operations and quality assurance can be pushed to developers. In practice in many cases Developers can not be responsible for everything. Software projects tends to grow in size and no-one can be a guru in everything. Aiming towards rapid cycle of code-measure-learn needs DevOps experts. Constant improvement together with time will evolve best practices. With a correct team of experts, the time is shorter.
IMPROVING ALL THE WAY
There are many ways improve DevOps practices, how to setup DevOps topology and way of working in the organization. Having DevOps mindset to Automate, Automate and Automate everything and constantly thinking ways of improvement for the software development process to be as easy as possible and also as fun as possible.
Goal is to improve feedback loop for each step from local development environment to production, from business ideas to customers. DevOps is the something what all the team members from business, dev, ops, test, me and you should and need to value.
