Dr. Alfredo de Jesús Gutiérrez Gómez.
Presentación
Instrucciones para la presentación
1. Piense en el nombre de un animal que inicie con la primera letra de su nombre.
2. Este no deberá repetirse.
3. Al presentarse deberá completar la siguiente frase: Mi nombre es: _______ y he venido sobre un/a: _______ a la escuela desde _____
4. Dar respuesta a las preguntas:
4.1 ¿Porqué estudio está carrera?
4.2 ¿Qué me ha gustado de la carrera hasta ahora?
Temas del curso
Unidad 1. Seguridad e implementación de aplicaciones
- Implementación de un entorno de trabajo de desarrollo de software
- Identificar los entornos de trabajo en el proceso de desarrollo de software.
- Describir las características de un entorno de desarrollo de software en un flujo de trabajo tradicional.
- Integración e implementación continua (CI/CD)
- Identificar las características de la integración continua.
- Identificar las características de la entrega continua.
- Identificar las características de la implementación continua.
- Identificar características de una herramienta de automatización de tareas en CI/CD.
Temas del curso
Unidad 1. Seguridad e implementación de aplicaciones
- Seguridad de aplicaciones
- Identificar diferentes vulnerabilidades en aplicaciones.
- Identificar ataques en aplicaciones.
- Describir técnicas de mitigación.
Temas del curso
Unidad 2. Infraestructura y automatización
- Introducción a la Automatización de la infraestructura.
- Identificar el origen y evolución de DevOps.
- Explicar los principios de DevOps.
- Describir los beneficios de la Automatización de la Infraestructura.
Temas del curso
Unidad 2. Infraestructura y automatización
- Herramientas de automatización.
- Describir las características de la automatización secuencial.
- Describir los beneficios de las herramientas de automatización.
- Identificar los aspectos críticos de la automatización.
- Describir componentes de diferentes herramientas de automatización.
- Infraestructura como código.
- Definir el concepto de Infraestructura como código.
- Definir el concepto de Inmutabilidad.
- Describir el uso del modelo de GitOps.
- Describir el proceso de pruebas automatizadas a infraestructura como código.
Temas del curso
Unidad 3. Soluciones de redes administradas
- Programabilidad basado en modelos.
- Describir la programabilidad basada en modelos de datos.
- Explicar los beneficios de la programabilidad basada en modelos.
- Describir la arquitectura de la pila de programabilidad basada en modelos.
- Diferenciar protocolos de configuración de programabilidad basada en modelos.
Temas del curso
Unidad 3. Soluciones de redes administradas
- Plataformas de administración de redes.
- Describir las características de los dispositivos de red programables.
- Describir los componentes de un controlador de una red definida por software.
- Describir los componentes de una red administrada en la nube.
Políticas de clase
- Teléfono móvil en modo silencio.
- Las llamadas urgentes /prio se contestan fuera del salón.
- Turnos de una sola persona para ir al WC.
- Dos faltas a la semana sin justificante perderían derecho a las cuestiones de aprendizaje.
- Levantar la mano para participar.
- Respetar la participación de cada alumno.
Lineamientos de clase
- Mantenerse informado acerca de las lecturas, actividades y tareas del curso asistiendo por lo menos dos veces por semana, durante la duración del curso.
- Cumplir dentro del aula virtual con todas las tareas, foros y actividades detalladas por el programa académico y el profesor, en el tiempo y forma establecidos.
-
El incumplimiento de las tareas en tiempo y forma llevarán a una no aprobación del curso.
Lineamientos de clase
-
Realizar el seguimiento personal desde el Aula Virtual.
-
Estar pendiente de los resultados de las evaluacion/es parcial/es y final/es.
-
Notificar al tutor por escrito, con copia a la coordinación académica, si, por alguna razón excepcional, se encontrara en una circunstancia especial que le impidiera continuar con el curso y recibir así indicaciones de cómo proceder a partir de ese momento.
Descripción de las actividades
Unidad 1 Seguridad e implementación de aplicaciones
- Proyecto
- Trabajo
- Asistencia
- Cuestionamientos de aprendizaje
Descripción de las actividades
Unidad 2. Infraestructura y automatización
- Avance de proyecto
- Trabajo
- Asistencia
- Cuestionamientos de aprendizaje
Descripción de las actividades
Unidad 3 Solución de redes administradas
- Presentación de proyecto
- Documentación del proyecto
- Ranking del proyecto
- Cuestionamientos de aprendizaje
Actividades de encuadre
Actividades de encuadre
Instrucciones:
- En una hoja escribe la respuesta a la siguiente pregunta:
- ¿Qué esperas que se enseñe en este curso?
Tiempo de la actividad: 6 minutos.
Actividades de encuadre
Instrucciones:
- Debajo de la pregunta anterior responde la siguiente cuestión:
- ¿A qué te comprometes en este curso?
Tiempo de la actividad: 6 minutos.
Actividades de encuadre
Instrucciones:
- Debajo de la pregunta anterior responde la siguiente cuestión:
- ¿Qué deseas aprender en este curso?
Tiempo de la actividad: 6 minutos.
Actividades de encuadre
Una vez contestadas las preguntas anteriores escribir en el foro respectivo la respuesta a cada pregunta.
Tiempo de la actividad: 6 minutos.
Recomendaciones para las actividades
Trabajos:
- Presentación / portada
- Introducción
- Conclusión
Párrafos:
- Mayores a tres líneas
- Menores a ocho líneas
- Coherencia entre párrafos
Ortografía - Gramática
- Acentuación.
- Evitar redundancia.
- Pleonasmos.
- Mínimo tres errores.
Recomendaciones para las actividades
Referencias bibliográfica
- Al menos tres citas dentro del trabajo.
- En formato APA 7ma edición.
Lista referencia bibliográfica
- Al menos tres fuentes de diversos autores.
- Con sangría francesa al inicio de cuatro espacios.
- Fuente Times New Roman.
- 12 puntos.
- Sin enlaces activos.
Recomendaciones para las actividades
Introducción y conclusión
- Al menos tres párrafos.
Formato del trabajo
- Fuente Arial.
- Tamaño de título: 14 puntos.
- Tamaño de texto: 12 puntos.
- Interlineado 1.5
- Alineación justificada del texto.
- Los títulos alineados a la izquierda.
- En el encabezado del documento colocar el logotipo del instituto alineado a la derecha. Nombre de la carrera a la izquierda.
Recomendaciones para las actividades
Tablas /imágenes / diagramas / gráficas:
- Colocarle al pie de la imagen / diagrama / gráfica un nombre, bajo el siguiente formato: <nombre_objeto numero consecutivo>. <nombre_objeto> <fuente:> <donde_fue_tomada> .
- Colocar un párrafo donde se describa la imagen / diagrama / gráfica
¿Dudas / Preguntas / comentarios?
¿Automatización de la infraestructura digital?
Definiciones
Uso de tecnologías y herramientas para gestionar y operar los recursos de TI (Tecnologías de la Información) de manera automática y con mínima intervención humana.
optimizar el despliegue, la gestión, el monitoreo y la escalabilidad de su infraestructura de TI, que puede incluir servidores, redes, almacenamiento, bases de datos entre otras cosas.
Aspectos básicos
Infraestructura como Código (IaC)
gestionar y aprovisionar la infraestructura de TI mediante archivos de configuración en lugar de configuraciones manuales. Los scripts de IaC permiten definir el estado deseado de la infraestructura y luego aplicar esos estados de manera automatizada.
- Terraform: Proporciona una plataforma de código abierto para definir, proporcionar y gestionar infraestructura en la nube.
- Ansible: Utiliza scripts YAML para automatizar la configuración de servidores y la gestión de infraestructura.
- AWS CloudFormation: Servicio de Amazon que permite definir y gestionar recursos en la nube de AWS.
Aspectos básicos
Orquestación
Coordina y gestiona las tareas automatizadas en diferentes sistemas, asegurando que se ejecuten en el orden correcto y con las dependencias adecuadas.
- Kubernetes: Orquesta contenedores y asegura su disponibilidad, escalabilidad y distribución.
- Jenkins: Automáticamente orquesta el proceso de integración continua y entrega continua (CI/CD) para el desarrollo de software.
Aspectos básicos
Gestión y Configuración Automatizada
Automatizar la configuración de servidores y otros dispositivos para asegurar que sigan las políticas establecidas.
Chef y Puppet: Herramientas que permiten definir y aplicar configuraciones en servidores de forma repetible y escalable.
Aspectos básicos
Monitoreo y Automatización de Respuesta
Monitoreo automatizado permiten la supervisión continua de la infraestructura y pueden ejecutar acciones automáticas en respuesta a eventos o condiciones predefinidas.
- Prometheus: Sistema de monitoreo y alerta para infraestructura, especialmente en entornos de contenedores.
- Nagios: Solución de monitoreo para toda la infraestructura de TI, que incluye servidores, aplicaciones y redes.
Ventajas
Escalabilidad
Permite escalar la infraestructura rápidamente para adaptarse a las demandas crecientes, sin la necesidad de intervención manual.
Al automatizar procesos repetitivos, se minimizan los errores humanos, lo que resulta en una infraestructura más confiable y segura.
Reducción de Errores
Ventajas
Velocidad y Agilidad
La automatización acelera el despliegue y la configuración de recursos, permitiendo a las organizaciones responder rápidamente a las necesidades del negocio.
Asegura que las configuraciones y políticas se apliquen de manera uniforme en toda la infraestructura, lo que es crucial en entornos de TI complejos.
Consistencia
Ventajas
Costos Reducidos
Al optimizar el uso de recursos y reducir la necesidad de intervención manual, la automatización puede conducir a una disminución en los costos operativos.
Aplicaciones
Despliegue Automatizado
Desplegar aplicaciones y servicios en entornos de producción sin intervención manual, asegurando consistencia y rapidez.
Infraestructura Dinámica
Gestionar infraestructuras que escalen automáticamente en respuesta a la demanda, utilizando recursos de nube pública o privada.
Aplicaciones
Gestión de Configuraciones
Asegurar que las configuraciones del sistema se mantengan alineadas con las políticas corporativas y se adapten automáticamente a los cambios.
Recuperación ante Desastres
Automatizar la recuperación de sistemas críticos después de una falla, reduciendo significativamente el tiempo de inactividad.
Desafios
Complejidad Inicial
La configuración inicial de un sistema de automatización puede ser compleja y requiere una planificación cuidadosa.
Capacitación del Personal
El personal de TI necesita capacitación para gestionar y mantener infraestructuras automatizadas, lo que puede requerir inversión en tiempo y recursos.
Dependencia de Herramientas
Las organizaciones pueden volverse dependientes de herramientas específicas, lo que podría ser un riesgo si esas herramientas dejan de ser soportadas o actualizadas.
Identificar los entornos de trabajo en el proceso de desarrollo de software
# seg. App
- Garantiza un ciclo de desarrollo ágil, colaborativo y eficiente.
- Permiten a los equipos de desarrollo, pruebas y operaciones trabajar de manera coordinada, utilizando herramientas y procesos que automatizan y gestionan la infraestructura de forma óptima.
Principales Entornos de Trabajo en el Desarrollo de Software
# seg. App
Entorno de Desarrollo (Development Environment)
Este es el entorno donde los desarrolladores escriben, prueban y depuran el código. Suele ser un entorno aislado que permite experimentar sin afectar otros sistemas.
Automatización y Herramientas Clave
- Version Control (Git): Facilita la colaboración y gestión de cambios en el código.
- CI/CD Pipelines: Integrar código automáticamente en un entorno centralizado para pruebas continuas.
- Infraestructura como Código (IaC): Permite a los desarrolladores aprovisionar recursos como servidores o contenedores mediante scripts automatizados, como Terraform o Ansible.
Principales Entornos de Trabajo en el Desarrollo de Software
# seg. App
Beneficios
- Mayor rapidez en la creación de entornos de trabajo.
- Reducción de error humanos y configuraciones inconsistentes gracias a la automatización.
Actividad de Aprendizaje
# seg. App
- Google Frexus.
- Seleccionar la opción: Generando Valor Agregado.
- Pulse en el menú Academía.
- Haga clic sobre el nombre de la materia.
- Aperture el recurso: Infraestructura IaC
Integración e implementación continua (CI/CD)
# Auto-Infraestructura
La Integración Continua (CI) y la Implementación Continua (CD), comúnmente denominadas CI/CD, son prácticas esenciales en el desarrollo de software moderno que buscan automatizar y mejorar la eficiencia del ciclo de vida del software, desde su creación hasta su despliegue.
Integración e implementación continua (CI/CD)
# Auto-Infraestructura
Aspectos claves
Automatización de pruebas: Cada vez que se realiza una nueva integración de código, un sistema automatizado ejecuta pruebas para asegurar que los nuevos cambios no introduzcan errores o rompan funcionalidades existentes.
Compilaciones automáticas: El sistema CI realiza compilaciones automáticas del proyecto para verificar que todo el código se puede integrar correctamente.
Integración e implementación continua (CI/CD)
# Auto-Infraestructura
Aspectos claves
Retroalimentación rápida: Los desarrolladores reciben comentarios inmediatos sobre la calidad de su código y la compatibilidad con el sistema completo.
El proceso de CI permite a los equipos detectar problemas rápidamente y resolverlos antes de que se conviertan en grandes obstáculos.
# Auto-Infraestructura
Implementación Continua (CD)
La Implementación Continua es una extensión de la CI que automatiza el proceso de entrega de software a entornos de producción (o casi producción, como un entorno de prueba o staging). Esta práctica garantiza que el software siempre esté en un estado desplegable.
# Auto-Infraestructura
Implementación Continua (CD)
- Entrega Continua (Continuous Delivery): En esta variante, el software es automáticamente preparado para ser desplegado en producción. El despliegue final requiere una intervención manual para la aprobación.
- Despliegue Continuo (Continuous Deployment): En este enfoque más avanzado, todo el ciclo de desarrollo está automatizado, y cualquier cambio que pase las pruebas automáticas es desplegado directamente en producción sin intervención humana.
Aspectos claves
# Auto-Infraestructura
- Detección temprana de errores: La integración y pruebas frecuentes permiten identificar y corregir errores rápidamente.
- Despliegue rápido: Los procesos automatizados reducen el tiempo necesario para llevar nuevas funcionalidades al usuario final.
- Mejora de la calidad del software: Las pruebas automatizadas y las revisiones continuas garantizan una mayor calidad y estabilidad en el software.
- Colaboración eficiente: Facilita el trabajo en equipo, ya que se minimizan los conflictos de integración y cada miembro tiene visibilidad sobre el estado del proyecto.
Ventaja CI/CD
# Auto-Infraestructura
- Jenkins: Una plataforma de automatización extensible utilizada para la integración y despliegue continuo.
- GitLab CI/CD: Ofrece una solución completa para CI/CD directamente integrada en la plataforma GitLab.
- CircleCI: Conocido por su simplicidad y rapidez en la ejecución de pipelines CI/CD.
- Travis CI: Popular en proyectos de código abierto, ofrece integración con GitHub.
Herramientas comunes
# Auto-Infraestructura
- Realiza una investigación a fondo sobre las herramientas que permiten hacer CI/CD
- Luego Genera una tabla que permita describir las ventajas, desventajas, facilidad de configuración, si es open sources o hay que pagar una licencia, si es visual o con manejo de script, sistemas operativos soportados y proyectos en los que suele usarse
Actividad de aprendizaje
# Auto-Infraestructura
Avance de proyecto
# Auto-Infraestructura
Ejecutando contenedores
Instalar Docker - Windows
- Descarga Docker Desktop desde la página oficial de Docker.
- Asegúrate de tener WSL 2 (Windows Subsystem for Linux) activado, ya que Docker utiliza WSL 2 para ejecutar contenedores de Linux en Windows.
- Sigue las instrucciones del instalador para completar la configuración.
- Reinicia tu computadora si es necesario.
# Auto-Infraestructura
Ejecutando contenedores
Instalar Docker - MacOsX
- Descarga Docker Desktop desde la página oficial de Docker.
- Sigue las instrucciones de instalación, aceptando los permisos solicitados.
- Docker Desktop en macOS utiliza HyperKit para ejecutar contenedores.
# Auto-Infraestructura
Ejecutando contenedores
Instalar Docker - linux
sudo apt update
sudo apt install docker.io
sudo systemctl start docker
sudo systemctl enable docker
# Auto-Infraestructura
Ejecutando contenedores
Instalar Docker - Verificar la ejecución de docker en la terminal
docker --version
Si se esta ejecutando correctamente debe de salir algo como lo siguiente
# Auto-Infraestructura
Ejecutando contenedores
Crear un fichero docker-compose.yml
Ayudara a gestionar los servicios de Apache, PHP y MySQL es la forma más sencilla.
Crea un directorio y dentro de él se creará el archivo docker-compose.yml con la siguiente estructura. Usa el comando mkdir para la creación de la carpeta
# Auto-Infraestructura
Ejecutando contenedores
Crear un fichero docker-compose.yml
version: '3.8'
services:
web:
image: php:7.4-apache
container_name: webserver
volumes:
- ./html:/var/www/html
ports:
- "8080:80"
depends_on:
- db
db:
image: mysql:5.7
container_name: mysqlserver
environment:
MYSQL_ROOT_PASSWORD: example
MYSQL_DATABASE: mydb
MYSQL_USER: user
MYSQL_PASSWORD: userpass
volumes:
- db_data:/var/lib/mysql
ports:
- "3306:3306"
volumes:
db_data:
Este fichero configura el contenedor apache/php y mysql
# Auto-Infraestructura
Ejecutando contenedores
Crear la estructura de archivos y directorios
Crea un directorio llamado html
dentro de tu directorio de proyecto, que contendrá los archivos web. También, añade un archivo PHP de prueba.
<?php
phpinfo();
?>
Escribe el siguiente contenido básico en el archivo index.php
:
Se recomienda usar el comando mkdir para la creación de directorios
# Auto-Infraestructura
Ejecutando contenedores
Levantar los contenedores con Docker Compose
Abre una terminal y navega hasta el directorio donde se encuentra tu archivo docker-compose.yml
. Luego, ejecuta el siguiente comando:
docker-compose up -d
Esto descargará las imágenes necesarias (Apache, PHP y MySQL) y levantará los contenedores
# Auto-Infraestructura
Ejecutando contenedores
Acceder a tu servidor web
Abre un navegador web y accede a http://localhost:8080
. Se Debe ver la página de información de PHP que configuraste en el archivo index.php
.
# Auto-Infraestructura
Ejecutando contenedores
Probar la conexión con MySQL
Crea otro archivo PHP para probar la conexión con la base de datos. Añade el siguiente código en un archivo llamado dbtest.php
dentro del directorio html
:
# Auto-Infraestructura
Ejecutando contenedores
Probar la conexión con MySQL
<?php
$servername = "db";
$username = "user";
$password = "userpass";
$dbname = "mydb";
// Crear conexión
$conn = new mysqli($servername, $username, $password, $dbname);
// Verificar conexión
if ($conn->connect_error) {
die("Conexión fallida: " . $conn->connect_error);
}
echo "Conexión exitosa";
?>
Accede a http://localhost:8080/dbtest.php
para ver si la conexión con la base de datos es exitosa.
# Auto-Infraestructura
Ejecutando contenedores
Probar la conexión con MySQL
FROM PHP:7.4-apache
RUN docker-php-ext-install mysqli
Si causa un error de que no tiene instalada la librería mysqli crea un fichero docker-file.yml y guardalo alado del docker-compose.yml
# Auto-Infraestructura
Ejecutando contenedores
Administrar contenedores
docker ps
Ver los contenedores en ejecución
docker-compose logs
Ver los logs de los contenedores
docker-compose down
Detener los contenedores
docker-compose restart web
Reiniciar un contenedor específico (ej. Apache)
# Auto-Infraestructura
Actividad de aprendizaje
- Googlea: Frexus.
- Pulsa en la opción: Generando Valor Agregado
- Has clic en el menú academia.
- Selecciona el nombre de la materia.
- Lee el recurso: MSSQL en docker
- Crea una base de datos en msslql