JS, Node.js, Frontend, Backend, Firebase, Express, Patrones, HTML5_APIs, Asincronía, Websockets, Testing
DevOps (acrónimo inglés de development -desarrollo- y operations -operaciones-) es una práctica de ingeniería de software que tiene como objetivo unificar el desarrollo de software (Dev) y la operación del software (Ops). La principal característica del movimiento DevOps es defender enérgicamente la automatización y el monitoreo en todos los pasos de la construcción del software, desde la integración, las pruebas, la liberación hasta la implementación y la administración de la infraestructura. DevOps apunta a ciclos de desarrollo más cortos, mayor frecuencia de implementación, lanzamientos más confiables, en estrecha alineación con los objetivos comerciales. Wikipedia
Recursos
- Wikipedia | DevOps
- Paradigma | Qué es DevOps (y sobre todo qué no es DevOps)
- Vayamos al grano, ¿qué es eso de DevOps?
- DevOps: cómo romper la barrera entre Desarrollo y Operaciones
- Código: desarrollo y revisión de código, herramientas de administración de código fuente, fusión de código
- Construcción: herramientas de integración continua, estado de compilación
- Prueba: herramientas de prueba continuas que brindan retroalimentación sobre los riesgos comerciales
- Paquete: repositorio de artefactos, distribución previa a la implementación de la aplicación
- Lanzamiento: gestión de cambios, aprobaciones de versiones, automatización de versiones
- Configurar: configuración y gestión de la infraestructura, Infraestructura como código
- Monitor: monitoreo del rendimiento de las aplicaciones, experiencia del usuario final
La integración continua (continuous integration en inglés) es un modelo informático propuesto inicialmente por Martin Fowler que consiste en hacer integraciones automáticas de un proyecto lo más a menudo posible para así poder detectar fallos cuanto antes. Entendemos por integración la compilación y ejecución de pruebas de todo un proyecto.
El proceso suele ser: cada cierto tiempo (horas), descargarse las fuentes desde el control de versiones (por ejemplo CVS, Git, Subversion, Mercurial o Microsoft Visual SourceSafe) compilarlo, ejecutar pruebas y generar informes. Wikipedia
¿Cómo funciona?
Ventajas
- Todo se hace de forma continua.
- Se acaba el drama del deploy
- Disponemos de un entorno de pruebas
- Todo se testea constantemente
- La calidad del proyecto siempre es una prioridad
Recursos
- Wikipedia | Integración continua
- Github | ligurio/awesome-ci
- AWS | ¿Qué es la integración continua?
- Aprende a implantar integración continua desde cero (I): ¿Por qué integración continua?
- Evita hacer el trabajo que una máquina puede hacer por ti. ¡Automatiza el desarrollo de software!
- Que es la integración continua y por que debrías usarla
Entrega continua (EC) es un enfoque de la ingeniería del software en que los equipos de desarrollo producen software en ciclos cortos, asegurando que el software puede ser liberado en cualquier momento, de forma confiable. Apunta a la construcción, prueba, y liberación del software de forma más rápida y más frecuente. Este enfoque ayuda en la reducción del costo, tiempo, y riesgo de la liberación de versiones a través de la liberación de versiones más incrementales a aplicaciones en producción. Un proceso directo y repetible de liberación es importante para una entrega continua. Wikipedia
Etapas
- Automatización de la compilación e integración continua
- Automatización de pruebas
- Automatización de implementación
Ventajas
- Automatización de publicación de software
- Mayor independencia y productividad
- EReducción de bugs y mejoras para la detección de fallas
- Actualizaciones más frecuentes
Ciclo
Continuous Delivery vs Continuous Deployment
Recursos
- Wikipedia
- AWS | ¿Qué es la entrega continua?
- continuousdelivery.com
- ¿DevOps? ¿Continuous Delivery? ¿Continuous Deployment? ¿Integración Continua? Aclarando términos
- Atlassian | Continuous integration vs. continuous delivery vs. continuous deployment
- Atlassian | Entrega continua
- CI/CD with Less Fluff & More Awesome
- Github | ciandcd/awesome-ciandcd
- Continuous Delivery + DevOps = Awesome
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. Soporta 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 scripts de shell y programas batch de Windows. El desarrollador principal es Kohsuke Kawaguchi. Publicado bajo licencia MIT, Jenkins es software libre. Wikipedia
Recursos
- Wikipedia | Jenkins
- Web oficial
- Jenkins | Doc
- Jenkins | Plugins
- Jenkins | Community
- Jenkins | Blog
- ¿Qué es Jenkins? Explicado en menos de 10 min para quienes no lo conocen de nada
- Github | jenkinsci/jenkins
Captura
Recursos
- Travis Web site
- Travis | Pricing
- Travis | Blog
- Travis | Docs
- Idera acquires Travis CI
- Travis CI, sistema distribuido de integración continua libre integrado con Github
- Travis CI: La “Integración Continua” de forma simple
Recursos
- Web site oficial
- Getting started with GitLab CI/CD
- GitLab Continuous Integration (GitLab CI/CD)
- Primeros pasos con GitLab CI
- Demo: CI/CD with GitLab
- Using GitLab CI/CD pipelines with GitHub repositories
- How To Set Up Continuous Integration Pipelines with GitLab CI on Ubuntu 16.04
- Beginner-Friendly Introduction to GitLab CI/CD
Recursos
- Web oficial
- Netlify | Features
- Netlify | Pricing
- Netlify | Docs
- Netlify | Blog
- Más allá del área local con Netlify
- Github | netlify
- Hugo | Host on Netlify
- Gatsby | Hosting on Netlify
- netlifycms
- Wikipedia | Netlify
- The Beginner’s Guide to Netlify Continuous Deployment from Github for React Apps
- Gridsome | Deploy to Netlify
- Zapier | Netlify Integrations
Recursos