Skip to main content

Estándar Corporativo de Repositorios GitHub

Objetivo​

Definir un estándar corporativo para la organización de repositorios GitHub que permita:

  • Escalabilidad.
  • Gobierno centralizado.
  • Facilidad de búsqueda.
  • Automatización CI/CD.
  • Gestión de permisos.
  • Trazabilidad de componentes.
  • Integración con DevOps.
  • Incorporación rápida de nuevos colaboradores.

Problema Actual

Actualmente la estructura proviene de GitLab y está basada en grupos y subgrupos.

Ejemplo:

DevOps
├── alpura-devops-back-java-msa-consulta
├── alpura-devops-back-java-msa-dashboard
├── alpura-devops-back-java-msa-producto
├── alpura-devops-sienpro-back-java-msa-hcm
├── alpura-devops-sienpro-back-java-msa-transactions
└── alpura-devops-frontend-angular-mfe-remote-sienpro

Services
├── alpura-back-java-msa-dashboard
├── alpura-back-java-msa-producto
├── alpura-back-msa-interface-hcm
├── alpura-back-msa-transactions
└── alpura-frontend-angular-mfe-remote-sienpro

Shared Libraries
└── alpura-back-java-lib-model-sienpro

Limitación de GitHub

GitHub no soporta jerarquías profundas de grupos como GitLab.

GitHub está diseñado para trabajar mediante:

  • Organizations
  • Teams
  • Repositories
  • Topics
  • CODEOWNERS

Por lo tanto, intentar replicar exactamente la estructura de GitLab suele generar:

  • Nombres excesivamente largos.
  • Difícil navegación.
  • Duplicidad de información.
  • Problemas de búsqueda.

Arquitectura Recomendada

Organización Principal​

github.com/alpura-ti

Equipos (Teams)​


Estructura Recomendada


Organización de GitHub

La jerarquía organizativa en GitHub Enterprise está diseñada para respetar estrictamente el principio de menor privilegio, permitiendo la autonomía de los equipos sin comprometer la seguridad empresarial.


Convención de Nombres

Formato General​

<dominio>-<capa>-<tipo>-<nombre>

Ejemplos​

Backend​

sienpro-back-ms-hcm
sienpro-back-ms-producto
sienpro-back-ms-dashboard
sienpro-back-ms-transactions

Frontend​

sienpro-front-mfe-remote
sienpro-front-mfe-entrega
sienpro-front-mfe-consulta

Batch​

sienpro-back-batch-sync-tickets
sienpro-back-batch-update-employees
sienpro-back-batch-block-product

Librerías​

shared-lib-model-sienpro
shared-lib-security
shared-lib-observability

DevOps​

devops-terraform-gcp
devops-kubernetes-manifests
devops-pipelines
devops-helm-charts

Documentación​

docs-arquitectura
docs-plataforma
docs-desarrollo

Mapeo GitLab → GitHub

GitLabGitHub
GroupTeam
SubgroupTeam
ProjectRepository
MembersTeam Members
CI/CDGitHub Actions
Protected BranchesBranch Protection Rules
VariablesSecrets
RegistryGitHub Packages

Ventajas del Estándar

1. Nombres más Cortos​

Antes​

alpura-devops-sienpro-back-java-msa-transactions

Después​

sienpro-back-ms-transactions

Reducción:

47 caracteres
↓
28 caracteres

2. Mejor Búsqueda​

GitHub permite localizar fácilmente:

sienpro-back-ms-*

o

topic:spring-boot

o

topic:angular

3. Menor Acoplamiento​

La tecnología deja de formar parte del nombre.

Incorrecto​

sienpro-back-java-msa-producto

Correcto​

sienpro-back-ms-producto

Si mañana migra a:

  • Java 21
  • Quarkus
  • Kotlin
  • NodeJS

el repositorio conserva su nombre.


4. Automatización Más Simple​

Todos los proyectos pueden heredar el mismo estándar.


Uso de Topics

GitHub Topics reemplaza información innecesaria dentro del nombre.


Ejemplo​

Repositorio:

sienpro-back-ms-hcm

Topics:

spring-boot
java21
microservice
gcp
kubernetes
hcm
sienpro

CODEOWNERS

Cada repositorio debe tener:

.github/CODEOWNERS

Ejemplo:

* @alpura-ti/backend

Estructura Interna Recomendada

.
├── README.md
├── CHANGELOG.md
├── CODEOWNERS
├── .github
│ ├── workflows
│ │ ├── ci.yml
│ │ ├── cd-dev.yml
│ │ ├── cd-uat.yml
│ │ └── cd-prod.yml
│ │
│ └── pull_request_template.md
│
├── docs
├── src
├── helm
├── k8s
├── Dockerfile
└── Jenkinsfile

Errores Comunes

Error 1​

Incorrecto​

alpura-devops-sienpro-back-java-msa-hcm

Problemas:

  • Nombre excesivamente largo.
  • Información duplicada.
  • Difícil búsqueda.

Correcto​

sienpro-back-ms-hcm

Error 2​

Incorrecto​

java-producto

Problema:

No identifica dominio funcional.

Correcto​

sienpro-back-ms-producto

Error 3​

Incorrecto​

backend-hcm

Problema:

No indica plataforma ni contexto.

Correcto​

sienpro-back-ms-hcm

Error 4​

Incorrecto​

Crear repositorios por ambiente.

sienpro-back-ms-producto-dev
sienpro-back-ms-producto-uat
sienpro-back-ms-producto-prod

Problemas:

  • Duplicidad.
  • Drift de código.
  • Mantenimiento complejo.

Correcto​

sienpro-back-ms-producto

Y usar:

GitHub Environments
DEV
UAT
PROD

Estrategia de Branches


Estrategia de Ambientes

Despliegues gestionados mediante:

  • GitHub Actions
  • ArgoCD
  • Helm
  • Kubernetes

Estándar Oficial Propuesto

Organization:
alpura-ti

Teams:
arquitectura
devops
backend
frontend
qa
seguridad
integraciones

Repositorios:

api-gateway-wso2
config-server

devops-terraform-gcp
devops-kubernetes-manifests
devops-pipelines

sienpro-back-ms-dashboard
sienpro-back-ms-producto
sienpro-back-ms-hcm
sienpro-back-ms-transactions

sienpro-front-mfe-remote

sienpro-back-batch-sync-tickets
sienpro-back-batch-block-product
sienpro-back-batch-update-employee-tickets

shared-lib-model-sienpro
shared-lib-observability
shared-lib-security

docs-arquitectura

Beneficios Esperados

BeneficioImpacto
Menor complejidadAlto
Mejor gobiernoAlto
Menor curva de aprendizajeAlto
EscalabilidadAlto
AutomatizaciónAlto
SeguridadAlto
Integración GitHub EnterpriseAlto
MantenimientoAlto

Este estándar busca desacoplar la organización funcional de la tecnología utilizada, permitiendo una evolución tecnológica continua sin afectar la estructura de repositorios ni los procesos de gobierno corporativo.