1.7 KiB
1.7 KiB
Scaled Layout Example
계정·리전·환경·클러스터가 늘어나도 lifecycle과 entrypoint 계약은 바뀌지 않습니다.
infrastructure/
├── components/
│ └── aws/
│ ├── network/
│ ├── identity/
│ └── eks/
├── stacks/
│ ├── regional-foundation/
│ └── kubernetes-cluster/
└── live/
└── aws/
├── platform-nonprod/
│ └── ap-northeast-2/
│ ├── dev/{network,cluster-a}/
│ └── staging/{network,cluster-a}/
└── platform-prod/
├── ap-northeast-2/prod/{network,cluster-a}/
└── ap-southeast-1/prod/{network,cluster-b}/
gitops/
├── platform/{core,networking,security,observability}/
├── policies/{baseline,production}/
├── tenants/{team-a,team-b}/
├── apps/{api,worker}/
└── clusters/
├── dev/ap-northeast-2/cluster-a/
├── staging/ap-northeast-2/cluster-a/
└── prod/
├── ap-northeast-2/cluster-a/
└── ap-southeast-1/cluster-b/
중괄호 표기는 설명을 줄이기 위한 것이며 실제 폴더명으로 사용하지 않습니다.
분리 기준
regional-foundationnetwork stack과 cluster는 파괴 영향이 달라 state를 분리합니다.- production과 non-production은 account, credential과 state를 분리합니다.
- 공통 구현은 catalog에 한 번만 두고 cluster root는 선택과 patch만 가집니다.
- tenant/team별 권한이 다르면 CODEOWNERS와 repository 분리를 검토합니다.
- repository 분리는 폴더 수가 아니라 소유권과 권한 경계가 달라질 때 수행합니다.