{"id":87467,"date":"2020-07-08T13:42:11","date_gmt":"2020-07-08T11:42:11","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn"},"modified":"2020-07-08T13:42:11","modified_gmt":"2020-07-08T11:42:11","slug":"rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn","status":"publish","type":"post","link":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn","title":{"rendered":"Gu\u00eda para principiantes: creando un pipeline de DevOps","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Si eres nuevo en DevOps, echa un vistazo a esta gu\u00eda para crear tu primer pipeline en cinco pasos.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Gu\u00eda para principiantes: creando un pipeline de DevOps\" src=\"\/wp-content\/uploads\/2020\/07\/605ed7d81323d0b5e094f7f912f8c669.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>DevOps se ha convertido en la soluci\u00f3n est\u00e1ndar para solucionar procesos de desarrollo de software lentos, fragmentados o ineficaces. El problema es que, si eres nuevo en DevOps y no sabes por d\u00f3nde empezar, es posible que te falte comprensi\u00f3n sobre estos m\u00e9todos. En este art\u00edculo se definir\u00e1 qu\u00e9 es un pipeline de DevOps y se ofrecer\u00e1 una gu\u00eda para crear uno en cinco pasos. Aunque este tutorial no es exhaustivo, deber\u00eda proporcionarte una base para comenzar tu camino y expandir tus conocimientos en el futuro. Comencemos con un poco de historia.<\/p>\n<h3>Mi viaje por DevOps<\/h3>\n<p>\nAntes trabajaba en el equipo de nube de Citi Group, desarrollando una aplicaci\u00f3n web Infrastructure-as-a-Service (IaaS) para gestionar la infraestructura en la nube de Citi, pero siempre me interes\u00f3 c\u00f3mo hacer que el proceso de desarrollo fuera m\u00e1s eficiente y c\u00f3mo promover cambios culturales positivos en el equipo de desarrolladores. Encontr\u00e9 la respuesta en un libro recomendado por Greg Lavender, director t\u00e9cnico de arquitectura e infraestructura en la nube de Citi. El libro se llama \u201cEl Proyecto F\u00e9nix\u201d (<noindex><a rel=\"nofollow\" href=\"https:\/\/www.amazon.com\/dp\/B078Y98RG8\/\">The Phoenix Project<\/a><\/noindex>), y en \u00e9l se explican los principios de DevOps, present\u00e1ndose como una novela.<\/p>\n<p>En la tabla en la contraportada del libro se muestra la frecuencia con la que las diferentes compa\u00f1\u00edas implementan sus sistemas en el entorno de lanzamiento de versiones:<\/p>\n<p>Amazon: 23,000 por d\u00eda<br \/>\nGoogle: 5,500 por d\u00eda<br \/>\nNetflix: 500 por d\u00eda<br \/>\nFacebook: Una vez al d\u00eda<br \/>\nTwitter: 3 veces a la semana<br \/>\nCompa\u00f1\u00eda t\u00edpica: Una vez cada 9 meses<\/p>\n<p>\u00bfC\u00f3mo es posible que Amazon, Google y Netflix logren tales frecuencias? Todo porque estas empresas han ideado c\u00f3mo crear un pipeline de DevOps casi perfecto.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nEst\u00e1bamos lejos de ello hasta que implementamos DevOps en Citi. En ese momento, mi equipo trabajaba en diferentes entornos, pero el despliegue en el servidor de desarrollo era completamente manual. Todos los desarrolladores ten\u00edan acceso solo a un servidor de desarrollo basado en IBM WebSphere Application Server Community Edition. El problema era que el servidor se apagaba cada vez que varios usuarios intentaban desplegar al mismo tiempo, por lo que los desarrolladores deb\u00edan comunicarse entre s\u00ed sobre sus intenciones, lo cual era bastante doloroso. Adem\u00e1s, exist\u00edan problemas con la baja cobertura de pruebas de c\u00f3digo, procesos de despliegue manual complicados y la falta de capacidad para rastrear el despliegue de c\u00f3digo asociado con una tarea o historia de usuario espec\u00edfica.<\/p>\n<p>Me di cuenta de que era necesario hacer algo y encontr\u00e9 a un colega af\u00edn. Decidimos colaborar en la creaci\u00f3n del primer canal DevOps; \u00e9l configur\u00f3 una m\u00e1quina virtual y un servidor de aplicaciones Tomcat, mientras yo trabajaba en Jenkins, integrando Atlassian Jira y BitBucket, y tambi\u00e9n mejorando la cobertura de pruebas de c\u00f3digo. Este proyecto paralelo fue muy exitoso: casi automatizamos muchos procesos, logramos casi el 100% de operatividad de nuestro servidor de desarrollo, implementamos rastreo y mejoramos la cobertura de pruebas de c\u00f3digo, as\u00ed como a\u00f1adimos la capacidad de vincular ramas en Git con tareas en Jira o despliegues. La mayor\u00eda de las herramientas que utilizamos para construir nuestro canal DevOps eran de c\u00f3digo abierto.<\/p>\n<p>Ahora entiendo cu\u00e1n simple era nuestro pipeline DevOps: no utiliz\u00e1bamos extensiones como Jenkins files o Ansible. Sin embargo, este simple canal funcionaba bien, posiblemente gracias al principio de Pareto (tambi\u00e9n conocido como la regla del 80\/20).<\/p>\n<h3>Una breve introducci\u00f3n a DevOps y al pipeline CI\/CD<\/h3>\n<p>\nSi preguntas a varias personas: \u00ab\u00bfQu\u00e9 es DevOps?\u00bb, probablemente obtendr\u00e1s varias respuestas diferentes. DevOps, al igual que Agile, ha evolucionado para abarcar muchas disciplinas distintas, pero la mayor\u00eda de la gente estar\u00e1 de acuerdo en algunas cosas: DevOps es una pr\u00e1ctica de desarrollo de software o ciclo de vida de desarrollo de software (SDLC), cuyo principio central es un cambio cultural en el que desarrolladores y no desarrolladores coexisten en un entorno en el que:<\/p>\n<p>Las operaciones que antes se realizaban manualmente est\u00e1n automatizadas; <br \/>\nCada uno hace lo que mejor sabe hacer;<br \/>\nEl n\u00famero de implementaciones en un per\u00edodo determinado aumenta; La capacidad de trabajo se incrementa; <br \/>\nLa flexibilidad del desarrollo se mejora.<\/p>\n<p>Aunque tener las herramientas de software adecuadas no es lo \u00fanico necesario para crear un entorno DevOps, algunas herramientas son fundamentales. Una herramienta clave es la integraci\u00f3n y despliegue continuos (CI\/CD). En este pipeline, los entornos tienen diferentes etapas (por ejemplo, DEV, INT, TST, QA, UAT, STG, PROD), muchas operaciones est\u00e1n automatizadas y los desarrolladores pueden escribir c\u00f3digo de alta calidad, lograr flexibilidad en el desarrollo y una alta frecuencia de despliegues.<\/p>\n<p>Este art\u00edculo describe un enfoque de cinco etapas para crear un pipeline DevOps, similar al representado en el siguiente diagrama, utilizando herramientas de c\u00f3digo abierto.<\/p>\n<h3>Paso 1: M\u00e9todos de CI\/CD<\/h3>\n<p>\nLo primero que necesitas es una herramienta para CI\/CD. Jenkins, una herramienta de c\u00f3digo abierto basada en Java y distribuida bajo la licencia MIT, es el medio que ha popularizado la direcci\u00f3n de DevOps y se ha convertido en el est\u00e1ndar de facto.<\/p>\n<p>\u00bfEntonces, qu\u00e9 es Jenkins? Piensa en ello como un tipo de control remoto m\u00e1gico que puede comunicarse con varios servicios y herramientas y organizarlos. Una herramienta de CI\/CD como Jenkins por s\u00ed sola es in\u00fatil, pero se vuelve m\u00e1s poderosa a medida que se conecta a diversas herramientas y servicios.<\/p>\n<p>Jenkins es solo una de las muchas herramientas de c\u00f3digo abierto para CI\/CD que puedes usar para construir un pipeline DevOps.<\/p>\n<p>Jenkins: Creative Commons y MIT<br \/>\nTravis CI: MIT<br \/>\nCruiseControl: BSD<br \/>\nBuildbot: GPL<br \/>\nApache Gump: Apache 2.0<br \/>\nCabie: GNU<\/p>\n<p>As\u00ed es como se ven los procesos de DevOps con una herramienta de CI\/CD:<\/p>\n<p><img decoding=\"async\" alt=\"Gu\u00eda para principiantes: creando un pipeline de DevOps\" src=\"\/wp-content\/uploads\/2020\/07\/e937f3da170b24c53cb5d67a67a365bb.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Tienes una herramienta de CI\/CD funcionando en tu localhost, pero por ahora, no puedes hacer mucho. Vamos a pasar a la siguiente etapa del viaje al mundo de DevOps.<\/p>\n<h3>Paso 2: Gesti\u00f3n de sistemas de control de versiones<\/h3>\n<p>\nLa mejor (y probablemente la m\u00e1s sencilla) manera de comprobar que tu herramienta de CI\/CD puede hacer magia es integrarse con una herramienta de control de c\u00f3digo fuente (SCM). \u00bfPor qu\u00e9 necesitas control sobre el c\u00f3digo fuente? Supongamos que est\u00e1s desarrollando una aplicaci\u00f3n. Cada vez que creas una aplicaci\u00f3n, est\u00e1s programando, independientemente de si usas Java, Python, C++, Go, Ruby, JavaScript o cualquiera de los miles de lenguajes de programaci\u00f3n. El c\u00f3digo que escribes se llama c\u00f3digo fuente. Al principio, especialmente cuando trabajas solo, probablemente puedes poner todo en un directorio local. Pero cuando el proyecto crece y comienzas a invitar a otras personas a colaborar, necesitas una forma de prevenir conflictos y compartir modificaciones de manera efectiva. Tambi\u00e9n necesitas una manera de restaurar versiones anteriores, porque hacer copias de seguridad y copiar\/pegar en ellas ya est\u00e1 obsoleto. T\u00fa (y tus compa\u00f1eros de equipo) necesitan algo mejor.<\/p>\n<p>Es aqu\u00ed donde una herramienta de control de c\u00f3digo fuente se vuelve pr\u00e1cticamente indispensable. Esta herramienta almacena tu c\u00f3digo en repositorios, lleva un registro de versiones y coordina el trabajo de los miembros del proyecto.<\/p>\n<p>Aunque hay muchas herramientas de control de c\u00f3digo fuente, Git es el est\u00e1ndar, y esto es cierto. Recomiendo encarecidamente usar Git, aunque, si lo prefieres, hay otras opciones de c\u00f3digo abierto.<\/p>\n<p>Git: GPLv2 y LGPL v2.1<br \/>\nSubversion: Apache 2.0<br \/>\nConcurrent Versions System (CVS): GNU<br \/>\nVesta: LGPL<br \/>\nMercurial: GNU GPL v2+<\/p>\n<p>As\u00ed es como se ve un pipeline de DevOps con la adici\u00f3n de herramientas de control de c\u00f3digo fuente.<\/p>\n<p><img decoding=\"async\" alt=\"Gu\u00eda para principiantes: creando un pipeline de DevOps\" src=\"\/wp-content\/uploads\/2020\/07\/47793d73d3b496aa38e027ff116f729d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Una herramienta de CI\/CD puede automatizar los procesos de verificaci\u00f3n, obtenci\u00f3n de c\u00f3digo fuente y colaboraci\u00f3n entre miembros. \u00bfNo est\u00e1 mal? Pero, \u00bfc\u00f3mo convertir esto en una aplicaci\u00f3n funcional que miles de millones de personas puedan usar y disfrutar?<\/p>\n<h3>Paso 3: Crear una herramienta de automatizaci\u00f3n de compilaci\u00f3n<\/h3>\n<p>\n\u00a1Excelente! Puedes revisar el c\u00f3digo y hacer cambios en el sistema de control de versiones, as\u00ed como invitar a tus amigos a colaborar en el desarrollo. Sin embargo, a\u00fan no has creado una aplicaci\u00f3n. Para crear una aplicaci\u00f3n web, debe ser compilada y empaquetada en un formato de paquete implementable o ejecutarse como un archivo ejecutable. (Ten en cuenta que un lenguaje de programaci\u00f3n interpretado, como JavaScript o PHP, no necesita ser compilado).<\/p>\n<p>Utiliza la herramienta de automatizaci\u00f3n de compilaci\u00f3n. Independientemente de qu\u00e9 herramienta de automatizaci\u00f3n de compilaci\u00f3n elijas, todas persiguen el mismo objetivo: compilar el c\u00f3digo fuente en el formato deseado y automatizar la tarea de limpieza, compilaci\u00f3n, prueba e implementaci\u00f3n en un entorno espec\u00edfico. Las herramientas de compilaci\u00f3n variar\u00e1n seg\u00fan tu lenguaje de programaci\u00f3n, pero aqu\u00ed hay algunas opciones comunes de c\u00f3digo abierto.<\/p>\n<p>Nombre<br \/>\nLicencia<br \/>\nLenguaje de programaci\u00f3n<\/p>\n<p>Maven<br \/>\nApache 2.0<br \/>\n Java<\/p>\n<p>Ant<br \/>\nApache 2.0<br \/>\nJava<\/p>\n<p>Gradle<br \/>\nApache 2.0<br \/>\nJava<\/p>\n<p>Bazel<br \/>\nApache 2.0<br \/>\nJava<\/p>\n<p>Make<br \/>\nGNU<br \/>\nN\/A<\/p>\n<p>Grunt<br \/>\nMIT<br \/>\nJavaScript<\/p>\n<p>Gulp<br \/>\nMIT<br \/>\nJavaScript<\/p>\n<p>Buildr<br \/>\nApache<br \/>\nRuby<\/p>\n<p>Rake<br \/>\nMIT<br \/>\nRuby<\/p>\n<p>A-A-P<br \/>\nGNU<br \/>\nPython<\/p>\n<p>SCons<br \/>\nMIT<br \/>\nPython<\/p>\n<p>BitBake<br \/>\nGPLv2<br \/>\nPython<\/p>\n<p>Cake<br \/>\nMIT<br \/>\nC#<\/p>\n<p>ASDF<br \/>\nExpat (MIT)<br \/>\nLISP<\/p>\n<p>Cabal<br \/>\nBSD<br \/>\nHaskell<\/p>\n<p>\u00a1Genial! Puedes colocar los archivos de configuraci\u00f3n de la herramienta de automatizaci\u00f3n de compilaci\u00f3n en el sistema de control de versiones y permitir que tu herramienta CI\/CD los re\u00fana todos.<\/p>\n<p><img decoding=\"async\" alt=\"Gu\u00eda para principiantes: creando un pipeline de DevOps\" src=\"\/wp-content\/uploads\/2020\/07\/573d613914d278e738a0fc7f05644b62.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Todo bien, \u00bfverdad? Pero, \u00bfd\u00f3nde implementar\u00e1s tu aplicaci\u00f3n?<\/p>\n<h3>Paso 4: Servidor para aplicaciones web<\/h3>\n<p>\nHasta ahora, tienes un archivo empaquetado que puede ser tanto ejecutable como instalable. Para que cualquier aplicaci\u00f3n sea realmente \u00fatil, debe ofrecer alg\u00fan servicio o interfaz, pero necesitas un contenedor para alojar tu aplicaci\u00f3n.<\/p>\n<p>El servidor para aplicaciones web es precisamente ese contenedor. El servidor proporciona un entorno donde se puede definir la l\u00f3gica del paquete implementado. Tambi\u00e9n proporciona una interfaz y ofrece servicios web, abriendo sockets al mundo exterior. Necesitas un servidor HTTP, as\u00ed como alg\u00fan entorno (por ejemplo, una m\u00e1quina virtual) para implementarlo. Mientras tanto, asumamos que aprender\u00e1s m\u00e1s sobre esto m\u00e1s adelante (aunque hablar\u00e9 sobre contenedores m\u00e1s abajo).<\/p>\n<p>Existen varios servidores de aplicaciones web de c\u00f3digo abierto.<\/p>\n<p>Nombre<br \/>\nLicencia<br \/>\nLenguaje de programaci\u00f3n<\/p>\n<p>Tomcat<br \/>\nApache 2.0<br \/>\nJava<\/p>\n<p>Jetty<br \/>\nApache 2.0<br \/>\nJava<\/p>\n<p>WildFly<br \/>\nGNU Lesser Public<br \/>\nJava<\/p>\n<p>GlassFish<br \/>\nCDDL &amp; GNU Less Public<br \/>\nJava<\/p>\n<p>Django<br \/>\n3-Clause BSD<br \/>\nPython<\/p>\n<p>Tornado<br \/>\nApache 2.0<br \/>\nPython<\/p>\n<p>Gunicorn<br \/>\nMIT<br \/>\nPython<\/p>\n<p>Python<br \/>\nMIT<br \/>\nPython<\/p>\n<p>Rails<br \/>\nMIT<br \/>\nRuby<\/p>\n<p>Node.js<br \/>\nMIT<br \/>\nJavascript<\/p>\n<p>Tu pipeline de DevOps est\u00e1 casi listo para usar. \u00a1Buen trabajo!<\/p>\n<p><img decoding=\"async\" alt=\"Gu\u00eda para principiantes: creando un pipeline de DevOps\" src=\"\/wp-content\/uploads\/2020\/07\/9c314e8a42f154ded3b16ec7bdf01f99.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Aunque se puede detener aqu\u00ed y encargarse de la integraci\u00f3n por cuenta propia, la calidad del c\u00f3digo es un aspecto importante para cualquier desarrollador de aplicaciones y debe ser una preocupaci\u00f3n constante.<\/p>\n<h3>Paso 5: Cobertura de pruebas de c\u00f3digo<\/h3>\n<p>\nLa implementaci\u00f3n de pruebas puede ser otro requisito engorroso, pero los desarrolladores deben detectar cualquier error en la aplicaci\u00f3n en una etapa temprana y mejorar la calidad del c\u00f3digo para garantizar que los usuarios finales est\u00e9n satisfechos. Afortunadamente, existen muchas herramientas de c\u00f3digo abierto para probar su c\u00f3digo y generar recomendaciones para mejorar su calidad. A\u00fan mejor, la mayor\u00eda de las herramientas CI\/CD pueden conectarse a estas herramientas y automatizar el proceso.<\/p>\n<p>Las pruebas de c\u00f3digo constan de dos partes: los marcos de prueba que ayudan a escribir y ejecutar pruebas, as\u00ed como herramientas de sugerencia que ayudan a mejorar la calidad del c\u00f3digo.<\/p>\n<p><b>Sistemas de pruebas de c\u00f3digo<\/b><\/p>\n<p>Nombre<br \/>\nLicencia<br \/>\nLenguaje de programaci\u00f3n<\/p>\n<p>JUnit<br \/>\nLicencia P\u00fablica de Eclipse<br \/>\nJava<\/p>\n<p>EasyMock<br \/>\nApache<br \/>\nJava<\/p>\n<p>Mockito<br \/>\nMIT<br \/>\nJava<\/p>\n<p>PowerMock<br \/>\nApache 2.0<br \/>\nJava<\/p>\n<p>Pytest<br \/>\n MIT<br \/>\nPython<\/p>\n<p>Hypothesis<br \/>\nMozilla<br \/>\nPython<\/p>\n<p>Tox<br \/>\nMIT<br \/>\nPython<\/p>\n<p><b>Sistemas de sugerencias para mejorar el c\u00f3digo<\/b><\/p>\n<p>Nombre<br \/>\nLicencia<br \/>\nLenguaje de programaci\u00f3n<\/p>\n<p>Cobertura<br \/>\nGNU<br \/>\nJava<\/p>\n<p>CodeCover<br \/>\nEclipse Public (EPL)<br \/>\nJava<\/p>\n<p>Coverage.py<br \/>\n Apache 2.0<br \/>\nPython<\/p>\n<p>Emma<br \/>\nLicencia P\u00fablica Com\u00fan<br \/>\nJava<\/p>\n<p>JaCoCo<br \/>\n Licencia P\u00fablica de Eclipse<br \/>\nJava<\/p>\n<p>Hypothesis<br \/>\n Mozilla<br \/>\nPython<\/p>\n<p>Tox<br \/>\nMIT<br \/>\nPython<\/p>\n<p>Jasmine<br \/>\nMIT<br \/>\nJavaScript<\/p>\n<p>Karma<br \/>\nMIT<br \/>\nJavaScript<\/p>\n<p>Mocha<br \/>\n MIT<br \/>\nJavaScript<\/p>\n<p>Jest<br \/>\nMIT<br \/>\nJavaScript<\/p>\n<p>Tenga en cuenta que la mayor\u00eda de las herramientas y marcos mencionados anteriormente est\u00e1n escritos para Java, Python y JavaScript, ya que C++ y C# son lenguajes de programaci\u00f3n propietarios (aunque GCC tiene c\u00f3digo abierto).<\/p>\n<p>Ahora que ha implementado las herramientas de cobertura de c\u00f3digo, su pipeline de DevOps deber\u00eda parecerse al diagrama mostrado al principio de esta gu\u00eda.<\/p>\n<h3>Pasos adicionales<\/h3>\n<p>\n<b>Contenedores<\/b><\/p>\n<p>Como mencion\u00e9 anteriormente, puede alojar su servidor en una m\u00e1quina virtual o en un servidor, pero los contenedores son una soluci\u00f3n popular.<\/p>\n<p>\u00bfQu\u00e9 son los contenedores? La breve explicaci\u00f3n es que una m\u00e1quina virtual necesita una gran cantidad de memoria del sistema operativo, que supera el tama\u00f1o de la aplicaci\u00f3n, mientras que un contenedor solo necesita algunas bibliotecas y configuraciones para ejecutar la aplicaci\u00f3n. Es evidente que las m\u00e1quinas virtuales todav\u00eda tienen \u00e1reas de aplicaci\u00f3n importantes, pero un contenedor es una soluci\u00f3n ligera para alojar aplicaciones, incluidas las aplicaciones servidoras.<\/p>\n<p>Aunque existen otras opciones de contenedores, las m\u00e1s populares son Docker y Kubernetes.<\/p>\n<p>Docker: Apache 2.0<br \/>\nKubernetes: Apache 2.0<\/p>\n<p><b>Herramientas de automatizaci\u00f3n intermedias<\/b><\/p>\n<p>Nuestro pipeline de DevOps se centra principalmente en la creaci\u00f3n y despliegue colaborativo de aplicaciones, pero hay muchas otras cosas que se pueden hacer con herramientas de DevOps. Una de ellas es el uso de herramientas de Infraestructura como C\u00f3digo (IaC), que tambi\u00e9n se conocen como herramientas de automatizaci\u00f3n intermedia. Estas herramientas ayudan a automatizar la instalaci\u00f3n, gesti\u00f3n y otras tareas para software intermedio. Por ejemplo, una herramienta de automatizaci\u00f3n puede extraer aplicaciones como servidores de aplicaciones web, bases de datos y herramientas de monitoreo, configurarlas correctamente y desplegarlas en el servidor de aplicaciones.<\/p>\n<p>Aqu\u00ed hay algunas herramientas de automatizaci\u00f3n intermedia de c\u00f3digo abierto:<\/p>\n<p>Ansible: GNU Public<br \/>\nSaltStack: Apache 2.0<br \/>\nChef: Apache 2.0<br \/>\nPuppet: Apache o GPL<\/p>\n<p><img decoding=\"async\" alt=\"Gu\u00eda para principiantes: creando un pipeline de DevOps\" src=\"\/wp-content\/uploads\/2020\/07\/148ef7317ca5780b412241ddaec9dc76.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Descubre m\u00e1s sobre c\u00f3mo obtener una profesi\u00f3n demandada desde cero o mejorar tus habilidades y salario con los cursos online de pago de SkillFactory:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/skillfactory.ru\/devops?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=DEVOPS&amp;utm_term=regular&amp;utm_content=07072002\">Curso de DevOps<\/a><\/noindex> (12 meses)<\/li>\n<\/ul>\n<p><\/p>\n<p>                        <b class=\"spoiler_title\">m\u00e1s cursos<\/b><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/skillfactory.ru\/ml-programma-machine-learning-online?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=ML&amp;utm_term=regular&amp;utm_content=07072002\">Curso de Machine Learning<\/a><\/noindex> (12 semanas)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/skillfactory.ru\/data-scientist?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=DST&amp;utm_term=regular&amp;utm_content=07072002\">Formaci\u00f3n en la profesi\u00f3n de Data Science desde cero<\/a><\/noindex> (12 meses)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/skillfactory.ru\/analytics?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=SDA&amp;utm_term=regular&amp;utm_content=07072002\">Profesi\u00f3n de analista desde cualquier nivel inicial<\/a><\/noindex> (9 meses)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/skillfactory.ru\/python-for-web-developers?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=PWS&amp;utm_term=regular&amp;utm_content=07072002\">Curso de \u00abPython para desarrollo web\u00bb<\/a><\/noindex> (9 meses)<\/li>\n<\/ul>\n<p><\/p>\n<h3>\u00datil<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/503196\/\">450 cursos gratuitos de la Ivy League<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/508450\/\">Tendencias en Data Science 2020<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/508556\/\">Data Science ha muerto. \u00a1Viva Business Science!<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/506790\/\">Data Science a lo grande: introducci\u00f3n a la Inteligencia de Decisiones<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/503504\/\">El proyecto de Data Science m\u00e1s exitoso y pol\u00e9mico: Cambridge Analytica<\/a><\/noindex><\/li>\n<\/ul>\n<p>Fuente: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/509964\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 DevOps, \u0432\u0437\u0433\u043b\u044f\u043d\u0438\u0442\u0435 \u043d\u0430 \u044d\u0442\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u0438\u0437 \u043f\u044f\u0442\u0438 \u044d\u0442\u0430\u043f\u043e\u0432. DevOps \u0441\u0442\u0430\u043b \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u0434\u043b\u044f \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0445, \u0440\u0430\u0437\u043e\u0431\u0449\u0435\u043d\u043d\u044b\u0445 \u0438\u043b\u0438 \u043d\u0435\u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c \u0447\u0442\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 DevOps \u0438 \u043d\u0435 \u0437\u043d\u0430\u0435\u0442\u0435, \u0441 \u0447\u0435\u0433\u043e \u043d\u0430\u0447\u0430\u0442\u044c, \u0442\u043e \u0432\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0442\u044c \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u044d\u0442\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432. \u0412 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":87468,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-87467","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 DevOps, \u0432\u0437\u0433\u043b\u044f\u043d\u0438\u0442\u0435 \u043d\u0430 \u044d\u0442\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u0438\u0437 \u043f\u044f\u0442\u0438 \u044d\u0442\u0430\u043f\u043e\u0432.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445: \u0441\u043e\u0437\u0434\u0430\u0435\u043c DevOps-\u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 DevOps, \u0432\u0437\u0433\u043b\u044f\u043d\u0438\u0442\u0435 \u043d\u0430 \u044d\u0442\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u0438\u0437 \u043f\u044f\u0442\u0438 \u044d\u0442\u0430\u043f\u043e\u0432.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-07-08T11:42:11+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-07-08T11:42:11+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Gu\u00eda para principiantes: creando un pipeline de DevOps | ProHoster","description":"Si eres nuevo en DevOps, echa un vistazo a esta gu\u00eda para crear tu primer pipeline en cinco pasos.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445: \u0441\u043e\u0437\u0434\u0430\u0435\u043c DevOps-\u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d | ProHoster","og:description":"\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 DevOps, \u0432\u0437\u0433\u043b\u044f\u043d\u0438\u0442\u0435 \u043d\u0430 \u044d\u0442\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u0438\u0437 \u043f\u044f\u0442\u0438 \u044d\u0442\u0430\u043f\u043e\u0432.","og:url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-07-08T11:42:11+00:00","article:modified_time":"2020-07-08T11:42:11+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"87467","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 13:50:31","updated":"2022-09-29 03:37:01","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/87467","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=87467"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/87467\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/87468"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=87467"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=87467"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=87467"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}