Infraestructura como Código

Infraestructura como Código

NOC Datacenter Antel [Pando] - Fuente: teledoce.com

Prof. Rodolfo Pilas
rodolfo.pilas@ucu.edu.uy

Infraestructura como Código

Infraestructura como Código

Pre
1990

Post
1990

2000's 

2015+ 

características del hardware

instalación y despliegue

roles y filosofías para la gestión

elementos necesarios para operar y gestionar entornos de TI empresariales

componentes de hardware y software independientes que se vinculan en una estructura

Infraestructura

Código

como

  • redes de baja latencia
  • almacenamiento de alto rendimiento

conectividad, productividad, seguridad

flexible, confiable, segura

Roles: adm. de sistemas, operadores, gesor de riesgos y seguridad, gestor de base de datos, etc.

código fuente es un conjunto de instrucciones o comandos en un lenguaje de programación legible por humanos

código objeto es un código numérico de computadora compuesto por números binarios como 0 y 1 y es entendido por una máquina

  • metodologías de desarrollo
  • técnicas de testing
  • estrategias de despliegue

Despliegue directo al Hardware

Pre 1990

IBM PC = 1981

Despliegue directo al Hardware

horas para instalaciones

acceso directo al hardware

Despliegue directo al Hardware

un hardware => una aplicacion

estabilidad y seguridad progresiva

"si funciona, no lo toques"

Despliegue directo al Hardware

aplicaciones limitadas por hardware disponible

desarrollo en ambientes diferentes de prod

despliegue por ZIP

Despliegue directo al Hardware

SYSADMIN

  • Administración de servidores
  • Gestión de hardware
  • Documentación
  • Seguridad

Virtualización

Post 1990

Linux = 1991

Java = 1995

C# = 2000

.com bubble = 2001

GMail = 2004

iPhone = 2007

Virtualización

Virtualización

CONSOLIDACION

Virtualización

Sistemas de Paquetes:

  • Instalación por aplicación
  • Gestión de dependencias
  • Base de paquetes instalados
  • Desinstalación y actualización
  • Configuración post-instalación

Sistemas Administración Configuración:

  • Aprovisionamiento
  • Gestión completa del SO
  • Mantiene toda la infraestructura
  • Configuracion declarativa
  • Idempotente

Virtualización

Sistemas de Paquetes:

  • Instalación por aplicación
  • Gestión de dependencias
  • Base de paquetes instalados
  • Desinstalación y actualización
  • Configuración post-instalación

Sistemas Administración Configuración:

  • Aprovisionamiento
  • Gestión completa del SO
  • Mantiene toda la infraestructura
  • Configuracion declarativa
  • Idempotente

IaC

SYSADMIN
      +
IaC

  • Administración de servidores
  • Gestión de hardware
  • Documentación
  • Seguridad

Virtualización

  • Herramientas de programación:
    • IDE
    • git
    • linters

Cloud Computing

2006

2008

2008

Android = 2008

TypeScript = 2012

Docker = 2013

Swift = 2014

2000's 

Cloud Computing

Cloud Computing

Proveedor

 

Multi-proveedor

Cloud Computing

Código

Proveedor

+

Proveedor
provider

Aprovisionamiento

provissioning

Infraestructura

Sistema operativo

Actualización

Aplicación

Servicio

Seguridad

como código

versionable

incremental

metodologia

testing

entornos

consistencia

repetible

documentación

Gestión centralizada (mediante código) de entornos (dev, test, prod) en ambientes virtualizados (o de cloud computing) que se integran en los procesos de desarrollo

Cloud Computing

Cloud Computing

  • Automatización de procesos
  • Gestión de Infraestructura (IaC)
  • Integración y entrega continua (CI/CD)
  • Monitoreo y análisis
  • Seguridad
  • Colaboración interdisciplinaria
  • Fomento de la cultura DevOps

k8s = 2015

AWS EKS = 2018

2015+ 

Contenedores y Orquestadores

paquetes que en runtime son procesos aislados

  • livianos
  • densos
  • escalables
  • portables
  • inmutables

gestión de contenedores en clusters

  • lanza contenedores en cluster
  • simplifica escalado
  • simplifica actualización y remplazo
  • monitoreo
  • resiliencia

Arquitectura de Micro-Servicios

La arquitectura de microservicios es un enfoque para el desarrollo de softwareque consiste en construir una aplicación como un conjunto de pequeños servicios, los cuales se ejecutan en su propio proceso y se comunican con mecanismos ligeros (normalmente una API REST). Cada servicio se encarga de implementar una funcionalidad completa del negocio

Fuente:
https://es.wikipedia.org/wiki/Arquitectura_de_microservicios

los sistemas fallan

objetivos de nivel de servicios (SLO, SLI, SLA)

eliminar trabajo manual (IaC)

observabilidad (monitoreo y Level Indicators)

simplicidad (chaos engeneering)

cultura post-mortem (Root Cause Analysis)

mejorar el conocimiento del sistema

mejorar la comunicación desarrollo <-> operaciones

mejorar la confiabilidad y modernizar la infraestructura 

Sobre esta presentación

Atribución 4.0 Internacional (CC BY 4.0)