2장 Git·CI·registry·CD의 책임을 분리한다
Git은 원하는 코드와 설정의 history다. GitHub 또는 GitLab은 원격 저장소·review·automation trigger를 제공한다. CI는 test하고 image를 만든다. Registry인 ECR은 배포 가능한 image와 digest를 보관한다. CD는 원하는 image digest를 cluster에 반영하고 rollout 결과를 관찰한다.
좋은 pipeline은 “main에 push했으니 production 완료”라고 단정하지 않는다. 각 단계는 다음 단계가 확인할 증거를 남긴다.
source evidence commit SHA + review
build evidence test result + image digest + SBOM
security evidence vulnerability finding + exception owner
change evidence approver + target environment + time
runtime evidence rollout revision + ready replicas + smoke result
image에 latest만 쓰면 source와 runtime 사이가 끊어진다. 이 책은 Git SHA를 image tag로 쓰고, 더 엄격한 환경에서는 registry digest까지 기록한다. staging에서 검증한 image를 production에서 다시 build하지 않는다. 다시 build하면 같은 source라도 base image나 package repository 상태 때문에 다른 artifact가 나올 수 있다.
GitHub Actions와 GitLab CI의 YAML 문법은 다르지만 계약은 같다. job identity를 OIDC token으로 증명하고, AWS STS가 제한된 role의 temporary credential을 발급하고, build role과 deploy role을 분리한다.