Diferencia entre revisiones de «Metodologías de desarrollo de software»

De MediaWiki
Ir a la navegación Ir a la búsqueda
(Página creada con «= Unidade Didáctica 1. Metodoloxías de desenvolvemento de software, DevOps e despregamento en contedores = == Introdución == O desenvolvemento de software moderno requ…»)
 
 
(No se muestran 5 ediciones intermedias del mismo usuario)
Línea 1: Línea 1:
−
= Unidade Didáctica 1. Metodoloxías de desenvolvemento de software, DevOps e despregamento en contedores =
+
'''Unidade Didáctica 1. Metodoloxías de desenvolvemento de software, DevOps e despregamento en contedores'''
  
−
== Introdución ==
+
= Introdución =
  
 
O desenvolvemento de software moderno require a aplicación de metodoloxías que permitan organizar o traballo dos equipos, mellorar a calidade do produto e reducir os tempos de entrega. A evolución das necesidades do mercado provocou a transición desde metodoloxías tradicionais, baseadas nunha planificación ríxida, cara a metodoloxías áxiles, centradas na adaptación ao cambio e na entrega continua de valor.
 
O desenvolvemento de software moderno require a aplicación de metodoloxías que permitan organizar o traballo dos equipos, mellorar a calidade do produto e reducir os tempos de entrega. A evolución das necesidades do mercado provocou a transición desde metodoloxías tradicionais, baseadas nunha planificación ríxida, cara a metodoloxías áxiles, centradas na adaptación ao cambio e na entrega continua de valor.
Línea 7: Línea 7:
 
Paralelamente, a aparición das prácticas DevOps e das tecnoloxías de contedores transformou os procesos de desenvolvemento, integración e despregamento de aplicacións, permitindo automatizar tarefas e reducir os riscos asociados á posta en produción.
 
Paralelamente, a aparición das prácticas DevOps e das tecnoloxías de contedores transformou os procesos de desenvolvemento, integración e despregamento de aplicacións, permitindo automatizar tarefas e reducir os riscos asociados á posta en produción.
  
−
== Metodoloxías de desenvolvemento de software ==
+
= Metodoloxías de desenvolvemento de software =
  
 
As metodoloxías de desenvolvemento de software son conxuntos de principios, procedementos e boas prácticas que permiten planificar, organizar e controlar o ciclo de vida dun proxecto software.
 
As metodoloxías de desenvolvemento de software son conxuntos de principios, procedementos e boas prácticas que permiten planificar, organizar e controlar o ciclo de vida dun proxecto software.
  
−
=== Metodoloxías tradicionais ===
+
== Metodoloxías tradicionais ==
  
 
As metodoloxías tradicionais caracterízanse por unha planificación detallada desde o inicio do proxecto, unha forte documentación e unha separación clara entre as diferentes fases de desenvolvemento.
 
As metodoloxías tradicionais caracterízanse por unha planificación detallada desde o inicio do proxecto, unha forte documentación e unha separación clara entre as diferentes fases de desenvolvemento.
  
−
==== Modelo en cascada (Waterfall) ====
+
=== Modelo en cascada (Waterfall) ===
  
 
O modelo Waterfall é unha das metodoloxías máis antigas e coñecidas. Baséase nun proceso secuencial no que cada fase debe completarse antes de iniciar a seguinte.
 
O modelo Waterfall é unha das metodoloxías máis antigas e coñecidas. Baséase nun proceso secuencial no que cada fase debe completarse antes de iniciar a seguinte.
Línea 21: Línea 21:
 
[[Ficheiro:Waterfall_model.svg|miniatura|centro|500px|Esquema do modelo en cascada.]]
 
[[Ficheiro:Waterfall_model.svg|miniatura|centro|500px|Esquema do modelo en cascada.]]
  
−
===== Características =====
+
==== Características ====
  
 
* Estrutura lineal e secuencial.
 
* Estrutura lineal e secuencial.
Línea 29: Línea 29:
 
* Validación do produto ao final do proceso.
 
* Validación do produto ao final do proceso.
  
−
===== Fases do modelo Waterfall =====
+
==== Fases do modelo Waterfall ====
  
 
# '''Análise de requisitos'''
 
# '''Análise de requisitos'''
−
 
 
## Identificación das necesidades do cliente.
 
## Identificación das necesidades do cliente.
−
 
 
## Definición funcional do sistema.
 
## Definición funcional do sistema.
−
 
 
# '''Deseño'''
 
# '''Deseño'''
−
 
 
## Arquitectura da aplicación.
 
## Arquitectura da aplicación.
−
 
 
## Deseño de bases de datos.
 
## Deseño de bases de datos.
−
 
 
## Deseño de interfaces.
 
## Deseño de interfaces.
−
 
 
# '''Implementación'''
 
# '''Implementación'''
−
 
 
## Desenvolvemento do código fonte.
 
## Desenvolvemento do código fonte.
−
 
 
# '''Probas'''
 
# '''Probas'''
−
 
 
## Verificación do funcionamento.
 
## Verificación do funcionamento.
−
 
 
## Corrección de erros.
 
## Corrección de erros.
−
 
 
# '''Despregamento'''
 
# '''Despregamento'''
−
 
 
## Instalación do sistema en produción.
 
## Instalación do sistema en produción.
−
 
 
# '''Mantemento'''
 
# '''Mantemento'''
−
 
 
## Corrección de incidencias.
 
## Corrección de incidencias.
−
 
 
## Actualizacións e melloras.
 
## Actualizacións e melloras.
  
−
===== Vantaxes =====
+
==== Vantaxes ====
  
 
* Fácil de comprender e xestionar.
 
* Fácil de comprender e xestionar.
Línea 71: Línea 55:
 
* Boa trazabilidade documental.
 
* Boa trazabilidade documental.
  
−
===== Inconvenientes =====
+
==== Inconvenientes ====
  
 
* Difícil adaptación a cambios.
 
* Difícil adaptación a cambios.
Línea 77: Línea 61:
 
* Alto custo de modificacións en fases avanzadas.
 
* Alto custo de modificacións en fases avanzadas.
  
−
=== Metodoloxías áxiles ===
+
== Metodoloxías áxiles ==
  
 
As metodoloxías áxiles xorden como resposta ás limitacións dos modelos tradicionais. O seu obxectivo principal é proporcionar valor ao cliente mediante entregas frecuentes e unha rápida adaptación aos cambios.
 
As metodoloxías áxiles xorden como resposta ás limitacións dos modelos tradicionais. O seu obxectivo principal é proporcionar valor ao cliente mediante entregas frecuentes e unha rápida adaptación aos cambios.
  
−
==== Manifesto Áxil ====
+
=== Manifesto Áxil ===
  
 
Publicado en 2001, establece catro valores fundamentais:
 
Publicado en 2001, establece catro valores fundamentais:
Línea 90: Línea 74:
 
* Resposta ao cambio sobre seguimento estrito dun plan.
 
* Resposta ao cambio sobre seguimento estrito dun plan.
  
−
==== Scrum ====
+
=== Scrum ===
  
 
Scrum é a metodoloxía áxil máis utilizada na industria do software.
 
Scrum é a metodoloxía áxil máis utilizada na industria do software.
  
−
===== Roles =====
+
==== Roles ====
  
 
* '''Product Owner'''
 
* '''Product Owner'''
Línea 107: Línea 91:
 
   ** Implementa as funcionalidades.
 
   ** Implementa as funcionalidades.
  
−
===== Elementos principais =====
+
==== Elementos principais ====
  
 
* Product Backlog.
 
* Product Backlog.
Línea 113: Línea 97:
 
* Incremento de produto.
 
* Incremento de produto.
  
−
===== Eventos =====
+
==== Eventos ====
  
 
* Sprint.
 
* Sprint.
Línea 121: Línea 105:
 
* Sprint Retrospective.
 
* Sprint Retrospective.
  
−
===== Vantaxes =====
+
==== Vantaxes ====
  
 
* Adaptación rápida aos cambios.
 
* Adaptación rápida aos cambios.
Línea 127: Línea 111:
 
* Maior participación do cliente.
 
* Maior participación do cliente.
  
−
==== Kanban ====
+
=== Kanban ===
  
 
Kanban é unha metodoloxía baseada na visualización do fluxo de traballo.
 
Kanban é unha metodoloxía baseada na visualización do fluxo de traballo.
  
−
===== Principios =====
+
==== Principios ====
  
 
* Visualizar o traballo.
 
* Visualizar o traballo.
Línea 138: Línea 122:
 
* Mellora continua.
 
* Mellora continua.
  
−
===== Taboleiro Kanban =====
+
==== Taboleiro Kanban ====
  
 
{| class="wikitable"
 
{| class="wikitable"
Línea 158: Línea 142:
 
|}
 
|}
  
−
==== Extreme Programming (XP) ====
+
=== Extreme Programming (XP) ===
  
 
XP céntrase na excelencia técnica e na calidade do código.
 
XP céntrase na excelencia técnica e na calidade do código.
  
−
===== Prácticas destacadas =====
+
==== Prácticas destacadas ====
  
 
* Programación por parellas.
 
* Programación por parellas.
Línea 170: Línea 154:
 
* Pequenas entregas frecuentes.
 
* Pequenas entregas frecuentes.
  
−
=== Comparativa entre metodoloxías tradicionais e áxiles ===
+
== Comparativa entre metodoloxías tradicionais e áxiles ==
  
 
{| class="wikitable"
 
{| class="wikitable"
Línea 199: Línea 183:
 
|}
 
|}
  
−
=== Ferramentas de xestión de proxectos ===
+
== Ferramentas de xestión de proxectos ==
  
 
As metodoloxías de desenvolvemento adoitan complementarse con ferramentas de xestión e seguimento.
 
As metodoloxías de desenvolvemento adoitan complementarse con ferramentas de xestión e seguimento.
  
−
==== Ferramentas tradicionais ====
+
=== Ferramentas tradicionais ===
  
 
* Microsoft Project.
 
* Microsoft Project.
Línea 209: Línea 193:
 
* GanttProject.
 
* GanttProject.
  
−
==== Ferramentas para metodoloxías áxiles ====
+
=== Ferramentas para metodoloxías áxiles ===
  
 
* Jira.
 
* Jira.
Línea 225: Línea 209:
 
* Facilitar a colaboración entre equipos.
 
* Facilitar a colaboración entre equipos.
  
−
== Integración e despregamento continuos propios de DevOps ==
+
= Integración e despregamento continuos propios de DevOps =
  
−
=== Que é DevOps? ===
+
== Que é DevOps? ==
  
 
DevOps é unha cultura de traballo que integra os equipos de desenvolvemento (Development) e operacións (Operations) co obxectivo de acelerar a entrega de software mantendo elevados niveis de calidade e estabilidade.
 
DevOps é unha cultura de traballo que integra os equipos de desenvolvemento (Development) e operacións (Operations) co obxectivo de acelerar a entrega de software mantendo elevados niveis de calidade e estabilidade.
  
−
=== Obxectivos de DevOps ===
+
== Obxectivos de DevOps ==
  
 
* Automatización de procesos.
 
* Automatización de procesos.
Línea 239: Línea 223:
 
* Monitorización continua.
 
* Monitorización continua.
  
−
=== Ciclo DevOps ===
+
== Ciclo DevOps ==
  
 
[[Ficheiro:Devops-toolchain.svg|miniatura|centro|500px|Ciclo de vida DevOps.]]
 
[[Ficheiro:Devops-toolchain.svg|miniatura|centro|500px|Ciclo de vida DevOps.]]
Línea 246: Línea 230:
  
 
# Planificación.
 
# Planificación.
−
 
 
# Desenvolvemento.
 
# Desenvolvemento.
−
 
 
# Integración.
 
# Integración.
−
 
 
# Probas.
 
# Probas.
−
 
 
# Despregamento.
 
# Despregamento.
−
 
 
# Operación.
 
# Operación.
−
 
 
# Monitorización.
 
# Monitorización.
  
−
=== Integración continua (Continuous Integration - CI) ===
+
== Integración continua (Continuous Integration - CI) ==
  
 
A integración continua consiste en integrar frecuentemente os cambios realizados polos desenvolvedores nun repositorio común.
 
A integración continua consiste en integrar frecuentemente os cambios realizados polos desenvolvedores nun repositorio común.
  
−
===== Obxectivos =====
+
==== Obxectivos ====
  
 
* Detectar erros rapidamente.
 
* Detectar erros rapidamente.
Línea 269: Línea 247:
 
* Automatizar compilacións e probas.
 
* Automatizar compilacións e probas.
  
−
===== Fluxo básico =====
+
==== Fluxo básico ====
  
 
# Desenvolvedor realiza cambios.
 
# Desenvolvedor realiza cambios.
−
 
 
# Envía o código ao repositorio Git.
 
# Envía o código ao repositorio Git.
−
 
 
# O servidor CI executa:
 
# O servidor CI executa:
−
 
 
## Compilación.
 
## Compilación.
−
 
 
## Análise de código.
 
## Análise de código.
−
 
 
## Probas automáticas.
 
## Probas automáticas.
−
 
 
# Xeración de artefactos.
 
# Xeración de artefactos.
  
−
=== Despregamento continuo (Continuous Deployment - CD) ===
+
== Despregamento continuo (Continuous Deployment - CD) ==
  
 
O despregamento continuo automatiza a publicación das novas versións en contornos de produción.
 
O despregamento continuo automatiza a publicación das novas versións en contornos de produción.
  
−
===== Beneficios =====
+
==== Beneficios ====
  
 
* Menor tempo de entrega.
 
* Menor tempo de entrega.
Línea 295: Línea 267:
 
* Incremento da fiabilidade.
 
* Incremento da fiabilidade.
  
−
=== Ferramentas DevOps habituais ===
+
== Ferramentas DevOps habituais ==
  
 
{| class="wikitable"
 
{| class="wikitable"
Línea 321: Línea 293:
 
|}
 
|}
  
−
== Despregamento en contedores de aplicacións e CI/CD ==
+
= Despregamento en contedores de aplicacións e CI/CD =
  
−
=== Introdución aos contedores ===
+
== Introdución aos contedores ==
  
 
Os contedores permiten empaquetar unha aplicación xunto coas súas dependencias para executala de forma consistente en diferentes contornos.
 
Os contedores permiten empaquetar unha aplicación xunto coas súas dependencias para executala de forma consistente en diferentes contornos.
  
−
=== Características dos contedores ===
+
== Características dos contedores ==
  
 
* Illamento de procesos.
 
* Illamento de procesos.
Línea 335: Línea 307:
 
* Reproducibilidade.
 
* Reproducibilidade.
  
−
=== Docker como plataforma de contedores ===
+
= Docker como plataforma de contedores =
  
 
Docker converteuse no estándar de facto para a creación e execución de contedores.
 
Docker converteuse no estándar de facto para a creación e execución de contedores.
  
−
===== Elementos principais =====
+
==== Elementos principais ====
  
 
* Docker Engine.
 
* Docker Engine.
Línea 347: Línea 319:
 
* Docker Hub.
 
* Docker Hub.
  
−
=== Proceso de despregamento dunha aplicación en contedores ===
+
== Proceso de despregamento dunha aplicación en contedores ==
  
 
# Desenvolvemento da aplicación.
 
# Desenvolvemento da aplicación.
−
 
 
# Creación do Dockerfile.
 
# Creación do Dockerfile.
−
 
 
# Xeración da imaxe.
 
# Xeración da imaxe.
−
 
 
# Almacenamento nun rexistro.
 
# Almacenamento nun rexistro.
−
 
 
# Execución do contedor.
 
# Execución do contedor.
−
 
 
# Monitorización e actualización.
 
# Monitorización e actualización.
  
−
=== Integración continua aplicada aos contedores ===
+
== Integración continua aplicada aos contedores ==
  
 
Nun proceso CI moderno:
 
Nun proceso CI moderno:
  
 
# O desenvolvedor realiza cambios no código.
 
# O desenvolvedor realiza cambios no código.
−
 
 
# Git detecta o cambio.
 
# Git detecta o cambio.
−
 
 
# O sistema CI executa probas.
 
# O sistema CI executa probas.
−
 
 
# Créase automaticamente unha imaxe Docker.
 
# Créase automaticamente unha imaxe Docker.
−
 
 
# Publícase no rexistro corporativo.
 
# Publícase no rexistro corporativo.
  
−
=== Pipeline CI/CD para contedores ===
+
== Pipeline CI/CD para contedores ==
  
 
{| class="wikitable"
 
{| class="wikitable"
Línea 401: Línea 364:
 
|}
 
|}
  
−
=== Exemplo de fluxo completo ===
+
== Exemplo de fluxo completo ==
  
 
<syntaxhighlight lang="text">
 
<syntaxhighlight lang="text">
Línea 421: Línea 384:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
−
=== Vantaxes do uso de CI/CD con contedores ===
+
== Vantaxes do uso de CI/CD con contedores ==
  
 
* Automatización completa do proceso.
 
* Automatización completa do proceso.
Línea 429: Línea 392:
 
* Menor tempo entre desenvolvemento e produción.
 
* Menor tempo entre desenvolvemento e produción.
  
−
== Resumo ==
+
= Resumo =
  
 
As metodoloxías tradicionais, como Waterfall, ofrecen unha estrutura secuencial adecuada para proxectos con requisitos estables. Pola contra, as metodoloxías áxiles permiten adaptarse rapidamente aos cambios e entregar valor de forma continua.
 
As metodoloxías tradicionais, como Waterfall, ofrecen unha estrutura secuencial adecuada para proxectos con requisitos estables. Pola contra, as metodoloxías áxiles permiten adaptarse rapidamente aos cambios e entregar valor de forma continua.
  
 
DevOps complementa estas metodoloxías mediante a automatización dos procesos de integración, proba e despregamento. A utilización de contedores e de pipelines CI/CD converteuse nun elemento fundamental para a entrega rápida, fiable e escalable de aplicacións modernas.
 
DevOps complementa estas metodoloxías mediante a automatización dos procesos de integración, proba e despregamento. A utilización de contedores e de pipelines CI/CD converteuse nun elemento fundamental para a entrega rápida, fiable e escalable de aplicacións modernas.

Revisión actual del 10:49 18 jun 2026

Unidade Didáctica 1. Metodoloxías de desenvolvemento de software, DevOps e despregamento en contedores

Introdución

O desenvolvemento de software moderno require a aplicación de metodoloxías que permitan organizar o traballo dos equipos, mellorar a calidade do produto e reducir os tempos de entrega. A evolución das necesidades do mercado provocou a transición desde metodoloxías tradicionais, baseadas nunha planificación ríxida, cara a metodoloxías áxiles, centradas na adaptación ao cambio e na entrega continua de valor.

Paralelamente, a aparición das prácticas DevOps e das tecnoloxías de contedores transformou os procesos de desenvolvemento, integración e despregamento de aplicacións, permitindo automatizar tarefas e reducir os riscos asociados á posta en produción.

Metodoloxías de desenvolvemento de software

As metodoloxías de desenvolvemento de software son conxuntos de principios, procedementos e boas prácticas que permiten planificar, organizar e controlar o ciclo de vida dun proxecto software.

Metodoloxías tradicionais

As metodoloxías tradicionais caracterízanse por unha planificación detallada desde o inicio do proxecto, unha forte documentación e unha separación clara entre as diferentes fases de desenvolvemento.

Modelo en cascada (Waterfall)

O modelo Waterfall é unha das metodoloxías máis antigas e coñecidas. Baséase nun proceso secuencial no que cada fase debe completarse antes de iniciar a seguinte.

miniatura|centro|500px|Esquema do modelo en cascada.

Características

  • Estrutura lineal e secuencial.
  • Documentación exhaustiva.
  • Forte planificación inicial.
  • Escasa flexibilidade ante cambios.
  • Validación do produto ao final do proceso.

Fases do modelo Waterfall

  1. Análise de requisitos
    1. Identificación das necesidades do cliente.
    2. Definición funcional do sistema.
  2. Deseño
    1. Arquitectura da aplicación.
    2. Deseño de bases de datos.
    3. Deseño de interfaces.
  3. Implementación
    1. Desenvolvemento do código fonte.
  4. Probas
    1. Verificación do funcionamento.
    2. Corrección de erros.
  5. Despregamento
    1. Instalación do sistema en produción.
  6. Mantemento
    1. Corrección de incidencias.
    2. Actualizacións e melloras.

Vantaxes

  • Fácil de comprender e xestionar.
  • Adecuado para proxectos con requisitos estables.
  • Boa trazabilidade documental.

Inconvenientes

  • Difícil adaptación a cambios.
  • Entrega tardía do produto funcional.
  • Alto custo de modificacións en fases avanzadas.

Metodoloxías áxiles

As metodoloxías áxiles xorden como resposta ás limitacións dos modelos tradicionais. O seu obxectivo principal é proporcionar valor ao cliente mediante entregas frecuentes e unha rápida adaptación aos cambios.

Manifesto Áxil

Publicado en 2001, establece catro valores fundamentais:

  • Individuos e interaccións sobre procesos e ferramentas.
  • Software funcionando sobre documentación exhaustiva.
  • Colaboración co cliente sobre negociación contractual.
  • Resposta ao cambio sobre seguimento estrito dun plan.

Scrum

Scrum é a metodoloxía áxil máis utilizada na industria do software.

Roles

  • Product Owner
 ** Define os requisitos do produto.
 ** Prioriza o traballo.
  • Scrum Master
 ** Facilita o proceso Scrum.
 ** Elimina impedimentos.
  • Equipo de Desenvolvemento
 ** Implementa as funcionalidades.

Elementos principais

  • Product Backlog.
  • Sprint Backlog.
  • Incremento de produto.

Eventos

  • Sprint.
  • Sprint Planning.
  • Daily Scrum.
  • Sprint Review.
  • Sprint Retrospective.

Vantaxes

  • Adaptación rápida aos cambios.
  • Entregas frecuentes.
  • Maior participación do cliente.

Kanban

Kanban é unha metodoloxía baseada na visualización do fluxo de traballo.

Principios

  • Visualizar o traballo.
  • Limitar o traballo en curso (WIP).
  • Xestionar o fluxo.
  • Mellora continua.

Taboleiro Kanban

Exemplo de taboleiro Kanban
Pendente En progreso En probas Rematado
Análise de requisitos Desenvolvemento API Probas unitarias Deseño da base de datos
Creación de casos de uso Desenvolvemento frontend Validación funcional Configuración do repositorio Git

Extreme Programming (XP)

XP céntrase na excelencia técnica e na calidade do código.

Prácticas destacadas

  • Programación por parellas.
  • Desenvolvemento guiado por probas (TDD).
  • Integración continua.
  • Refactorización constante.
  • Pequenas entregas frecuentes.

Comparativa entre metodoloxías tradicionais e áxiles

Comparativa entre metodoloxías tradicionais e áxiles
Aspecto Tradicionais Áxiles
Planificación Inicial e detallada Iterativa e adaptativa
Cambios Custosos Esperados e frecuentes
Documentación Moi extensa Esencial e enfocada ao valor
Participación do cliente Limitada Continua
Entrega de valor Ao final do proxecto Incremental e continua

Ferramentas de xestión de proxectos

As metodoloxías de desenvolvemento adoitan complementarse con ferramentas de xestión e seguimento.

Ferramentas tradicionais

  • Microsoft Project.
  • OpenProject.
  • GanttProject.

Ferramentas para metodoloxías áxiles

  • Jira.
  • Trello.
  • Azure DevOps.
  • GitLab.
  • GitHub Projects.

Estas ferramentas permiten:

  • Xestionar tarefas.
  • Controlar incidencias.
  • Planificar sprints.
  • Xerar informes de seguimento.
  • Facilitar a colaboración entre equipos.

Integración e despregamento continuos propios de DevOps

Que é DevOps?

DevOps é unha cultura de traballo que integra os equipos de desenvolvemento (Development) e operacións (Operations) co obxectivo de acelerar a entrega de software mantendo elevados niveis de calidade e estabilidade.

Obxectivos de DevOps

  • Automatización de procesos.
  • Redución de erros humanos.
  • Entregas máis rápidas.
  • Maior colaboración entre equipos.
  • Monitorización continua.

Ciclo DevOps

miniatura|centro|500px|Ciclo de vida DevOps.

As fases habituais son:

  1. Planificación.
  2. Desenvolvemento.
  3. Integración.
  4. Probas.
  5. Despregamento.
  6. Operación.
  7. Monitorización.

Integración continua (Continuous Integration - CI)

A integración continua consiste en integrar frecuentemente os cambios realizados polos desenvolvedores nun repositorio común.

Obxectivos

  • Detectar erros rapidamente.
  • Reducir conflitos de integración.
  • Automatizar compilacións e probas.

Fluxo básico

  1. Desenvolvedor realiza cambios.
  2. Envía o código ao repositorio Git.
  3. O servidor CI executa:
    1. Compilación.
    2. Análise de código.
    3. Probas automáticas.
  4. Xeración de artefactos.

Despregamento continuo (Continuous Deployment - CD)

O despregamento continuo automatiza a publicación das novas versións en contornos de produción.

Beneficios

  • Menor tempo de entrega.
  • Redución de intervención manual.
  • Incremento da fiabilidade.

Ferramentas DevOps habituais

Ferramentas habituais no ecosistema DevOps
Función Ferramenta
Control de versións Git
Integración continua Jenkins
Plataforma DevOps GitLab CI/CD
Automatización Ansible
Contedores Docker
Orquestración Kubernetes

Despregamento en contedores de aplicacións e CI/CD

Introdución aos contedores

Os contedores permiten empaquetar unha aplicación xunto coas súas dependencias para executala de forma consistente en diferentes contornos.

Características dos contedores

  • Illamento de procesos.
  • Portabilidade.
  • Escalabilidade.
  • Rapidez de despregamento.
  • Reproducibilidade.

Docker como plataforma de contedores

Docker converteuse no estándar de facto para a creación e execución de contedores.

Elementos principais

  • Docker Engine.
  • Docker Image.
  • Docker Container.
  • Docker Registry.
  • Docker Hub.

Proceso de despregamento dunha aplicación en contedores

  1. Desenvolvemento da aplicación.
  2. Creación do Dockerfile.
  3. Xeración da imaxe.
  4. Almacenamento nun rexistro.
  5. Execución do contedor.
  6. Monitorización e actualización.

Integración continua aplicada aos contedores

Nun proceso CI moderno:

  1. O desenvolvedor realiza cambios no código.
  2. Git detecta o cambio.
  3. O sistema CI executa probas.
  4. Créase automaticamente unha imaxe Docker.
  5. Publícase no rexistro corporativo.

Pipeline CI/CD para contedores

Etapas dun pipeline CI/CD
Etapa Acción
Commit Envío do código ao repositorio
Build Compilación da aplicación
Test Execución de probas automáticas
Package Xeración da imaxe Docker
Push Publicación da imaxe nun rexistro
Deploy Despregamento automático nos contornos de destino

Exemplo de fluxo completo

Programador
      ↓
Repositorio Git
      ↓
Pipeline CI/CD
      ↓
Probas automáticas
      ↓
Creación da imaxe Docker
      ↓
Rexistro de contedores
      ↓
Kubernetes
      ↓
Aplicación en produción

Vantaxes do uso de CI/CD con contedores

  • Automatización completa do proceso.
  • Redución de erros de configuración.
  • Despregamentos repetibles.
  • Escalado sinxelo.
  • Menor tempo entre desenvolvemento e produción.

Resumo

As metodoloxías tradicionais, como Waterfall, ofrecen unha estrutura secuencial adecuada para proxectos con requisitos estables. Pola contra, as metodoloxías áxiles permiten adaptarse rapidamente aos cambios e entregar valor de forma continua.

DevOps complementa estas metodoloxías mediante a automatización dos procesos de integración, proba e despregamento. A utilización de contedores e de pipelines CI/CD converteuse nun elemento fundamental para a entrega rápida, fiable e escalable de aplicacións modernas.