v1.9.0 — 이벤트 사전 스케일링 + Aurora 데이터 계층 기반 (ADR-030)
운영 부하가 예측되는 이벤트(세일, 라이브 스트리밍, 분기 마감 등)에 대비해 자원을 미리 데우는 이벤트 사전 스케일링을 v1.9.0에 추가했습니다. 동시에 단일 EC2 호스트에 빌드·운영·로컬 JSON 상태가 모두 묶여 있던 구조를 풀기 위한 ADR-030 Aurora 데이터 계층 기반(CDK 스택·스키마·db.ts)을 함께 들였습니다. 본 릴리스의 Aurora는 기본 off / opt-in으로 들어가 기존 단일 호스트 배포에는 영향이 없습니다.
이벤트 사전 스케일링 (ADR-010 Phase 1+2) · Aurora Serverless v2 기반 (ADR-030 Phase 1) · ADR-029 변경 작업 게이트 · AI 코드 리뷰 워크플로 · 좀비 연결 정리 강화
이벤트 사전 스케일링 (ADR-010 Phase 1+2)
대형 트래픽 이벤트가 시작되기 전에 자원을 데울 수 있도록, /event-scaling 관리자 페이지가 추가되었습니다. 등록부터 스크립트 다운로드까지 4단계로 동작합니다:
- 이벤트 등록 — 이벤트 이름, 시작/종료 시간, 영향받는 자원 태그
- 과거 메트릭 수집 — 동일 이벤트가 과거에 있었다면 그 구간의 CloudWatch 메트릭(ASG·RDS·MSK·EBS·ALB)을 GetMetricData 배치로 수집
- AI 워밍업 플랜 생성 — Bedrock Sonnet 4.6이 자원별로 다단계 사전 스케일 플랜을 생성하고
PLAN_JSON마커로 구조화된 결과 반환 - bash 스크립트 다운로드 — 자원 타입별로 안전한 스크립트 생성 (KEDA·HPA, Aurora 리더 추가, MSK 파티션 확장, ASG warm pool, EBS IOPS 부스트)
검토-후-실행 (mutation-by-review)
대시보드는 변경 작업을 직접 실행하지 않습니다. 스크립트는 다운로드 전용이며 운영자가 검토한 뒤 적절한 환경(kubectl, aws cli)에서 직접 적용합니다. 이는 ADR-029(Proposed)의 변경 작업 게이트 모델 — "AI가 생성한 mutating action은 명시적 인간 승인 후에만 실행된다" — 와 일치합니다.
관련 파일
| 파일 | 역할 |
|---|---|
src/app/event-scaling/page.tsx | 이벤트 등록·메트릭 차트·플랜 표시·스크립트 다운로드 UI (admin 전용) |
src/app/api/event-scaling/route.ts | CRUD + 메트릭 + Bedrock 플랜 + 스크립트 (GET/POST/PUT/DELETE) |
src/lib/event-scaling.ts | 데이터 모델 + JSON 영속화 (data/event-scaling/) |
src/lib/event-scaling-prompts.ts | Bedrock Sonnet 4.6 프롬프트 + PLAN_JSON 파싱 |
src/lib/event-scaling-scripts.ts | 자원 타입별 bash 스크립트 생성기 |
src/lib/queries/event-scaling.ts | CloudWatch GetMetricData + ASG/RDS/MSK/EBS/ALB 자원 상태 쿼리 |
Aurora 데이터 계층 기반 (ADR-030 Phase 1)
빌드 서버와 운영 서버가 같은 EC2에 묶여 있어 AgentCore Docker 빌드 시 Next.js 지연이 튀고 Steampipe FDW 쿼리가 타임아웃되는 문제를 해결하기 위해, ADR-030에서 ECS Fargate 워크로드 + Aurora 앱 상태 + 이중 ECR(Dev=Private, Prod=Public) 로의 전환을 결정했습니다. v1.9.0은 그중 Phase 1 기반만 들어갑니다.
들어간 것
| 컴포넌트 | 설명 |
|---|---|
infra-cdk/lib/awsops-data-stack.ts | Aurora Serverless v2 PostgreSQL 15.5 (0.5–4 ACU, Writer + Reader, KMS 암호화, IAM 인증, Private Subnet, rds.logical_replication=1) |
infra-cdk/data/schema.sql | idempotent 7-table 스키마 (inventory_snapshots, cost_snapshots, agentcore_memory, agentcore_stats, alert_diagnosis, event_scaling_plans, report_schedules) + schema_migrations 버전 추적 + touch_updated_at 트리거 |
src/lib/db.ts | 앱 측 pg Pool (Steampipe 풀과 분리). AURORA_DATABASE_URL DSN 또는 AURORA_HOST/USER/PASSWORD/DB 개별 환경변수, isAuroraEnabled() / checkDbHealth() 헬퍼 |
scripts/13-deploy-aurora.sh | CDK 배포 + Secrets Manager에서 자격 증명 가져와 psql로 스키마 적용. deploy / schema / status / dsn 서브커맨드 |
opt-in 배포
기본은 off입니다. 활성화하려면 컨텍스트 플래그를 명시:
cd infra-cdk
npx cdk deploy AwsopsDataStack -c enableAurora=true
# 또는 스크립트 사용
../scripts/13-deploy-aurora.sh deploy
이렇게 게이트한 이유는 (1) Aurora Serverless v2 최소 0.5 ACU 청구(~$43/월)가 모든 환경에 적합하지 않고, (2) Phase 1 dual-write가 아직 들어가지 않아 실제 데이터는 여전히 data/*.json에 쌓이기 때문입니다.
Steampipe는 그대로
ADR-030의 미묘한 지점: Steampipe는 stateless입니다. FDW가 AWS API를 실시간 조회하고 결과를 인메모리에 잠시 두는 구조라, 컨테이너가 재시작되어도 잃을 "데이터"가 없습니다. Aurora가 대체하는 것은 Steampipe가 아니라, 대시보드 자체가 EC2 디스크에 쌓던 data/*.json (인벤토리·Cost·메모리·alert 기록·event-scaling 플랜 등)입니다.
다음 릴리스 예정 (Phase 1 dual-write)
7개 소스 파일이 이중 쓰기 경로를 받습니다. 쓰기는 JSON과 Aurora 양쪽에 들어가고, 읽기는 7일 패리티 게이트가 통과할 때까지 JSON 측에서 합니다:
resource-inventory.ts,cost-snapshot.ts,agentcore-memory.ts,agentcore-stats.ts,alert-knowledge.ts,event-scaling.ts,report-scheduler.ts
ADR-029: 변경 작업 프레임워크 (Proposed)
이벤트 사전 스케일링이 검토-후-실행으로 들어간 이유는 ADR-010 Phase 3(자동 실행)의 게이트 모델이 아직 정해지지 않았기 때문입니다. ADR-029는 그 게이트 — "어떤 조건에서 AI가 생성한 변경 작업을 어떤 권한 모델로 실행 가능하게 할 것인가" — 를 Proposed 상태로 등록해 향후 Phase 3 작업의 선행 조건을 명시합니다.
AI 코드 리뷰 워크플로
PR이 열리거나 업데이트될 때 Claude가 자동으로 코드 리뷰를 수행하는 GitHub Actions 워크플로가 추가되었습니다 (.github/workflows/claude-review.yml). AWSops 컨벤션(Steampipe pg Pool, basePath, SCP 차단 컬럼 등)에 맞춰진 리뷰 프롬프트를 사용합니다.
좀비 연결 정리 강화
src/lib/steampipe.ts의 좀비 정리 작업이 풀에서 connection을 빌리지 않고 전용 단명 Client를 사용하도록 변경되었습니다. Cost Explorer/IAM 요약 FDW가 hung 상태일 때 풀 전체가 고갈되어도 정리가 계속 동작합니다. 임계값도 90초로 단축되었습니다.
통계 비교
| 항목 | v1.8.1 | v1.9.0 | 변경 |
|---|---|---|---|
| 페이지 | 41 | 43 | +2 (/event-scaling, /login 정정 반영) |
| API 라우트 | 18 | 19 | +1 (/api/event-scaling) |
| SQL 쿼리 파일 | 25 | 26 | +1 (event-scaling.ts) |
| ADR | 28 (001-028) | 30 (001-030) | +2 (029 Proposed, 030 Accepted) |
| CDK 스택 | 3 (Awsops·Cognito·AgentCore) | 4 | +1 (AwsopsDataStack, opt-in) |
| 배포 스크립트 | 12단계 | 13단계 | +1 (13-deploy-aurora.sh) |
| lib 파일 | 27 | 31 | +4 (event-scaling* 3개, db.ts) |
참고
- ADR-010: 이벤트 기반 사전 스케일링 (Phase 1+2 Accepted)
- ADR-029: 변경 작업 프레임워크 (Proposed)
- ADR-030: ECS Fargate + Aurora + 이중 ECR (Accepted, Phase 1 부분 구현)