DEVOPS

The world is changing. It's becoming more and more complicated. Systems are getting that as well, more and more real time, on-the-fly, available, concurrent, dynamic. If all that things are happening why we still suck when you talk about development and operations working together ?

There is a old war between dev and ops, there're two worlds, two cultures, two totally different ways of thinking, concerns, there're 2 departments often with different managers, I don't talk about my company I talk about the majority of the world, there're this false dichotomy.

Have you ever throw something over the dev or ops wall ? I did! It's amazing how still there're this wall and how dev and ops don't know how to work together effectively.

Devs often think that the only that matter is teach ops how to restart the server and where put the God Damn EAR file. Ops often think there're is only life after QA.

Both are totally wrong. If you have a stupid small simple system you may work well with this broken model BUT today systems are so complex and getting more and more complex I don't see this model working, this is broken indeed.


What issues this create ?

For the DEV/OPS side I can think in some painful issues like the following:

  • Hard Deploys: Deploys should be boring ? Yes they should, and every agile developer say that is just push a god dam button on you favorite continuous integration system. Once you automate the deploy is simple right ?Yes the deploy it is, BUT and about the Operation system, Servers, Caches, NOSQLs, Databases, etc... ? Did you automate they as well ? Don't get me wrong I should automate as much as you can BUT even doing that and going that road, you must have coordination, I do need communication, documentation is worth is not communication and it sucks. Why it sucks ?
As you can see emails lead you to a very very poor communication, don't think because you have a wiki page or CMS or weatherer you are using is you must read you're loosing richness and in the worst case details. It's easy say that if there are issues is because people didn't document well and its a people/process failure.

SO, you automate as much as possible BUT always will be manual steps, like putting some network device or service down making the change and rolling up again, this is like an "Orchestration" this could be really complex even heavy automated, remember automation don't can easy.
  • Surprises: Because DEV and OPS are not talking and breathing the same air their have surprise for each others. For the dev side what cloud happen is that someone in ops is updating some server or database improving something and them this create side effects if poor executed, them strange crazy issues start happening in the dev side so devs struggle with it and take 5 time more to figure out what happens and sometimes its not in the code but in the environment. For the ops side some surprises are quite interesting like we are going to production next week or we just kill oracle and replace it for the latest NOSQL database or even we remove the cache from server and move it for other place, hard notices to know 3 weeks before the production.
  • Delays: Because there're this separation, prioritization is screwed. Ops have other priorities them devs and vice versa, this create nothing but delays, huge ticket delays, huge stories delays and this is nothing but PURE WASTE.
  • Blaming and Finger Point: Often we end up in situations that devs are blaming ops and ops and blaming dev, this really create and decrease the trust that should be in place but is not. Commitment is important, both works are crucial, this departmentalization just create dysfunctions and anti-patterns. In the end of the day this don't fix the issues and just decrease the staff morale.
  • Poor Quality: Because of this we end up with products with poor quality in the sense of bad resources utilization, integration, poor time to market, bigger downtimes and so on and on.

DEVOPS: The Light at the end of the tunnel

DEVOPS it's a emerging change screen. It's your company developers and operation saying enough we gonna make it right now.

It represents practices, principles and tools to improve the way that dev and ops work together as a concise team.  DEVOPS in the end of the day its all about communication and collaboration between people. Is not a old movement it started in Belgium 2009 during a conference but the ideas are really simple and old, make people talk and work together. 

This conference already happen here in Brazil, I feel prude to see changes in that area happening in Brazil and in the world. Development is using agile and Lean in now a days, some call devops as agile operations. It's great some some methodologies like kanban for operationsKanban is great because is simple and is easier to match with the ops way of work, perfect and flowed.

The Great, The Few, The Unit

I just can't see ops and devs spited in separated departments. When something really bad happen I don't see state send thousandths of cops to fix something. What I see accentually is a very small or few small units. This is not by coincidence. Self-organized, self-oriented, self-managed units works much better then a bunch of guys doing meetings and changing mails.

It's all about the team. OPS must be part of the team, they can't be other team they must be part of the team, it should be just one team one unit.

Agile / Lean practices and values can help us to build a team with devops and really kick ass. For me this is more simple that could look like, IMHO is just put people in the some room(when you can - In distributed projects is harder.). Often you have dev and ops in the some organization and they don't talk, they don't seat in the same room.

IMHO when you put people in the some room, magic happens, communication and collaboration find a way and believe me things will be better.

The Unit is not waste, it's optimization actually. People just work better in that model, using continuous improvements and retrospectives and don't see how the people can't get better. That's the issue, this is not a new issue, it's a old big issue, the really is that companies has being negligent with that for decades. Now, the issues are bigger, we have SOA, we have continuous deployment and more and more things will be as much dynamic as they can IF companies don't change how they work things will get worst and worst this is not just a matter of efficiency BUT it's a matter of RISK and economical damage.

Cheers,
Diego Pacheco

Popular posts from this blog

Kafka Streams with Java 15

Rust and Java Interoperability

HMAC in Java