DevOps
Módulo 2
Curso de DevOps
Construyendo código
Esta fase es en donde se construye.
Sea escribiendo código, diseñando infraestructura,
automatizando procesos, definiendo las pruebas o implantando
la seguridad.
Es en donde, en la actualidad, se está realizando el esfuerzo
más importante en la automatización de las acciones
repetitivas o complejas y que debiera ser uno de los primeros
peldaños que escalar para implantar DevOps en una
organización.
Curso de DevOps
Codificación ?
En DevOps la Codificación es el proceso en el cual luego de
hacer la planeación correspondiente empezamos a desarrollar
nuestra aplicación y como automatizarla.
Esto implica hacer primero el diseño lógico de la aplicación,
las estructuras de la misma y luego la programación en el
lenguaje correspondiente.
Curso de DevOps
Git
Git es un software de control de versiones diseñado por Linus Torvalds, pensando en la eficiencia y la
confiabilidad del mantenimiento de versiones de aplicaciones cuando éstas tienen un gran número de archivos
de código fuente.
Su propósito es llevar registro de los cambios en archivos de computadora y coordinar el trabajo que varias
personas realizan sobre archivos compartidos.
Curso de DevOps
Git y DevOps
Cuando se habla de DevOps se habla siempre de automatizaciones como una forma de trabajar. Aquí entra git
como la herramienta base para todas las automatizaciones. No solamente para el código sino también para la
infraestructura.
En DevOps todo es código, las Apps como la infraestructura. Aquí se empieza a ver un nuevo concepto que es,
Infraestructura como código
Curso de DevOps
Git - ¿Qué es una rama?
Cualquier sistema de control de versiones moderno tiene algún mecanismo para soportar el uso de ramas.
Cuando hablamos de ramificaciones, significa que tú has tomado la rama principal de desarrollo (master) y a
partir de ahí has continuado trabajando sin seguir la rama principal de desarrollo.
Git promueve un ciclo de desarrollo donde las ramas se crean y se unen ramas entre sí, incluso varias veces en
el mismo día.
Esto supone que cada devops y/o desarrollador trabaje sobre una rama sin afectar el trabajo de otro y cuando
todos termines, se unan en una rama maestra para ponerse en producción.
Curso de DevOps
Infraestructura como código
La infraestructura como código (IaC) trata la infraestructura de
configuración como un software de programación.
De hecho, esto empieza a desdibujar los límite entre la escritura de
aplicaciones y la creación de entornos en los que se ejecutan.
Las aplicaciones pueden contener scripts para crear y organizar sus
propios servidores.
Se trata de una parte fundamental de la computación en la nube y
esencial para DevOps.
Curso de DevOps
Beneficios de la Iac
Rapidez
El diseño de una infraestructura con código permite agilizar de
manera significativa el despliegue posterior de manera rápida y
segura.
IaC permite desplegar toda una infraestructura que podría llevar
horas o días enteros ejecutando tan sólo un script en cuestión de
unos pocos minutos.
Curso de DevOps
Beneficios ...
Automatización
La automatización en la replicación de infraestructura es otro punto
interesante de la IaC.
Es posible tomar el diseño de una infraestructura con código para
que sea replicada exactamente igual en otro entorno únicamente
modificando los parámetros que se proporcionan durante la
creación.
Curso de DevOps
Beneficios ...
Minimización de riesgos
Otra de las ventajas que ofrece IaC es la minimización de riesgos.
Cuando se despliega infraestructura manualmente es inevitable que
en algún momento se cometa un error.
IaC permite hacer las comprobaciones necesarias antes de
desplegar para que exista una consistencia, minimizando al
máximo los errores anteriormente comentados
Curso de DevOps
Beneficios ...
Actualizaciones controladas y rollbacks
Los sistemas de IaC permiten la actualización de los stacks
proporcionando un fichero actualizado y pidiendo que en lugar de
crear un nuevo stack procede a actualizar uno existente, el sistema
se encarga de comprar el fichero con los recursos actualmente
desplegados y se encarga de hacer únicamente los cambios
necesarios.
Curso de DevOps
Docker
¿Qué es Docker? Es una plataforma que hace un nuevo y mejor uso de
containers para automatizar el despliegue de aplicaciones.
Lo bueno es que Docker te permite tener el control de cada una de las
etapas en las vida de un producto.
¿Cómo?
Todos los elementos de una aplicación, como el motor, el conjunto de
librerías y el kernel o el software, pueden ser agrupados en un mismo
contenedor y almacenados en nuestro disco para luego ejecutarlo de forma
independiente del sistema operativo.
Curso de DevOps
Kubernetes
Kubernetes es una plataforma portable y extensible de código abierto para
administrar cargas de trabajo y servicios.
Kubernetes facilita la automatización y la configuración declarativa. Tiene un
ecosistema grande y en rápido crecimiento. El soporte, las herramientas y
los servicios para Kubernetes están ampliamente disponibles.
Google liberó el proyecto Kubernetes en el año 2014. Kubernetes se basa en
la experiencia de Google corriendo aplicaciones en producción a gran
escala por década y media, junto a las mejores ideas y prácticas de la
comunidad
Curso de DevOps
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, generando un plan de ejecución para
desplegar la infraestructura en OpenStack, por ejemplo, u otros proveedores
de servicio tales como AWS, IBM Cloud, Google Cloud Platform, Linode,
Microsoft Azure, Oracle Cloud Infrastructure o VMware vSphere
Curso de DevOps
Ansible
Ansible es una plataforma de software libre para configurar y administrar
ordenadores.
Combina instalación multi-nodo (es decir: permite desplegar configuraciones
de servidores y servicios por lotes), ejecuciones de tareas ad hoc y
administración de configuraciones.
Adicionalmente, Ansible es categorizado como una herramienta de
orquestación.
Curso de DevOps
LiquiBase
Liquibase es una biblioteca de código abierto independiente de la base de
datos para rastrear, administrar y aplicar cambios en el esquema de la base
de datos.
Se inició en 2006 para permitir un seguimiento más fácil de los cambios en
la base de datos, especialmente en un entorno de desarrollo de software
ágil.
Curso de DevOps
Jenkins
Jenkins es un servidor de automatización open source escrito en Java. Está basado en el proyecto
Hudson y es, dependiendo de la visión, un fork del proyecto o simplemente un cambio de nombre.
Jenkins ayuda en la automatización de parte del proceso de desarrollo de software mediante
integración continua y facilita ciertos aspectos de la entrega continua.
Admite herramientas de control de versiones como CVS, Subversion, Git, Mercurial, Perforce y
Clearcase y puede ejecutar proyectos basados en Apache Ant y Apache Maven, así como
secuencias de comandos de consola y programas por lotes de Windows.
El desarrollador principal es Kohsuke Kawaguchi. Publicado bajo licencia MIT, Jenkins es software
libre
Curso de DevOps
Donde se conecta todo para DevOps?
Pues, en un contexto de DevOps:
1.- Git, es quien guarda todos nuestros repos
2.- Terraform, nos crear la infraestructura base (redes, vm, etc)
3.- Ansible, nos instala los componentes necesarios (apt, docker, kuberntes,
etc)
4.- Docker, nos brinda la visualización
5.- Kubernetes, nos orquesta los dockers
6.- Liquibase, nos controla los despliegues contra las bases de datos.
7.- Jenkins, es quien orquesta, controla y monitorea todas las herramientas
anteriores.
Curso de DevOps
Como llevamos adelante todo esto?
Pues, con una programación ordenada usando con los principios de SOLID
Curso de DevOps
SOLID
Principio de Responsabilidad Única
Reúne las cosas que cambian por las mismas razones. Separa aquellas que cambian por razones diferentes
Principio de Abierto/Cerrado
Deberías ser capaz de extender el comportamiento de una clase, sin modificarla”. En otras palabras: las
clases que usas deberían estar abiertas para poder extenderse y cerradas para modificarse
Curso de DevOps
SOLID ...
Principio de Sustitución de Liskov
La L de SOLID alude al apellido de quien lo creó, Barbara Liskov, y dice que “las clases derivadas deben
poder sustituirse por sus clases base”.
Principio de Segregación de la Interfaz
En el cuarto principio de SOLID, el tío Bob sugiere: “Haz interfaces que sean específicas para un tipo de
cliente”, es decir, para una finalidad concreta.
Curso de DevOps
SOLID ...
Principio de Inversión de Dependencias
Depende de abstracciones, no de clases concretas
El objetivo del Dependency Inversion Principle (DIP) consiste en reducir las dependencias entre los módulos
del código, es decir, alcanzar un bajo acoplamiento de las clases.
Curso de DevOps
Revisión
● Repase los conceptos básicos
- Git
- IaC
- Orquestación
- SOLID
Curso de DevOps
¡Muchas gracias!
¡Sigamos trabajando!
Curso de DevOps