Navegación Bilingüe: English · Español (este documento) Fase Requerida: Fase 5 — Entrega (Release) Audiencia Principal: DevOps, Release Managers, SRE, Arquitectos
Términos estrictos compartidos entre el negocio y el área técnica dentro de este contexto:
- Release Package (Paquete de Release): Agrupa un conjunto de Technical Stories e Historias de Usuario (modo generate) o checkpoints de iniciativa validados (modo initiative-only) que han sido validadas por QA y están listas para su paso a Producción.
- Environment (Entorno): La instancia física o lógica (ej. Staging, UAT, Producción) donde el código opera.
- Deployment Record (Registro de Despliegue): Traza inmutable de una actividad de despliegue físico hacia un Entorno.
- Release Notes: Artefacto oficial para la comunicación ejecutiva del valor desplegado.
| Símbolo/Estereotipo | Significado |
|---|---|
<<Aggregate Root>> |
Entidad raíz transaccional. Gobierna la persistencia de sus entidades internas. |
<<Value Object>> |
Objeto inmutable sin identidad propia. Representa una propiedad estructural. |
*-- (Línea sólida) |
Composición. El elemento hijo no puede existir sin el padre. |
..> (Línea punteada) |
Dependencia. El elemento depende de interactúa con el otro componente para delegar acciones. |
classDiagram
class ReleasePackage {
<<Aggregate Root>>
+UUID id
+String tenantId
+String versionNumber
+String releaseNotes
+ReleaseStatus status
+UUID releaseManagerId_umsUserId
+List~UUID~ validatedStoryIds
+List~UUID~ validatedCheckpointIds?
+List~ExternalReference~ externalRefs
+generateReleaseNotes(UUID umsUserId)
+approveDeployment(ReleaseGate, UUID umsUserId)
+markAsDeployed(UUID umsUserId)
}
note for ReleasePackage "En modo generate, validatedStoryIds se llena con IDs de historias validadas. En modo initiative-only, validatedCheckpointIds se llena con IDs de checkpoints validados."
class DeploymentRecord {
<<Aggregate Root>>
+UUID id
+UUID releasePackageId
+UUID environmentId
+UUID deployedById_umsUserId
+Date deploymentDate
+DeploymentStatus status
+String rollbackUrl
+List~ExternalReference~ externalRefs
+logDeployment(DeploymentStatus status, UUID umsUserId)
+triggerRollback(UUID umsUserId)
}
class Environment {
<<Entity>>
+UUID id
+String name
+EnvironmentType type
}
class ExternalReference {
<<Value Object>>
+ExternalSystem system
+String externalId
+String url
+ReferenceType type
+String label
+Date linkedAt
+Map metadata
}
ReleasePackage "1" --> "0..*" DeploymentRecord : origina
ReleasePackage "1" *-- "1..*" Environment : define targets
ReleasePackage "1" *-- "0..*" ExternalReference : mapeado a
DeploymentRecord "1" *-- "0..*" ExternalReference : mapeado a
classDiagram
class AuditControl {
<<Value Object>>
+String createdBy
+Date createdAt
}
class ReleaseGate {
<<Value Object>>
+String approvedById_umsUserId
+GateDecision decision
+Date decidedAt
}
class StateTransition {
<<Value Object>>
+ReleaseStatus fromState
+ReleaseStatus toState
+Date transitionDate
}
class ReleasePackage {
<<Aggregate Root>>
}
ReleasePackage "1" *-- "1" AuditControl : auditada por
ReleasePackage "1" *-- "0..1" ReleaseGate : gobernada por
ReleasePackage "1" *-- "0..*" StateTransition : historial de estados
classDiagram
class IntegrationFabric {
<<Shared Kernel Shell>>
+triggerCDPipeline()
+listenToWebhook()
}
class TenantConfigShell {
<<Shared Kernel Shell>>
+getReleasePolicies()
}
class UMS_SDK {
<<Cross-Cutting>>
+RequiresDomainAccess()
}
class ReleasePackage {
<<Aggregate Root>>
}
class DeploymentRecord {
<<Aggregate Root>>
}
ReleasePackage ..> TenantConfigShell : lee políticas
ReleasePackage ..> UMS_SDK : asegurada vía
DeploymentRecord ..> IntegrationFabric : hidratada asíncronamente por (ej. Jenkins/Harness)
DeploymentRecord: Elevado a Aggregate Root para que las plataformas de CI/CD (GitHub Actions, Jenkins, Harness) puedan actualizar el estado del despliegue (SUCCESS/FAILED) asíncronamente sin bloquear elReleasePackagemaestro.- Gestión de Toggles: Por definición corporativa, Evolith Tracker se enfoca en el gobierno del SDLC. Los "Feature Toggles" (interruptores de funcionalidad) se han considerado una preocupación externa puramente operativa, por lo que no se modelan dentro del Tracker.
Los orquestadores del release (releaseManagerId_umsUserId, deployedById_umsUserId) están estrictamente tipados. Esto permite un trazado seguro y autorizaciones granulares para approveDeployment(). Las herramientas CI/CD se conectan mediante los ExternalReference.