{"id":41,"date":"2020-02-17T13:07:57","date_gmt":"2020-02-17T12:07:57","guid":{"rendered":"https:\/\/www.julianmejio.com\/blog\/?p=41"},"modified":"2020-09-11T16:41:34","modified_gmt":"2020-09-11T15:41:34","slug":"devops-facil-introduccion-1","status":"publish","type":"post","link":"https:\/\/www.julianmejio.com\/blog\/2020\/02\/17\/devops-facil-introduccion-1\/","title":{"rendered":"DevOps f\u00e1cil, parte 1: Introducci\u00f3n"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">De qu\u00e9 se trata esta serie<\/h2>\n\n\n\n<p><em>DevOps<\/em> es la pr\u00e1ctica de unificar el desarrollo de software (an\u00e1lisis, dise\u00f1o y codificaci\u00f3n) con las etapas operacionales (integraci\u00f3n, pruebas y despliegue) a trav\u00e9s del monitoreo y automatizaci\u00f3n. El objetivo es reducir el tiempo entre cada ciclo de desarrollo de software, incrementar la frecuencia de despliegue y alinear de manera \u00f3ptima el producto con las necesidades del negocio y p\u00fablico objetivo.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Puede pensarse que <em>DevOps<\/em> est\u00e1 dise\u00f1ado para equipos de trabajo grandes en donde la calidad sea una prioridad y las entregas sean de gran fiabilidad, pero no es as\u00ed. <em>DevOps<\/em> se convertir\u00e1 en la herramienta m\u00e1s importante para cualquier desarrollador y grupo de trabajo, y luego de usarla se sentir\u00eda incompleto si no la tuviera.<\/p>\n\n\n\n<p>Esta serie va dirigida a aquellos desarrolladores que est\u00e1n buscando una forma de organizar su trabajo y no tienen un punto de partida claro. Tambi\u00e9n va dirigida a aquellos desarrolladores interesados en el tema y quieran profundizar un poco m\u00e1s en el desarrollo de software.<\/p>\n\n\n\n<p>Esta serie no va dirigida al desarrollador aficionado. Creo que si de verdad quiere aprender sobre <em>DevOps<\/em> lo mejor es aprender algunos conceptos de ingenier\u00eda de software antes, y ese es un t\u00f3pico que no abordo aqu\u00ed, aunque lo poco que tocar\u00e9 tratar\u00e9 de hacerlo de la manera m\u00e1s did\u00e1ctica que pueda. <a href=\"https:\/\/github.com\">Github<\/a> ofrece una plataforma lo suficientemente buena y robusta para cualquier proyecto, ya sea iniciado por un desarrollador aficionado o no, y sin necesidad de aprender <em>DevOps<\/em>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><em>DevOps<\/em> y los modelos de desarrollo de software<\/h2>\n\n\n\n<p>Ha pasado una d\u00e9cada desde que el t\u00e9rmino <em>DevOps<\/em> empez\u00f3 a ser conocido por muchos, y aplicado por unos pocos. Hoy en d\u00eda, entre los desarrolladores es un asunto de \u00abdecencia\u00bb, saber al menos su teor\u00eda.<\/p>\n\n\n\n<p>Este t\u00e9rmino empez\u00f3 a cultivarse en conferencias sobre modelos \u00e1giles desde el a\u00f1o 2007, sin embargo no era un concepto nuevo. DevOps es m\u00e1s parecido a un cambio cultural, el cual implica el uso de herramientas de automatizaci\u00f3n y monitoreo en el proceso de desarrollo de software.<\/p>\n\n\n\n<p> Cualquier modelo de desarrollo de software puede beneficiarse de DevOps, sin embargo los modelos \u00e1giles tienen los ciclos de vida suficientemente cortos y flexibles como para sacar el m\u00e1ximo provecho. \u00bfPor qu\u00e9? Echemos un vistazo a los tres modelos m\u00e1s conocidos:<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">Desarrollo en cascada<\/h6>\n\n\n\n<p>Este modelo se caracteriza por dividir el desarrollo de software en etapas ordenadas y bien definidas. En cada etapa hay actores bien definidos y los subproductos son artefactos que sintetizan el proceso hasta ese punto.<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Levantamiento de requisitos funcionales y no funcionales.<\/li><li>An\u00e1lisis y modelado del software soluci\u00f3n.<\/li><li>Dise\u00f1o y arquitectura.<\/li><li>Implementaci\u00f3n, pruebas unitarias e integraci\u00f3n.<\/li><li>Pruebas funcionales, verificaci\u00f3n y retroalimentaci\u00f3n.<\/li><li>Operaci\u00f3n y despliegue.<\/li><\/ol>\n\n\n\n<p>Todo desarrollador de software est\u00e1 familiarizado con este modelo incluso sin conocerlo. El desarrollador, a medida que se incrementa la complejidad del software que hace, se ve cada vez m\u00e1s en la necesidad de organizar de alg\u00fan modo su trabajo. Este modelo es simple y robusto, pero poco flexible y muchas veces no vale la pena en proyectos de corto tiempo de duraci\u00f3n, ya que se gasta m\u00e1s tiempo en los metaprocesos que en el mismo desarrollo, y ni hablar de la cantidad de artefactos a construir. Muchos usan variaciones optimizadas a sus necesidades. Un equipo de trabajo peque\u00f1o puede usar un modelo en cascada de tres etapas: levantamiento, implementaci\u00f3n y despliegue.<\/p>\n\n\n\n<p>Vale la pena aclarar que no hay modelos obsoletos. Cada modelo est\u00e1 pensado para un determinado grupo de trabajo y proyecto. El modelo en cascada por ejemplo, puede usarse en proyectos donde la necesidad est\u00e9 bien descrita tecnicamente, donde haya un presupuesto fijo y un grupo de trabajo mediano a grande.<\/p>\n\n\n\n<p>Ahora, \u00bfen d\u00f3nde est\u00e1 el <em>DevOps<\/em> aqu\u00ed? Recordemos la premisa <em>DevOps<\/em>: unificar desarrollo con operaci\u00f3n. Las tres etapas corresponden al desarrollo de software, y las \u00faltimas tres corresponden a las operaciones sobre el software desarrollado. <em>DevOps<\/em> puede integrar las etapas 4, 5 y 6, lo que reducir\u00eda el tiempo invertido en el metaproceso y tambi\u00e9n reducir\u00eda el tiempo que tomar\u00eda estar en la quinta y sexta etapa, ya que se automatizar\u00edan.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Continuar\u00e1\u2026<\/h2>\n\n\n\n<p>En la siguiente entrega hablar\u00e9 sobre otro modelo en donde <em>DevOps<\/em> podr\u00eda estar presente, y sobre los modelos \u00e1giles y c\u00f3mo estas popularizaron la unificaci\u00f3n entre el desarrollo y las operaciones.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>De qu\u00e9 se trata esta serie DevOps es la pr\u00e1ctica de unificar el desarrollo de software (an\u00e1lisis, dise\u00f1o y codificaci\u00f3n) con las etapas operacionales (integraci\u00f3n, pruebas y despliegue) a trav\u00e9s del monitoreo y automatizaci\u00f3n. El objetivo es reducir el tiempo entre cada ciclo de desarrollo de software, incrementar la frecuencia de despliegue y alinear de [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"He publicado un nuevo art\u00edculo. DevOps f\u00e1cil, parte 1: Introducci\u00f3n","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[9],"tags":[10,13,14],"class_list":["post-41","post","type-post","status-publish","format-standard","hentry","category-devops","tag-devops","tag-modelo","tag-software"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.julianmejio.com\/blog\/wp-json\/wp\/v2\/posts\/41","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.julianmejio.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.julianmejio.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.julianmejio.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.julianmejio.com\/blog\/wp-json\/wp\/v2\/comments?post=41"}],"version-history":[{"count":5,"href":"https:\/\/www.julianmejio.com\/blog\/wp-json\/wp\/v2\/posts\/41\/revisions"}],"predecessor-version":[{"id":150,"href":"https:\/\/www.julianmejio.com\/blog\/wp-json\/wp\/v2\/posts\/41\/revisions\/150"}],"wp:attachment":[{"href":"https:\/\/www.julianmejio.com\/blog\/wp-json\/wp\/v2\/media?parent=41"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.julianmejio.com\/blog\/wp-json\/wp\/v2\/categories?post=41"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.julianmejio.com\/blog\/wp-json\/wp\/v2\/tags?post=41"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}