Commit Graph

2 Commits

Author SHA1 Message Date
kjh2064 538fc742b1 ci: 자동화된 배포 테스트 스크립트 (SSH 직접 호출)
Quant Engine CI/CD Pipeline / validate-core (push) Failing after 11s
Quant Engine CI/CD Pipeline / validate-ui-and-storage (push) Has been skipped
Deploy to Production (Local) / Build & Deploy to Production (push) Has been cancelled
Build & Package / build (push) Failing after 1m50s
## 스크립트 기능

### scripts/auto_deployment_test.sh
사람 개입 없이 완전 자동으로 동작하는 배포 검증

**특징**:
- SSH로 직접 원격 서버 연결 (사용자 개입 불필요)
- 3가지 테스트 자동 실행
- 결과 자동 수집 및 보고

## 테스트 항목

### 1. Green-Blue 배포 구조 검증
- Active (Blue) 버전 확인
- Rollback 버전 확인
- 원자적 전환 시뮬레이션
- 배포 구조 유효성 검증

### 2. 서비스 헬스체크
- systemctl status 확인
- 로컬 헬스체크 (127.0.0.1:5000)
- 공개 라우트 검증 (https://quant.taxbaik.com)
- 배포 이력 기록 확인

### 3. Nginx 설정 검증
- 설정 파일 위치 확인
- Nginx 문법 검증 (nginx -t)
- 로케이션 블록 확인
- Nginx 서비스 상태 확인

## 실행 결과 (2026-07-11 18:31)

 Test 1: Green-Blue 배포 구조 검증
   - Active: quantengine_20260711_181524
   - Rollback: quantengine_20260711_181342
   - 원자적 전환 가능 ✓

 Test 2: 서비스 헬스체크
   - 서비스 실행: Running (PID 3944910)
   - 로컬 응답: HTTP 302
   - 공개 라우트: HTTP 302/200
   - 배포 이력: 2개 기록됨

 Test 3: Nginx 설정 검증
   - 설정 파일: /etc/nginx/sites-enabled/taxbaik-domains.conf
   - Nginx: Running (PID 3676240)
   - Location 블록: 3개

## 사용 방법

```bash
# 자동으로 원격 서버에 접속하여 테스트 실행
./scripts/auto_deployment_test.sh
```

**사용자 개입 불필요** - SSH 키 설정되어 있으면 자동으로 동작

## 이점

1. **완전 자동화**: 사람 개입 없음
2. **재현 가능**: 언제든 동일한 검증 실행 가능
3. **빠른 피드백**: 배포 상태 즉시 파악
4. **신뢰성 검증**: 프로덕션 환경 실시간 모니터링

## 다음 활용

- CI/CD 파이프라인에 통합
- 정기적인 헬스 체크 자동화
- 배포 후 검증 자동화
- 온콜 모니터링 도구와 연동

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-07-11 18:32:09 +09:00
kjh2064 db19f0cbd9 ci: Green-Blue 배포 + 마이그레이션 검증 + Nginx 검증 (taxbaik 패턴 적용)
Quant Engine CI/CD Pipeline / validate-core (push) Failing after 13s
Quant Engine CI/CD Pipeline / validate-ui-and-storage (push) Has been skipped
Build & Package / build (push) Failing after 1m32s
Deploy to Production (Local) / Build & Deploy to Production (push) Failing after 1m27s
## 변경 사항

### 1. Green-Blue 배포 스크립트 (새로움: deploy_gb.sh)
taxbaik의 배포 전략을 QuantEngine에 맞춰 로컬화

**기능**:
- Phase 1: 새 버전(Green) 준비 (배포 중단 없음)
- Phase 2: 마이그레이션 사전 검증
- Phase 3: Nginx 설정 검증
- Phase 4: 데이터베이스 마이그레이션 준비 확인
- Phase 5: 원자적 전환 (Blue → Green)
- Phase 6: 서비스 재시작
- Phase 7: 이전 버전 정리 (최근 5개 유지)

**장점**:
- 배포 중단 최소화 (원자적 링크 전환)
- 즉각 롤백 가능 (이전 버전 유지)
- 단계별 검증으로 배포 안정성 ↑

### 2. 마이그레이션 검증 스크립트 (새로움: scripts/validate_migrations.sh)
배포 전 데이터베이스 상태 검증

**검증 항목**:
- 데이터베이스 연결 테스트
- 현재 마이그레이션 버전 확인
- DbUp 마이그레이션 파일 검증
- 필수 테이블 존재 확인
- 마이그레이션 호환성 (다운그레이드 방지)
- 마이그레이션 시간 예측

**효과**:
- 배포 전 데이터 무결성 보장
- 마이그레이션 실패 사전 차단
- 롤백 필요성 제거

### 3. deploy-prod.yml 통합
- 마이그레이션 검증을 배포 전에 실행
- Green-Blue 배포 스크립트 호출
- Nginx 설정 검증 추가
- 배포 이력 로깅

## 배포 흐름 (개선)

```yaml
1. 빌드 + 테스트
2. 패키지 생성 (tar.gz)
   ├─ deploy_gb.sh 포함
   └─ scripts/validate_migrations.sh 포함
3. Pre-Deployment 검증
   ├─ DB 연결 테스트
   ├─ 마이그레이션 호환성 확인
   └─ 필수 테이블 검증
4. Green-Blue 배포 (deploy_gb.sh)
   ├─ Green 버전 준비
   ├─ Nginx 설정 검증
   ├─ 원자적 링크 전환
   ├─ 서비스 재시작
   ├─ 자동 롤백 (실패 시)
   └─ 이전 버전 정리
5. 헬스체크 (3회)
6. Nginx 재검증
```

## 아키텍처 원칙

1. **무중단 배포** (Shadow Copy + Green-Blue)
   - 링크 전환 시에만 짧은 중단
   - 롤백 즉시 가능

2. **사전 검증** (Pre-Deployment)
   - 배포 전 모든 조건 확인
   - 배포 중단 최소화

3. **자동 복구** (Auto-Rollback)
   - 헬스체크 실패 시 이전 버전 복구
   - Telegram 자동 알림

## 다음 단계 (Phase 2)

- build.yml 활성화 (빌드 분리)
- Gitea Releases 활용 (아티팩트 저장)
- E2E 테스트 추가 (로그인, API)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-07-11 18:25:02 +09:00