1. Introducción
1.1 - Objetivos
1.2 - Metodología de trabajo
1.3 - Contribuciones
1.4 - Infraestructura de experimentación
1.5 - Publicaciones
1.6 - Organización de la tesis
2. Marco Teórico
2.1 - Computación de alto rendimiento (HPC)
2.2 - Sistemas Distribuidos
2.2.1 - Arquitecturas, herramientas y tecnologías para el desarrollo de un Sistema Distribuido para resolver tareas HPC
2.3 - Microservicios
2.4 - Cultura y Técnicas DevOps
2.4.1 - Automatización en DevOps
2.4.2 - Infraestructura como código
2.4.3 - Integración y despliegue continuo
2.4.4 - Monitoreo Continuo
2.5 - Computación en la Nube
2.5.1 - Modelos de implementación
Nube pública
Nube privada
Nube híbrida
2.5.2 - Modelos de Entrega de Servicios
Infraestructura como Servicio (IaaS)
Plataforma como Servicio (PaaS)
Software como Servicio (SaaS)
Otros Submodelos:
2.6 - Virtualización basada en contenedores
2.6.1 - Hipervisores
2.6.2 - Contenedores
2.6.4 - Docker como plataforma de contenedores
Componentes esenciales de Docker
Imágenes Docker
Dockerfile
Contenedor Docker
Registro de Docker
2.7 - Orquestación de Contenedores
2.7.1 - Kubernetes como plataforma de Orquestación de contenedores
Capacidades Básicas de Kubernetes:
Razones para adoptar Kubernetes
Desafíos para la adopción de Kubernetes
Objetos básicos de Kubernetes
Pod
Controlador de replicación (ReplicaSet)
Despliegues (Deployments)
Servicios (Services)
Arquitectura de Kubernetes
Componentes del nodo maestro
Componentes del nodo trabajador
2.8 - Dispositivos móviles: Smart Devices
2.8.1 - Introducción
2.8.2 - Características básicas de un dispositivo inteligente
2.8.3 - Android como Sistema Operativo
Arquitectura del SO Android
2.8.4 - Arquitectura de procesadores ARM y masividad de dispositivos
3. - Diseño e Implementación de la plataforma HPC
3.1 - Objetivo
3.2 - Descripción general
3.3 - Arquitectura de la plataforma HPC
3.3.1 - Diseño y características de la plataforma
Componentes básicos de la plataforma
(a) Usuarios interesados
(b) Recursos de administración de la plataforma
(c) Recursos de procesamiento
3.3.2 - Desarrollo e implementación de la plataforma
a) Microservicios Dockerizados para la administración y gestión de la plataforma
b) Servicios de colas (tareas) y base de datos (estadísticas) Dockerizadas
c) Orquestación, escalado, replicación y automatización de contenedores a través de Kubernetes
Alta disponibilidad y portabilidad
Gestión de la configuración, automatización y reversiones
Mecanismos de Transparencia
d) Trabajadores móviles Android ARM y x86 Dockerizados
Características Generales
Características del nodo trabajador x86 Dockerizado
Características del nodo trabajador móvil
3.4 - Conclusiones del capítulo
4. Caso de aplicación: Compresión de video
4.1 - Objetivos
4.2 – El Servicio de Streaming
4.2.1 - Protocolos de Streaming
Streaming Tradicional
Hacia Streaming basado en HTTP
Descarga Progresiva
Streaming de Video Adaptativo (ABR) basado en HTTP 126
4.2.2 - Codificación
Digitalización
Codificación
Configuraciones asociadas para recodificar videos
4.3 - Compresión de vídeo utilizando FFmpeg
4.3.1 - FFMpeg como herramienta de recodificación de video
4.3.2 - Perfiles de codificación H.264 en FFmpeg
4.3.3 - Proceso de Fragmentación y Unificación de archivos
4.3.4 - Proceso de Transcodificación
4.4 - Integración de FFmpeg en microservicios de la plataforma
a) Microservicios Dockerizados para la administración y gestión de la plataforma
b) Servicios de colas (tareas) y base de datos (estadísticas) Dockerizadas
c) Orquestación, escalado, replicación y automatización de contenedores a través de Kubernetes
d) Trabajadores móviles Android ARM y x86 Dockerizados.
4.5 - Repositorio de código fuente
4.6 - Conclusiones del capítulo
5 - Modelo de análisis y experimentación
5.1 - Objetivos
5.2 - Descripción de la fase experimental
5.2.1 - Evaluación de rendimiento y consumo energético de los nodos trabajadores
Definición de escenarios y equipamiento de prueba
Definición de métricas a capturar
Ejecución de pruebas y análisis de resultados
Análisis de resultados de la arquitectura x86
Análisis de resultados de la arquitectura ARM
Análisis comparativo entre arquitecturas
Conclusiones
5.2.2 - Evaluación de escalabilidad y flexibilidad de la plataforma
Definición de escenarios y equipamiento de prueba
Ejecución de pruebas y análisis de resultados
Conclusiones
6. Conclusiones
7. Trabajos Futuros