“Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.” ― Rick Cook, The Wizardry Compiled
Being one of those software engineers on the losing side, I know of one more race that is against the contemporaries to deliver better applications and services in minimum time. And races like these bred cultural transformations in development practices. One such cultural shift is DevOps. In simple words, it is all about streamlining the software delivery process and making it more fast and efficient with the ultimate aim to achieve organizational success. It is with this goal in mind that cross-functional teams consisting of software developers, ops experts, product owners, Quality Assurance (QA) professionals, etc. came into existence. A significant number of businesses are resorting to DevOps in recent time and this number is growing rapidly.
But setting on a course to stranger tides could be a dangerous business. You might end up losing yourself and the ones on the vessel with you too. DevOps is one such journey. In July 2019, I shared a blog about Microservices Antipatterns. This blog is about DevOops, the “DON’Ts” of DevOps or you can say “DevOps antipatterns”. In other words, it is about avoiding common mistakes that most of us could commit in the DevOps voyage. If you are a member of one of the cross-functional teams mentioned above or someone planning to adopt and nurture DevOps best practices, then this blog is for you. So, what are the most common don’ts that I am talking about?
1. Implementing DevOps in the Dev only
To implement DevOps successfully, you must minimize the rift between product owners, Dev, Test, and Ops teams. Unfortunately, some of us give more importance to the development in the process of instilling DevOps. It is of utmost importance to understand that you won’t be able to reap the benefits of DevOps unless all these individual contributors and teams collaborate at all levels.
2. Implementing DevOps in the Ops only
Yes, this is equally true for organizations that believe in their operations teams more because they get production to drive the revenue. Again, these organizations need to understand that DevOps is all about collaborative efforts. None of the Dev, Test, or Ops teams can do it all by themselves.
3. Simply starting somewhere
Well, that’s not how it works. Change is the essence of life but it is important to know where to apply these changes. Adopting DevOps for greenfield projects will always be easier as compared to brownfield projects. You can start with fresh codebases and processes of your choice. Plus, the teams would be more open to new practices than the already set up practices. With greenfield projects, you are always at the risk of slowing down the operation with sudden transformation of practices and tools. This can do more harm than good. So, it is important to assess and understand where exactly to start with for DevOps journey. Moreover, you must also choose a team that will influence other teams by setting an example.
4. Flipping all your organizational process
This is another antipattern that you need to be careful about. You don’t need to flip or revamp all your processes overnight to enable DevOps. The right way to start off is by analyzing processes that need to be fully DevOps-enabled. A simple answer to which processes need to revamp would be the ones that involve evolution at rapid rates.
5. Using too many tools
Docker, Kubernetes, Ansible, Terraform, Puppet, Jenkins… the list will go on. You might want to get your hands on all these tools and put them to use. Being a developer myself, I can understand this enthusiasm. While you might be obsessed with several tools, everything your DevOps really needs is simply the right recipe - a perfect combination of tools. You should analyze your processes and choose the right set of tools. Additionally, organizations need to have processes for application code changes and Infrastructure as Code changes in place.
6. Forcing all applications to the cloud
While you may be obsessed with that thought, let me tell you that it may not be practical to do so for all the applications! Why? There could be cases where you will have to make several changes in all the apps for them to be compatible with cloud platforms. This will cost you both time and money. That does not mean you must not consider moving them. You can organize all your apps in the descending order of their priority and then analyze them one by one to decide whether the amount of rework needed is worth it.
7. Letting automation, testing, and security take the back seat
Organizations generally give a lot of importance to development practices but letting automation, testing and security take the back seat can have serious repercussions. I always tell my colleagues, “Automation, testing, and security go hand-in-hand.” They are extremely crucial when it comes to continuous delivery. Leave them out of DevOps and what remains is nothing but a manual, lengthy, and unreliable development process. That’s how important they are! Another thing that you need to be careful about is going out of the way and automating. First, simplify processes that you are going to automate. The next step can be to establish automation standards and finally, move toward building meaningful automation. I’m sure you don't want to end up managing too many automation scripts.
8. Ignoring performance metrics
To achieve your goals, you will have to depend on several performance metrics that will monitor your processes and collect data about them. You will have to analyze this data regularly and gather meaningful insights from it. You can take corrective actions based on this data such as modifying your processes if necessary. If you ignore the early-stage indications, you may end up feeling lost in the bushes.
9. Outsourcing your processes to the wrong company
Your involvement with a company to which you are outsourcing your Dev and Ops processes is going to play a major role in adopting and nurturing healthy DevOps practices. A perfect coordination is the key to derive the expected results. Moreover, the partner that you choose must be an experienced mentor who is well aware of all the pitfalls and can guide you at every stage. You can together find the right opportunities for your DevOps processes to grow and prosper.
Implementing any application development practice just for the sake of following the trend or being one from the bottle is surely the thing everyone must avoid. I hope this blog will help you to make your DevOps journey an effortless one. So those were some of the DevOps antipatterns that you need to be aware of. Adopting and implementing DevOps is not an easy task. Most processes are complicated and require a high level of expertise. To save yourself from DevOops, you can always get in touch with Opcito.