DevOps

DevOps es la práctica y la cultura de aplicar los principios de fabricación ajustada al flujo de valor de TI para aumentar la velocidad del software, reducir el desperdicio y mejorar la calidad con énfasis en aprovechar las personas, los procesos y las herramientas.

Se centra en unificar el desarrollo y las operaciones de TI a través de los principios de flujo, retroalimentación y experimentación.

Definiciones Clave#

  • Integración Continua (CI): Aborda la creación de software a partir de las contribuciones de desarrolladores individuales de una manera ágil y controlada. (Verificando todo el código en un repositorio centralizado diariamente)
  • Despliegue Continuo (CD): Despliegue automatizado (o transporte) de código a producción sin necesidad de pasos manuales. Este no será el plan con todas las aplicaciones.
  • Entrega Continua (CD): Automatización que garantiza la validación de la implementación; sin embargo, aún se requieren pasos manuales para implementar en producción.
  • Implementación: La implementación (o transporte) de código a un entorno de nivel superior, hasta e incluida la producción.
  • Lanzamiento: El alcance definido y el objetivo comercial para un conjunto de características que se entregarán en un cierto plazo.

¿Por qué implementar DevOps?#

En 2012, el "informe sobre el estado de DevOps" de Puppet Labs comparó 4.039 organizaciones de TI que usaban DevOps y encontró:

  • Implementaciones de código 30 veces más frecuentes
  • Plazo de ejecución de implementación de código 8.000 veces más rápido
  • 2x la tasa de éxito del cambio
  • MTTR 12 veces más rápido (tiempo medio de reparación)

"La ventaja competitiva que crea esta capacidad es enorme, lo que permite una comercialización más rápida de las funciones, mayor satisfacción del cliente, participación de mercado, productividad de los empleados y felicidad". - Proyecto Phoenix


Áreas de Énfasis#

Los principios de DevOps son aplicados y asistidos por las siguientes 3 áreas clave que trabajan juntas:

  • Personas: DevOps se basa en personas sólidas y una cultura sólida de experimentación, aprendizaje, colaboración y objetivos compartidos entre las operaciones de desarrollo, control de calidad y TI.
  • Procesos: DevOps se basa en Lean Agile y aplica conceptos de fabricación ajustada a las corrientes de valor de TI.
  • Herramientas: DevOps se basa en herramientas y tecnologías mejoradas, incluidas herramientas de automatización, telemetría y colaboración.

¿Cuál es el objetivo de DevOps?#

Mejorar la colaboración entre todas las partes interesadas desde la planificación hasta la entrega y la automatización del proceso de entrega para:

  • Mejorar la frecuencia de implementación
  • Lograr un tiempo de comercialización más rápido
  • Menor índice de fallas de nuevos lanzamientos
  • Acortar el tiempo de espera entre arreglos
  • Mejorar el tiempo medio de recuperación

CI Systems - Ejemplos#

imagen_CI_System

CD Systems - Ejemplos#

imagen_CD_System


Infraestructura como Código (IAC)#

El proceso de administrar y aprovisionar centros de datos informáticos a través de archivos de definición legibles por máquina, en lugar de configuración de hardware físico o herramientas de configuración interactivas.


Introducción a HashiCorp Terraform#

Terraform es un software de infraestructura como código, desarrollado por HashiCorp. Permite a los usuarios definir y configurar la infraestructura de un centro de datos en un lenguaje de alto nivel.


Infrastructura como Código en EOS Costa Rica#

Introducción a Kubernetes y Docker#

Containers 101#

Más información acerca de contenedores


¿Qué es Docker?#

Docker es un proyecto de código abierto que automatiza la implementación de aplicaciones dentro de contenedores de software, proporcionando una capa adicional de abstracción y automatización de virtualización de aplicaciones en múltiples sistemas operativos.

Más Información sobre Docker


Kubernetes#

Kubernetes es un sistema de código libre para la automatización del despliegue, ajuste de escala y manejo de aplicaciones en contenedores​ que fue originalmente diseñado por Google y donado a la Cloud Native Computing Foundation. Soporta diferentes entornos para la ejecución de contenedores, incluido Docker.

A continuación, puede encontrar un conjunto de tutoriales muy convenientes para aprender kubernetes desde cero:

Más Información

Kubernetes en 5 Minutos#


Kubernetes vs Docker: No es una Pregunta de Ambos o Uno#


Kubernetes en EOS Costa Rica#

Par probar los anteriores tutoriales en un ambiente real, podrías utilizar nuestra instalación de kubernetes sobre Openstack. Si así lo prefieres, también puedes crear un cluster local en tu propia máquina:

Instalar Minikube

Solicite a los administradores acceso a nuestro panel de instalación Openstack y al Sandbox proyect. Entonces puedes seguir los siguientes pasos:

  • Primero que nada, conéctese al nodo maestro usando la herramienta SSH:
ssh -i key.pem [email protected]
  • Obtener información sobre el clúster:
kubectl cluster-info
  • Mostrar nodos disponibles actualmente en el clúster:
kubectl get nodes

Referencias#

“Los principios detrás de DevOps son los mismos que transformaron la fabricación. En lugar de optimizar la forma en que las materias primas se transforman en productos terminados, DevOps muestra cómo optimizamos el flujo de valor de TI ...” - Proyecto Phoenix

“Imagínese vivir en un mundo DevOps, donde los propietarios de productos, Desarrollo, Control de Calidad, Operaciones de TI e InfoSec trabajan juntos sin descanso para ayudarse mutuamente y para que la organización en general gane. Permiten un flujo rápido del trabajo planificado hacia la producción, al tiempo que preservan la estabilidad, confiabilidad, disponibilidad y seguridad de clase mundial”. - Proyecto Phoenix

Last updated on by JustinCast