¿Qué es Docker?
Docker es una herramienta que automatiza el despliegue de aplicaciones aisladas dentro de contenedores. Es para crear un aislamiento de un ambiente del sistema operativo origen.
¿Qué conceptos centrales administra Docker?
¿Qué brinda docker?
Docker brinda consistencia, replicabilidad y aislamiento.
Explique Sharing con Docker
No hay una forma de compartir un contenedor en sí, pero se pueden compartir:
¿Qué comandos tiene Docker?
¿Cómo funciona un Dockerfile?
Se almacenan como una referencia a la imagen anterior y una lista de diferencias, llamada layer:
¿Cómo se administra la Seguridad con Docker?
GIT: ¿Qué herramientas de visualización del proyecto se tienen?
GIT: ¿Qué es y qué contiene un Commit?
Es algún estado del repositorio. Contiene ancestros, autor/fecha autoría, mensaje, archivos.
Flujos de Trabajo de GIT: Explique Trunk Based
Todo cambio se agrega a un mismo branch.
Ventajas:
- Simple
- Todo el código está en el último commit
Desventajas:
- Todo el código está en el último commit
- Cuesta separar de líneas de trabajo
Problema principal: El control de versiones es naturalmente distribuido (también es concurrente)
Flujos de Trabajo de GIT: Explique Feature Branches
Un branch por funcionalidad de código independiente.
Ventajas:
- Sólo un feature incompleto por branch.
- Menos gente trabajando en cada branch
- El resto del equipo ve todos los cambios juntos
Desventajas:
- Administración de branches
- Features necesitan ser independientes entre sí
¿Cuáles son las diferencias entre Github Flow y Git Flow?
Github Flow:
- Verificación dentro de cada PR
- Software con despliegues simples-rápidos-baratos
- SaaS (Software as a service)
- Aplicaciones web
Git Flow:
- Verificación al preparar cada release
- Software con despliegues complejos-lentos-caros
- Aplicaciones mobile o de escritorio
- Instalaciones on-premise
- Múltiples versiones simultáneas
¿Cuáles son las diferencias entre Monorepo y Polirepo?
Monorepo
- Un repositorio para todo el proyecto
Características:
- Simple
- Facilita hacer cambios coordinados a N componentes
- Fácil de filtrar para crear polirepo con historia equivalente (git filter-repo)
Polirepo
- Un repositorio por componente del proyecto
Características:
- Control de acceso limitando autorización a ciertos repositorios
- Facilita modularizar componentes (Evita dependencias implícitas)
- No hay forma fácil de unificar la historia para crear un monorepo equivalente
¿Qué debe reflejar la estructura de repositorios elegida?
Elegir una estructura de repositorios que refleje:
- Estructura de comunicación entre participantes
- Conexiones entre componentes de software
- Responsabilidades compartidas entre componentes
¿Qué significa CI/CD?
Continuous Integration (CI)
- Integrar frecuentemente el trabajo realizado
- Descubrir errores rápidamente
- De forma automática
Continuous Deployment (CD)
- Asegurar que podemos producir un entregable de forma rápida y certera
- Desplegar a entornos de prueba/producción
- De forma automática