DevOps

Rapidly changing markets and development needs ­demand enterprises to be efficient and agile. Software products have to be able to respond to market demands, user fashions and evolving business requirements. In order to achieve that, the traditionally conservative area of IT systems operations needs a serious qualitative rethinking.

Every company wants the best specialists on its team to face all these difficult challenges head on. Millions are spent on headhunting the “cream of the cream” experts in every field. So why do research studies by IBM show that only 1 out of 4 enterprises finds their software team effective?

In my opinion, one of the main reasons for this is the traditional approach to company structure of functionally separate departments that to this day fail to communicate effectively. The latest effort to breach gaps in collaboration between development and operations is DevOps.

What’s-DevOps

DevOps is a term clipped from two words – “development” and “operations” – and is a practice that puts extra emphasis on communication and collaboration between developers and IT specialists to achieve faster releases of reliable, carefully implemented software products with the help of automation.

With the year 2009 as an official date of birth for DevOps, the methodology is relatively new. The last eighteen months have been a real boom of companies finally realizing they need DevOps. Before it was known and used by enthusiasts and was only discussed by everyone else rather than utilized universally.

IT practices come and go. There was a time when not everyone grasped the importance of testing but now it’s an indisputable part of every project. DevOps isn’t in the same space as testing in terms of universal acclaim and understanding of its value, and really needs more coverage.

Even though bridging the gap between development and operations is the main goal, DevOps also aims to achieve and guarantee maximum synergy, integration and synchronization of workflows between all functional IT project departments, including QA engineers, security specialists and even clients.

It’s all about bringing everyone together for a dialogue – something that was learned the hard way out of years of playing Telephone between the different departments. Losing important aspects in translation resulted in products that were brilliantly developed but could not be correctly implemented, with client and/or user dissatisfaction, failed projects, extended deadlines and stretched budgets as a consequence.

How-Does-the-Gap-Appear

Let me list a few reasons for lack of communication between developers and IT:

  1. A difference in how developers and IT specialists approach change. Developers welcome change as they know the business needs them to respond to the constantly shifting market demands. IT specialists try to avoid change because they realize that a lot of downtime is caused by innovations and often resist them.
  2. Development and operations are separated geographically (in different rooms, departments, buildings or even on different continents).
  3. Development and operations use different tools. And when they do use the same tools and tool sets, they use them differently.
  4. Both parties understand software implementation in a unique way. Bugs and errors appear when IT and developers start implementing software solutions on their respective environments, changing file locations and configurations, etc.
  5. Communication happens not continuously, but with a constant lag. When bugs and errors pile up, what has been planned as a simple implementation turns into a chaotic training process. Why? Because problems that have been developing for a long time need to be fixed on the spot.

DevOps aims to solve these bottlenecks. It does so by bringing teams together to embrace change, adopt a unified approach to using tools and implement together. It also helps make all the involved parties communicate throughout the entire development cycle and not only when issues arise during implementation or rollout. That way everyone is finally forced to face each other’s needs and points of view.

Why-Do-You-Need-DevOps

As practice shows, developers benefit from DevOps a lot: it saves them time, helps guarantee quality and eliminates a lot of headaches and sleepless nights, making the client happier which is obviously everyone’s ultimate goal.

Clients see an actual real-time evolution of the product or service, always know how ready it is, can evaluate quality better, clear up any misunderstanding when it appears, catch problems early and fix them before negative impact spreads like a virus.

In my personal experience, everyone who has seen DevOps in action doesn’t even consider any other methodology for their projects. The teams I have seen agree that it’s useful not just on paper but in practice.

Who-Needs-DevOps-Most

The standard answer would be enterprises in need of highly frequent releases. Why? Because DevOps facilitates continuous deployment and continuous delivery, perfect if you are using lean startup methodology.

My personal answer is this – each project can benefit from adopting a DevOps orientation and philosophy, and if we are talking about more complex projects, their overall success and revenue often depend on the correct implementation of the methodology. The more components to integrate you have, say in a large enterprise system with many modules that need to work together seamlessly, the more useful DevOps will become.

I think that problems arise when not enough attention is paid to not only how the product should be written but also how it should be delivered to the client. When attention to detail is lacking, DevOps may come to the rescue.

Startups can benefit from DevOps-as-a-Service as well, since it will most probably bring their costs down, speed up delivery, resulting in a quality product that lets them hit the market at the right moment.

The-Main-Goals-of-DevOps

At the foundation of DevOps is the idea of addressing key pain-points in the development-operations system, enabling your business to innovate, change and scale faster, more effectively and reliably, and with fewer risks.

One of the main goals of DevOps is to eliminate the difference in priorities and processes of the different key groups involved, and make them as equal as possible in order to achieve maximum flexibility and align development with business needs.

Other DevOps goals are:

  • improved deployment frequency
  • faster time to market
  • lower new releases failure rate
  • shorter lead time between fixes
  • faster mean time to recovery if new releases crash
  • improved reliability and security
  • simplified, easily programmable processes.

DevOps also aims to maximize predictability, efficiency, security, and maintainability of operational processes.

How-Does-DevOps-Do-It

At the core of the new organization philosophy is continuity, realized in the four main principles:

  • Continuous Release and Development
  • Continuous Testing
  • Continuous Monitoring
  • Continuous Feedback and Optimization.

DevOps uses automation to achieve its­­ main goals. Standardizing development environments is also important. Better workflow is achieved by more efficient tracking, resolving documented process control and granular reporting issues, giving developers more control of the environment, and understanding infrastructure as more application-centric.

DevOps helps achieve business goals in record times, with minimized risks and higher overall quality. The principle of continuity is observed throughout all aspects and stages of development, so that the traditional lack of collaboration between development, operations and QA is eliminated. All kinds of businesses can benefit from the adoption of DevOps. But those enterprises and IT organizations that are not able to breach the gap between their development and operational teams may lose all their advantages in today’s competitive business environment.

Implementing and supporting DevOps without professional experience is quite difficult, and may not allow you to capitalize on it fully. I would advise to rely on professional help from specialized teams that use the latest best practices to implement DevOps and offer high quality ongoing support services. That way you can be sure you are reaping all the benefits of this must-have practice.