풀스택 개발자를 위한 CI/CD 8강 — 배포 전략, 롤백, DB 마이그레이션
Recreate·Rolling·Blue-Green·Canary·기능 플래그를 비교하고 단일 서버 Blue-Green을 직접 구현합니다. 롤백의 세 가지 방식과, 구·신 버전이 공존하는 시간을 전제로 한 Expand-Contract DB 마이그레이션까지 설계합니다.
blog92@web:~$ cd categories/devops
Docker·CI/CD·인프라 — 배포와 운영 자동화 기록
Recreate·Rolling·Blue-Green·Canary·기능 플래그를 비교하고 단일 서버 Blue-Green을 직접 구현합니다. 롤백의 세 가지 방식과, 구·신 버전이 공존하는 시간을 전제로 한 Expand-Contract DB 마이그레이션까지 설계합니다.
파이프라인은 조직에서 가장 강력한 자동화 주체입니다. 비밀값의 올바른 위치, GitHub 시크릿과 변수, Environments 승인, GITHUB_TOKEN 최소 권한, 스크립트 인젝션과 포크 PR, 그리고 장기 자격 증명을 없애는 OIDC를 다룹니다.
레지스트리에 올린 이미지를 서버에서 실행시키는 CD 단계를 만듭니다. Push와 Pull 방식을 비교하고, SSH + Docker Compose 배포 스크립트와 워크플로, 플랫폼 배포, PR 미리보기 환경, 릴리스 자동화를 구성합니다.
Build Once Deploy Many를 컨테이너 이미지로 구현합니다. Next.js standalone 멀티스테이지 빌드, 빌드 시점 환경변수 문제, 태깅 전략과 digest, 레지스트리 선택, 멀티 플랫폼 빌드를 다룹니다.
느린 CI는 결국 무시당합니다. 어디서 시간이 새는지 측정하고 캐시의 원리, job 병렬화, 매트릭스 빌드, concurrency 동시성 제어, 실행 자체를 건너뛰는 기법까지 적용합니다.
정적 분석부터 E2E까지 테스트를 파이프라인 어디에 둘지 설계하고, 서비스 컨테이너로 실제 DB 통합 테스트를 돌리고, 불안정한 테스트를 다루며 브랜치 보호 규칙으로 머지 게이트를 만듭니다.
Workflow·Event·Job·Step·Action의 구성 요소부터 트리거와 표현식·컨텍스트, Next.js 첫 CI 워크플로 작성, job 분리와 아티팩트 전달, Runner 이해와 디버깅까지 다룹니다.
통합 지옥과 "내 PC에서는 되는데요"에서 출발해 CI·Continuous Delivery·Deployment를 구분하고, 파이프라인의 해부와 Build Once Deploy Many 같은 핵심 원칙, 도구 지형도까지 정리합니다.
1강부터 10강까지의 핵심 질문과 도구, 반드시 기억할 점을 한 표로 모으고 각 강으로 가는 링크를 정리한다. 그리고 네트워크·데이터·플랫폼·보안 심화로 이어지는 다음 학습 방향까지.
가용성 숫자가 뜻하는 시간, 고가용성 설계와 백업·재해 복구, DB 운영과 캐싱·큐, 보안 운영, 부하 테스트와 용량 관리, SLO와 에러 버짓, 장애 대응과 비난 없는 회고.
컨트롤 플레인과 핵심 오브젝트, probe 세 종류의 구분, requests와 limits, 오토스케일링, 롤링 업데이트와 무중단 종료, Helm·Kustomize 패키징, 그리고 쿠버네티스를 쓰지 말아야 할 때.
Terraform의 plan 읽기와 state 보호, 모듈과 환경 분리, CI에서의 실행 방식, Ansible의 멱등성, 두 도구의 역할 분담, 그리고 폐쇄망에서의 IaC 운영.
로그·메트릭·트레이스 세 신호와 구조화 로그, RED·USE·Golden Signals 방법론, 증상 기반 알림, 분산 트레이싱과 헬스체크 엔드포인트, Docker Compose로 올려 보는 실습용 관측 스택.
IaaS부터 SaaS까지의 책임 경계, IAM 최소 권한과 역할, VPC의 public/private 라우팅과 보안 그룹, EC2·S3·RDS·ELB·Route 53의 기본기, 그리고 NAT와 데이터 전송에서 새는 비용까지.
CI와 CD의 구분, GitHub Actions 워크플로 구조, 이미지 빌드와 푸시, 시크릿과 OIDC, 블루/그린과 롤링 배포, 롤백과 expand-contract DB 마이그레이션까지 — 배포를 사람 손에서 파이프라인으로 옮기는 법.
컨테이너와 VM의 차이, 이미지 레이어와 캐시, 멀티 스테이지 Dockerfile, 볼륨과 네트워크, Compose, 로그·리소스 제한, 폐쇄망 반입과 트러블슈팅까지 — 실행 환경을 이미지로 고정하는 법.
Nginx 설정 구조부터 정적 파일과 SPA, proxy_pass와 X-Forwarded 헤더, location 우선순위, certbot HTTPS, 로드밸런싱, 타임아웃과 속도 제한까지 — 앱 앞에 서는 웹서버 운영의 기본.
OSI 계층과 IP·서브넷, TCP와 UDP, DNS, HTTP와 HTTPS, NAT·프록시·로드밸런서, 방화벽과 바인딩 주소까지 — 접속이 안 되는 원인을 DNS에서 응용까지 순서대로 좁혀 가는 법.
FHS 디렉터리 구조와 권한, 프로세스와 시그널, systemd 서비스, 패키지 관리, 환경 변수, 텍스트 처리, 쉘 스크립트, 리소스 점검까지 — 서버에 접속했을 때 무엇이 어디에 있고 무엇이 어떻게 돌고 있는지 스스로 파악하는 법.
npm install도 docker pull도 안 되는 폐쇄망에서 안티패턴이 자라는 이유와, 내부 레지스트리·패키지 미러·릴리스 번들·다이제스트 고정·오프라인 취약점 스캔·복구 리허설로 시리즈의 패턴을 이식하는 방법.
blog92@web:~$ cd ..