🎯 주제 개요
대규모 시스템 운영 중 가장 민감하고 위험한 작업 중 하나는 운영 중인 데이터베이스의 스키마 변경입니다.
단일 ALTER TABLE도 잘못하면 서비스 전체가 멈추고, 트래픽 피크 시간대에는 쿼리 Lock으로 대란이 발생할 수 있습니다.
이때 실리콘밸리의 대형 SaaS 기업들은 다음 전략을 사용합니다:
• gh-ost: Lock 없이 MySQL 스키마 변경
• Argo Workflows: 선언형 데이터 마이그레이션 실행 자동화
• GitOps + Slack Notification까지 연계한 안전한 전체 파이프라인 구성
⸻
🧱 핵심 아키텍처 구성
Git Commit (ALTER 정의)
↓
Argo Workflows Job 실행
↓
gh-ost 실행 (Lock-free schema change)
↓
Slack 메시지 전송 (변경 결과 요약)
⸻
🔧 실전 예시: 운영 MySQL 테이블에 컬럼 추가
1. Git 저장소에 마이그레이션 스크립트 작성
migrations/add-column-user-status.yaml
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
name: user-schema-update
spec:
entrypoint: run-gh-ost
templates:
- name: run-gh-ost
container:
image: ghcr.io/github/gh-ost
command: ["/bin/sh", "-c"]
args:
- >
gh-ost
--alter="ADD COLUMN status VARCHAR(20) DEFAULT 'active'"
--database=prod_db
--table=users
--user=dbadmin
--password=$MYSQL_PASS
--host=mysql-cluster.internal
--allow-on-master
--execute
⸻
2. Git Commit → Argo 자동 감지
Argo Events 또는 CronWorkflow를 활용해 Git push 시 자동 실행
⸻
3. Slack 알림 연동 (Success/Fail 분기)
Argo Workflow의 onExit 템플릿 활용
- name: notify-slack
container:
image: curlimages/curl
command: ["/bin/sh", "-c"]
args:
- |
curl -X POST -H 'Content-type: application/json' \
--data '{"text":"✅ gh-ost 완료: users.status 컬럼 추가 성공"}' \
https://hooks.slack.com/services/XXX
실패 시엔 ❌ 실패 메시지와 로그 링크 포함 전송
⸻
🔍 gh-ost vs pt-online-schema-change vs native ALTER
툴 Lock 없음 Production 안정성 모니터링 지원 사용 난이도
gh-ost ✅ 매우 높음 ✅ (Progress file) 중간
pt-online-schema-change ⚠️ 일부 Lock 발생 가능 중간 중간 중간
ALTER TABLE ❌ 낮음 ❌ 쉬움
→ gh-ost는 GitHub, Slack, GitLab, Square 등 실서비스 환경에서 사용 중
⸻
🔐 보안과 안정성 강화 팁
• IAM 기반 DB 접근 (IAM DB Auth 또는 세션 토큰)
• gh-ost 실행 전 후 트래픽 스냅샷 저장 (CloudWatch or Datadog)
• 실패한 gh-ost Job은 자동 Rollback 설정 (Argo 조건 분기)
⸻
📦 확장 아이디어
확장 항목 설명
여러 테이블 일괄 변경 Workflow DAG 기반 순차 병렬 실행
버전 별 데이터 마이그레이션 관리 Git tag 기준 Rollforward / Rollback 자동화
Slack + Notion 통합 변경 로그 문서 자동 등록
⸻
✅ 결론
대규모 트래픽을 가진 서비스에서의 DB 변경은 사고가 아니라 전략입니다.
gh-ost와 Argo Workflows를 조합하면:
• Lock 없이 실시간으로
• 코드 기반 선언적 관리로
• 알림까지 자동화된 상태에서
무중단 데이터 마이그레이션이 완성됩니다.
'IT & Tech 정보' 카테고리의 다른 글
GitOps로 운영되는 멀티 클러스터 환경의 CI/CD 파이프라인 아키텍처: (0) | 2025.05.28 |
---|---|
SLA 기반 리소스 자동 스케일링 시스템: KEDA + Prometheus + Custom Autoscaler의 완전한 설계 (0) | 2025.05.28 |
Helm + GitOps + SecretOps: 프로덕션 등급 Kubernetes 배포를 위한 완전체 구성 전략 (0) | 2025.05.28 |
Pact · Spring Cloud Contract · Kafka Contract 테스트 · GitHub Actions 통합 (0) | 2025.05.27 |
자동 롤백 전략 끝판왕 가이드: Helm + Kubernetes Liveness/Readiness 프로브 (0) | 2025.05.26 |