[{"data":1,"prerenderedAt":389},["ShallowReactive",2],{"\u002Fen\u002Fpost\u002F2019\u002F01\u002Fdevops-genesis":3},{"id":4,"title":5,"author":6,"body":7,"createdAt":374,"description":375,"extension":376,"meta":377,"navigation":378,"path":379,"seo":380,"slug":381,"stem":382,"tags":383,"__hash__":388},"posts\u002Fposts\u002F2019\u002F01\u002Fdevops-genesis.md","DevOps: The Genesis",null,{"type":8,"value":9,"toc":359},"minimark",[10,15,19,22,25,30,33,36,40,43,46,49,53,56,69,72,90,98,112,116,120,123,134,137,140,144,147,151,154,158,165,168,186,189,192,198,201,204,207,221,224,229,232,235,241,244,248,251,266,269,274,277,280,283,286,291,294,297,305,317,320,323,326,331,334,337,340,344,351],[11,12,14],"h1",{"id":13},"introduction","Introduction",[16,17,18],"p",{},"First of all, it's all about agile.",[16,20,21],{},"The DevOps methodology was created on top of agile methods, to deliver a higher\nvalue inside software releases, automating feature release through pipelines,\nthat can test hypothesis faster allowing higher adaptability using \"fail-fast\"\napproaches. Those changes are more cultural than technical, so it's normal to\nsee DevOps being called culture.",[16,23,24],{},"The implementation of DevOps happens through processes automation, having a\nstrong sense of processes re-engineering inside the company. Comparing to the\ncultural change, the technical is easy to implement. Therefore the role that a\n\"DevOps Engineer\u002FAnalyst\" performs is very confusing, which enables many\nSysAdmins and Infra Analysts assuming the role of \"DevOps.\"",[26,27,29],"h2",{"id":28},"lean-is-the-basis-of-agile","Lean is the basis of Agile",[16,31,32],{},"Reality is not as happy as it sounds. After World War II, Japan was destroyed\nand under-resourced after losing the war. With a limited amount of resources,\nthe country needed to reinvent itself and survive after a time of severe\ndepression. During that time two guys gained attention inside a company that\nlater gave its name after the methodology.",[16,34,35],{},"Those guys were Eiji Toyoda and Taiichi Ohno, inside Toyota Motor Corporation.\nThey're the founders of the \"Toyota production model\" also known as Toyotism.",[26,37,39],{"id":38},"toyota-gave-birth-to-lean","Toyota gave birth to Lean",[16,41,42],{},"Lean teaches how to optimize the end-to-end process, focusing on processes that\ncreate value for customers. Bottlenecks in the process must be removed, and\nwasteful activities need to be identified and avoided. Both explained and\ndefined by LEAN 3M: Muda, Mura, and Muri.",[16,44,45],{},"Also teaches to improve yourself day after day and always focus on quality\nthrough Kaizen (continuous improvement).",[16,47,48],{},"Japanese culture truly believes that quality is the main objective to deliver\nvalue to customers since quality is what brings your clients back.",[26,50,52],{"id":51},"kaizen","Kaizen",[16,54,55],{},"A mindset that helps to look at each part of the process exclusively and think\nabout the improvements. Involving the people who are part of the process,\nencourage the inclusion of these people in the decisions of change, since:",[57,58,59,63,66],"ul",{},[60,61,62],"li",{},"It is much easier to accept a change when it is not imposed (top-down);",[60,64,65],{},"There is a greater absorption of change by people when they're included in the\nplanning;",[60,67,68],{},"The people who are involved in the process bring their concerns and\nsuggestions, which contribute positively to the evolution of the change,\nmaking the idea more robust.",[16,70,71],{},"The process of defining improvements through Kaizen happens (usually) in the\nfollowing order:",[73,74,75,78,81,84,87],"ol",{},[60,76,77],{},"Define data-driven objectives;",[60,79,80],{},"Review the current state and develop an improvement plan;",[60,82,83],{},"Implement improvement;",[60,85,86],{},"Review the implementation and improve what does not work;",[60,88,89],{},"Report the results and determine the items to be monitored.",[16,91,92,93,97],{},"This process is also called ",[94,95,96],"strong",{},"PDCA: Plain-Do-Control-Act",", which is summarized\nin:",[57,99,100,103,106,109],{},[60,101,102],{},"Plan (develop the hypothesis);",[60,104,105],{},"Do (experiment);",[60,107,108],{},"Check (validate results);",[60,110,111],{},"Act (refine the experiment and start over).",[11,113,115],{"id":114},"_3m-muda-mura-muri","3M: Muda, Mura, Muri",[26,117,119],{"id":118},"muda-waste","Muda (waste)",[16,121,122],{},"Any activity that consumes time without adding value to the final consumer. e.g.:",[57,124,125,128,131],{},[60,126,127],{},"over-production;",[60,129,130],{},"idle time in the process;",[60,132,133],{},"products with a defect.",[16,135,136],{},"It's important to remember that there are different levels of Muda that can be\nremoved quickly or not, and the classification depends on the time for removal.",[16,138,139],{},"An example of a more time-consuming Muda is the discontinuation of legacy\nsoftware that ends up with longer release cycles, causing teams to be idle,\nfollowed by an often long or manual test routine.",[26,141,143],{"id":142},"mura-unevenness","Mura (unevenness)",[16,145,146],{},"Unevenness in operation, caused by activities that are very changeable and\nunpredictable, generating different results in all executions. e.g., the\nexecution of tasks that were not well planned and ended up arriving with strict\ndeadlines. The team runs in the rush, generating exhaustion, despair, and\nmoreover, when finished leaves the people who have performed these tasks waiting\n(for feedback, or confirmation that it is completed).",[26,148,150],{"id":149},"muri-overload","Muri (overload)",[16,152,153],{},"Overburdening equipment or operators by requiring them to run at a higher or\nharder pace beyond the limit, to achieve some goal or expectation, causing\nfatigue and consequently failures during the process. These failures are usually\nhuman errors caused by fatigue during overwork.",[26,155,157],{"id":156},"back-to-agile","Back to Agile",[16,159,160,161,164],{},"In 2000 a group of 17 people met at a resort in Oregon to talk about ideas that\ncould improve the flow of software development. After a year of mature ideas,\nthese people met again and published the ideas, which we now know as ",[94,162,163],{},"Agile\nManifesto",".",[16,166,167],{},"Main points are:",[16,169,170,173,174,177,178,181,182,185],{},[94,171,172],{},"Individuals and interactions"," over processes and tools ",[94,175,176],{},"Working software","\nover comprehensive documentation ",[94,179,180],{},"Customer collaboration"," over contract\nnegotiation ",[94,183,184],{},"Responding to change"," over following a plan",[16,187,188],{},"I will restrict the explanation of these points with the DevOps point of view,\nkeeping on track (now).",[26,190,172],{"id":191},"individuals-and-interactions",[16,193,194],{},[195,196,197],"em",{},"over processes and tools",[16,199,200],{},"First comes the individuals, they should receive the necessary tooling to work\nwith, and then be empowered to do their jobs. Interactions between people are\ngreatly encouraged, for sharing knowledge and also for facilitating creative\nflow within development teams.",[16,202,203],{},"An excellent example of interaction encouraged through DevOps is the code review\nhabit. Considering that small parts of the software will be iterated and\napproved in the pipeline passing through different environments, automatically,\nthe best way to prevent defects is through code review.",[16,205,206],{},"This habit brings benefits such as:",[57,208,209,212,215,218],{},[60,210,211],{},"Knowledge sharing;",[60,213,214],{},"Observation of the problem from a different point of view;",[60,216,217],{},"Team engagement;",[60,219,220],{},"Lesser bugs.",[26,222,176],{"id":223},"working-software",[16,225,226],{},[195,227,228],{},"over comprehensive documentation",[16,230,231],{},"Here's a trick in \"working software,\" software that works is not code that\ncompiles. The software that works is what meets the requirements of the user;\ni.e., the software that solves the problem and the pains of the user.",[16,233,234],{},"As the market is very dynamic, and evolves with high speed, often during the\nsoftware development project the requirements change due to external factors.\nTherefore, knowing that it is not possible to predict all the elements, many\n\"workarounds\" are made during development and documented. Passing the\nresponsibility to the user to handle the faults, and perform the workarounds,\nexpending more effort than would be required to perform the tasks using the\nsoftware.",[236,237,238],"blockquote",{},[16,239,240],{},"Deliver a working software frequently, ranging from a few weeks to a few months, considering shorter time-scale. - Agile Manifesto",[16,242,243],{},"Encouraging as many deployments as possible, so that failures happen as early as\npossible, thus allowing their impact to be much less.",[11,245,247],{"id":246},"fail-fast","Fail-fast!",[16,249,250],{},"Failures are understood and encouraged because it's part of the mindset. Because:",[57,252,253,260,263],{},[60,254,255,256,259],{},"Only those who ",[94,257,258],{},"do"," make mistakes;",[60,261,262],{},"Failures are the best opportunity for learning and evolving;",[60,264,265],{},"Shit happens.",[16,267,268],{},"Nothing like quoting Murphy's law to contextualize",[236,270,271],{},[16,272,273],{},"\"Anything that can possibly go wrong, does.\"",[16,275,276],{},"Therefore, it's best for failures to occur early, while the cost of correction\nis still low. Failing a controlled testing environment allows the fix to be much\nfaster (and cheaper) than it would if the fix were already in production.",[16,278,279],{},"For this approach to succeed, there is a premise that environments are\nproduction copies, or at least as close as possible. Otherwise, there will be\nbehavioral changes in the software between the environments, making the test\nenvironment unfeasible.",[16,281,282],{},"If the environments are divergent, the promotion of bugs for production will be\nvery frequent, causing late failures, which are expensive failures.",[26,284,180],{"id":285},"customer-collaboration",[16,287,288],{},[195,289,290],{},"over contract negotiation",[16,292,293],{},"Know your client! Including it in the process is the best approach to have\nworking software. After iterating over deliverables, it's essential to create a\npositive feedback loop with your client, bringing it as close as possible to the\ndevelopment of the tools that he\u002Fshe is going to use.",[16,295,296],{},"We can describe this situation with:",[57,298,299,302],{},[60,300,301],{},"From point A it is possible to see only point B;",[60,303,304],{},"From point B it is possible to see point C;",[16,306,307,308,164],{},"Therefore there is a great incentive for the software to be delivered in parts,\ncontinuously. Thus gathering user feedback on the next steps, following the\nconcepts of evolutionary prototyping, which were widely publicized through ",[309,310,314],"a",{"href":311,"rel":312},"http:\u002F\u002Ftheleanstartup.com\u002Fbook",[313],"nofollow",[195,315,316],{},"The\nLean Startup",[16,318,319],{},"This point contrasts sharply with the previous one about continuous release, so\nthat it is possible to present the prototype and evolve it throughout the\nproject.",[16,321,322],{},"Learn who your customer\u002Fconsumer\u002Fuser is, and whom you are making the software\nfor, as this is the only way you can deliver value to that customer. An\nessential part of the software development process is to be empathic with user\nproblems, and to truly understand what the problem is to be solved, and the\nresult of the impact on software development (value creation for the user).",[26,324,184],{"id":325},"responding-to-change",[16,327,328],{},[195,329,330],{},"over following a plan",[16,332,333],{},"Redesigning the requirements overtime is part of the job, and a necessary step\nto success. If you want to build something useful that is going to grow and have\nabsorption, it's a key feature to include your client in the implementation\nprocess.",[16,335,336],{},"It will be the only way to bring all the problems of the user to the table and\ncreate the best solution for all these problems because the user is the only\nperson that knows the real challenges he faces in their routine dealing with\nsoftware.",[16,338,339],{},"With continuous delivery of software along with monitoring results, the process\nof collecting feedback is much simpler and faster.",[11,341,343],{"id":342},"devops-devops-devops","DevOps, DevOps, DevOps",[16,345,346,347,350],{},"With the popularization of DevOps, a lot of disagreement came out there followed\nby a significant confusion about the subject. It is very common to come across\ndifferent interpretations of ",[94,348,349],{},"what is DevOps",". There is a lot of euphemism in\nthe area, and gourmetization on LinkedIn, with many SysAdmins calling themselves\nDevOps since they learned to code shell script inside Python.",[16,352,353,354,358],{},"Do you want to keep reading? [Here are the benefits of adopting DevOps techniques.](",[355,356],"binding",{"value":357},"\u003C relref \"post\u002F2019\u002F01\u002Fdevops-benefits\u002Findex.md\" >",")",{"title":360,"searchDepth":361,"depth":361,"links":362},"",2,[363,364,365,366,367,368,369,370,371,372,373],{"id":28,"depth":361,"text":29},{"id":38,"depth":361,"text":39},{"id":51,"depth":361,"text":52},{"id":118,"depth":361,"text":119},{"id":142,"depth":361,"text":143},{"id":149,"depth":361,"text":150},{"id":156,"depth":361,"text":157},{"id":191,"depth":361,"text":172},{"id":223,"depth":361,"text":176},{"id":285,"depth":361,"text":180},{"id":325,"depth":361,"text":184},"2019-01-11T21:00:00","From where DevOps came and to where we go. DevOps isn't simply automation, but a whole culture around agile business","md",{},true,"\u002Fposts\u002F2019\u002F01\u002Fdevops-genesis",{"title":5,"description":375},"devops-genesis","posts\u002F2019\u002F01\u002Fdevops-genesis",[384,385,386,387],"devops","culture","agile","lean","C-N9pTpV2fyHJAGyPw6uDVVxN01f3LLaykpjg7IQQr8",1778441744213]