2025년 11월 변경 사항
- Date: 2025-11-28
- Documents:
- Summary:
- Production 환경 구축 및 CI/CD 파이프라인 완성:
- Production 인프라 및 애플리케이션 배포:
- AWS EKS, Multi-AZ RDS(PostgreSQL), ElastiCache(Redis TLS)를 포함한 격리된 Production VPC(
10.20.0.0/16) 환경을 구축했습니다. - IRSA(IAM Roles for Service Accounts)를 전면 도입하여 Access Key 없는 보안 환경을 구성하고, AWS Load Balancer Controller 및 Ingress(ACM HTTPS)를 설정하여 외부 접속을 활성화했습니다.
- Redis TLS 연결(
rediss://) 문제, ALB Controller 권한 오류(SSLPolicyNotFound), Ingress 삭제 지연 등 주요 배포 이슈를 해결하고 안정화했습니다.
- AWS EKS, Multi-AZ RDS(PostgreSQL), ElastiCache(Redis TLS)를 포함한 격리된 Production VPC(
- Production CI/CD 파이프라인 구축:
- GitHub Release 기반 배포 전략:
vivid-ai메인 레포지토리가 아닌backend-vivid-ai,frontend-vivid-ai각 서브 레포지토리에서 릴리스(v1.0.0)를 발행할 때 배포가 트리거되는 Polyrepo 방식의 배포 전략을 수립했습니다. - AWS OIDC 인증: GitHub Secrets에 장기 Access Key를 저장하지 않고,
aws-actions/configure-aws-credentials와 AWS OIDC Provider를 사용하여 임시 보안 자격 증명을 획득하는 보안 강화 방식을 적용했습니다. - 자동화된 워크플로우: Docker 이미지 빌드(태그 불변성 적용), ECR 푸시, EKS
kubectl set image배포 과정을 자동화하는deploy-prod.yml워크플로우 상세 내용을 기술했습니다.
- GitHub Release 기반 배포 전략:
- Production 인프라 및 애플리케이션 배포:
- Production 환경 구축 및 CI/CD 파이프라인 완성:
- Date: 2025-11-24
- Documents:
UPDATEproject-overview/03-architecture/ARCHITECTURE.mdUPDATEbackend/README.mdUPDATEai-server/README.mdUPDATEpost-processing-worker/README.mdUPDATEfrontend/README.mdUPDATEproject-overview/02-planning/ROADMAP.md
- Summary:
- 비디오 생성 및 자동 재생(Preview) 기능 지원:
- AI Node Agent: ComfyUI 결과물 중
images외에gifs,videos파일도 감지하여 처리하도록 로직 확장. - Post-Processing Worker:
ffmpeg를 도입하여 비디오 결과물에 대해 웹 최적화된 미리보기 MP4(H.264, Muted, Resized)를 생성하고 썸네일 경로에 저장. - Frontend:
CreationCard에서 비디오 썸네일을 감지하여 자동 재생(<video autoPlay>) 지원 및DetailModal에서 원본 비디오 플레이어 제공.
- AI Node Agent: ComfyUI 결과물 중
- 작업 상태 및 모니터링 아키텍처 개선:
- 상태 흐름 재정의:
Queued->Processing->Post-Processing(Agent 완료, Worker 작업 중) ->Completed/Failed(Backend 최종 확인)로 흐름을 명확히 하여 '후처리' 단계의 가시성을 확보. - 책임 분리:
AiNodeAgent는post_processing상태까지만 업데이트하고 종료하며, 최종completed이벤트 발행은 Backend가 담당하도록 변경. - Redis 아키텍처 통합: 로컬 개발 환경에서 캐시용 Redis와 웹소켓용 Redis를 별도로 운영하던 구조를 개선하여, SSH 터널링을 통해 AWS Redis 하나로 통합. 이를 통해 AI 서버와 Backend 간의 상태 데이터(
prompt_progress) 공유 문제 해결.
- 상태 흐름 재정의:
- 비디오 생성 및 자동 재생(Preview) 기능 지원:
- Date: 2025-11-21
- Documents:
UPDATEbackend/README.mdUPDATEfrontend/README.mdUPDATEproject-overview/02-planning/ROADMAP.md
- Summary:
- 시스템 안정성 및 UI/UX 대규모 개선:
- Backend & AI Server:
AiNodeAgent의 작업 처리 방식을 동기식(Synchronous)으로 변경하여 ComfyUI 큐 폭주를 방지했습니다. 또한, 생성 요청 즉시 Redis에 'queued' 상태를 등록하여 Worker가 작업을 가져가기 전에도 사용자에게 대기 상태를 보여주도록 개선했습니다. - Frontend:
CreationCard,GeneratorForm등 핵심 컴포넌트를 MUI 기반으로 리팩토링하여 다크/라이트 모드를 완벽하게 지원합니다. 네비게이션을 정리하여 불필요한 페이지를 제거하고, 서버 모니터링 페이지를 탭 기반으로 개편하여 가독성을 높였습니다.
- Backend & AI Server:
- 시스템 안정성 및 UI/UX 대규모 개선:
- 날짜: 2025-11-20
- 문서:
project-overview/*(폴더 구조 변경),frontend/GALLERY_FEATURES.md(신규) - 내용:
project-overview폴더 내의 문서들을01-introduction,02-planning,03-architecture,04-infra-deployment등 주제별 하위 폴더로 재구성하여 가독성과 탐색 편의성을 개선했습니다.- 현재 구현 중인 갤러리 프론트엔드 기능(
CreationsPage,CreationCard,useCreations)에 대한 상세 문서GALLERY_FEATURES.md를 작성했습니다.
- 날짜: 2025-11-20
- 문서:
ARCHITECTURE.md,backend/README.md,post-processing-worker/README.md(신규),frontend/README.md,ai-server/README.md(신규) - 내용:
ai-node-agent및post-processing-worker에서 SQS/S3에 대한 LocalStack 의존성을 완전히 제거하고 실제 AWS SQS 및 S3 리소스를 사용하도록 전환.ai-node-agent와post-processing-worker에 다중 환경(local/dev) SQS/S3 처리 로직 구현.ai-node-agent가 SQS 메시지에env필드를 포함하여 후처리 워커로 전송하도록 업데이트.- 백엔드에서 S3 객체에 대한 Pre-signed URL을 생성하여 프론트엔드에 안전하게 제공하도록 로직 강화. 관련 IAM 권한 및 S3 버킷 설정(
Bucket Policy,Block Public Access,리전 일치)의 중요성 문서화. - 프론트엔드의
next/image컴포넌트가 S3 버킷 호스트 이름(next.config.ts의images.remotePatterns)을 통해 이미지를 로드하도록 설정. COMFY_OUTPUT_DIR환경 변수(절대 경로) 및 Docker 볼륨 매핑의 중요성 명확화.post-processing-worker/README.md및ai-server/README.md문서 신규 생성 및 각 컴포넌트의 역할, 환경 변수, 동작 방식 상세화.
- 날짜: 2025-11-19
- 문서:
ARCHITECTURE.md,OVERVIEW.md,backend/README.md,ai-server/README.md - 내용:
- 로컬 개발 환경과 EKS 개발 환경의 아키텍처를 완벽히 분리하고, 이를 문서에 다이어그램과 함께 명시.
- S3/SQS는 모든 환경에서 실제 AWS 리소스를 사용하도록 아키텍처 확정. (LocalStack S3 사용 계획 폐기)
- 백엔드의 Redis를 '캐시용'과 '웹소켓용'으로 분리하고, 로컬 개발 시 SSH 터널을 통해 웹소켓 Redis에 접속하는 가이드 추가.
- 단일
ai-node-agent가local과dev두 환경의 SQS 큐를 동시에 폴링하고, 각 환경에 맞는 S3 버킷으로 라우팅하도록 코드 및 설정 변경. - 로컬 개발 환경에서
post-processing-worker를 Docker 컨테이너로 실행하는 구조 확정.
- Date: 2025-11-18
- Documents:
- Summary:
- EKS 애플리케이션 배포 상세 가이드 추가 및 업데이트:
ARCHITECTURE.md: 후처리 워커의 EKS 배포 특이사항(이미지 아키텍처, ECR 이미지 풀 권한, 환경 변수 주입, 네트워크 접근)을 상세화했습니다.INFRA_DEPLOYMENT.md: EKS 애플리케이션 배포를 위한 새로운 섹션을 추가하여 Docker 이미지 빌드 및 관리(플랫폼 고려사항), Kubernetes Secret을 통한 환경 변수 주입, IRSA(IAM Role for Service Accounts)를 통한 ECR 이미지 풀 인증, 프라이빗 서브넷 환경에서의 VPC Endpoint 구성의 중요성 등 상세 가이드를 제공합니다.
- EKS 애플리케이션 배포 상세 가이드 추가 및 업데이트:
- Date: 2025-11-17
- Documents:
- Summary:
- End-to-End 생성 프로세스 상세화:
ARCHITECTURE.md: 사용자의 생성 요청부터 프론트엔드 갤러리에 이미지가 표시되기까지의 전체 과정을 6단계(생성 요청, 작업 접수, AI 연산, 후처리, 상태 업데이트, 갤러리 조회)로 나누어 상세히 기술했습니다. 각 컴포넌트(Frontend, Backend, AI Node Agent, Post-processing Worker)의 역할과 데이터 흐름을 명확히 하여 전체 시스템 아키텍처에 대한 이해도를 높였습니다.
- End-to-End 생성 프로세스 상세화:
- Date: 2025-11-14
- Documents:
- Summary:
- 창작물 후처리 및 갤러리 기능 아키텍처 정의 및 로드맵 구체화:
ARCHITECTURE.md: 후처리 파이프라인을 임시 S3 버킷과 SQS를 통해 AI 연산 워커와 후처리 워커를 분리하는 방식으로 재정의했습니다. 후처리 워커는 백엔드 API를 호출하여 최종 상태를 DB에 업데이트합니다. 관련 다이어그램도 최신 흐름에 맞게 수정했습니다.ROADMAP.md: 기존의 '갤러리 모듈' 항목을 '창작물 후처리 및 갤러리' 기능으로 대체하고, 인프라, 백엔드, AI 워커, 후처리 워커, 프론트엔드, E2E 테스트 등 세부 구현 작업으로 나누어 구체화했습니다。
- 창작물 후처리 및 갤러리 기능 아키텍처 정의 및 로드맵 구체화:
- Date: 2025-11-14
- Documents:
- Summary:
ai-node-agent의 멀티스레드 아키텍처를 상세히 설명하는AI_NODE_AGENT_DEEP_DIVE.md문서를 추가했습니다.- 각 스레드(SQS 폴링, 웹소켓 관리, 시스템 모니터링, 메시지 처리, 하트비트)의 역할과 동작 방식을 명확히 하여, 에이전트의 내부 동작에 대한 이해를 돕습니다.
backend/README.md에ai-node-agent에 대한 섹션을 추가하고, 새로운 상세 문서로의 링크를 포함했습니다.
- Date: 2025-11-13
- Documents:
UPDATEproject-overview/01-introduction/OVERVIEW.mdUPDATEproject-overview/03-architecture/ARCHITECTURE.mdUPDATEproject-overview/02-planning/ROADMAP.mdUPDATEbackend/README.mdUPDATEfrontend/README.mdADDfrontend/COMPONENTS.md (서버 모니터 컴포넌트 문서화)
- Summary:
- 실시간 서버 모니터링 및 진행률 표시 기능 구현:
ai-node-agent에 시스템 메트릭(CPU, RAM, 디스크) 수집 로직 및 Redis Pub/Sub 발행 기능 추가.backend-vivid-ai의ai-realtime.gateway.ts가 Redis Pub/Sub을 구독하여 모니터링 데이터 및 진행 상황 이벤트를 Socket.IO를 통해 프론트엔드로 전달.frontend-vivid-ai의ServerMonitor.tsx에서 수신된 데이터를 대시보드로 시각화.websocket.interface.ts에GpuMonitorData,CrystoolsMonitorData등 인터페이스 정의.
- 버그 수정 및 안정화:
ai-node-agent의 ComfyUI 이벤트 처리 레이스 컨디션 해결: Redis ID 매핑 조회 로직에 2초 재시도 메커니즘 도입.ai-node-agent<->backend-vivid-ai간 상태 불일치 문제 해결:ai-node-agent가progress및executed이벤트에 대해 Redis의prompt_progress:{ourPromptId}키에 최신 상태를 일관되게 업데이트하도록 수정. (completed상태의 TTL 관리 포함)frontend-vivid-ai의useComfyWebSocket.ts상태 관리 개선: 완료되거나 실패한 작업(completed,failed)을activeProgresses상태에서 명시적으로 제거하여 UI가 정확한 진행 상황만 표시하도록 수정.
- ComfyUI 이벤트 비정상 동작 분석:
- ComfyUI가 간헐적으로 지연되거나 이미 완료된 작업에 대해 뒤늦은(유령) 이벤트를 보내는 현상이Agent의 버그가 아님을 확인 및 문서화 (
ai-node-agent는 이러한 비정상 이벤트를 감지 및 경고 로깅).
- ComfyUI가 간헐적으로 지연되거나 이미 완료된 작업에 대해 뒤늦은(유령) 이벤트를 보내는 현상이Agent의 버그가 아님을 확인 및 문서화 (
- 실시간 서버 모니터링 및 진행률 표시 기능 구현:
- Date: 2025-11-12
- Documents:
- Summary:
- 로컬 개발 환경에서 AWS의 프라이빗 리소스(RDS, Redis)에 접속하기 위한 SSH 터널링 가이드를 추가했습니다.
- 아키텍처 문서에 리소스의 프라이빗 서브넷 위치 및 보안적 이유를 명시하고, 환경별 접속 방식을 설명했습니다.
- Date: 2025-11-11
- Documents:
- Summary:
- 실시간 모니터링을 위한 Redis Pub/Sub 기반의 새로운 실시간 파이프라인 아키텍처를 도입하고 관련 문서를 추가 및 업데이트했습니다.
AiNodeAgent와AiRealtimeGateway의 역할, 그리고 이들 간의 데이터 흐름을 명확히 정의했습니다.
- Date: 2025-11-10
- Documents:
- Summary:
AiNodeAgent도입 및sqs-poller제거에 따른 아키텍처 변경 사항을 반영했습니다.- 개발용 AI 연산 서버의 컨테이너 설정을
AiNodeAgent중심으로 업데이트하고, 관련Dockerfile및docker-compose.yml예시를 수정했습니다. - 서비스 간 네트워크 통신 문제를 해결하기 위한
docker-compose.yml네트워크 설정을 명시했습니다.
2025-11-10
프라이빗 데이터베이스 보안 접속 방법 구축 및 문서화
- 배스천 호스트(Bastion Host) 도입: 프라이빗 서브넷에 위치한 RDS 데이터베이스에 안전하게 접속하기 위해 배스천 호스트를 도입했습니다. 이를 통해 데이터베이스의 퍼블릭 액세스를 비활성화하여 보안을 크게 강화했습니다.
- SSH 터널링을 통한 DB 연결: 관리자 및 개발자가 PgAdmin과 같은 GUI 도구를 사용하여 로컬 컴퓨터에서 배스천 호스트를 경유, SSH 터널링을 통해 프라이빗 데이터베이스에 접속하는 표준 절차를 수립했습니다。
- 문서 업데이트:
project-overview/04-infra-deployment/EKS_DEPLOYMENT.md: 배스천 호스트 생성, 보안 그룹 설정, PgAdmin SSH 터널링 설정 방법에 대한 상세 가이드를 새로운 섹션으로 추가했습니다.project-overview/03-architecture/ARCHITECTURE.md: 관리자의 데이터베이스 접근 경로를 명확히 하기 위해 아키텍처 다이어그램과 설명에 배스천 호스트를 추가했습니다.
2025-11-07
이미지 생성 페이지 기능 개선 및 문서화
-
핵심 기능 구현:
generate페이지에 사용자가 생성 과정을 더 세밀하게 제어할 수 있는 '고급 설정' 기능을 추가하고, 시스템 안정성을 위한 유효성 검사를 강화했습니다.- 프론트엔드:
Negative Prompt와Seed값(랜덤 포함)을 입력할 수 있는 UI를 구현했습니다. 또한, Seed 값이 최대치를 초과할 경우 자동으로 값을 조정하고 사용자에게 알려주는 기능을 추가했습니다. - 백엔드: API DTO(Data Transfer Object)에
class-validator를 사용하여 Seed 값이 유효한 범위 내에 있는지 검증하는 로직을 추가하여 비정상적인 요청을 차단하고 안정성을 높였습니다.
- 프론트엔드:
-
문서 업데이트:
frontend/README.md:generate페이지의 새로운 기능(고급 설정, Seed 제어, Negative Prompt)과 UX 개선 사항에 대한 설명을 추가했습니다.backend/README.md: API 안정성 강화를 위해 추가된 Seed 값 유효성 검사 로직에 대한 내용을 추가했습니다.project-overview/02-planning/ROADMAP.md: 이미지 생성 기능의 세부 항목에 '고급 설정(Seed, Negative Prompt) 기능 구현'을 추가하고 완료로 표시했습니다.
2025-11-05
워크플로우 템플릿 관리 시스템 구현 및 문서화
-
핵심 기능 구현: 관리자가 ComfyUI 워크플로우를 템플릿으로 저장하고, 사용자가 이를 기반으로 동적 파라미터를 입력하여 콘텐츠를 생성하는 시스템의 기반을 마련했습니다.
- Backend:
v1/workflowsCRUD API 및v1/generation/from-templateAPI를 구현했습니다.userInputs스키마를 통해 동적으로 워크플로우를 재구성하는 로직을 포함합니다. - Frontend:
/admin/workflows경로에 관리자용 CRUD 페이지를 구현했습니다. React Query 훅을 사용하여 API와 연동하고, 역할 기반 접근 제어를 적용했습니다.
- Backend:
-
문서 업데이트:
project-overview/02-planning/ROADMAP.md: '워크플로우 템플릿 관리' 항목을 추가하고, 관리자 기능 구현 상태를 '완료'로 업데이트했습니다.backend/API_SPEC_WORKFLOWS.md: (신규) 워크플로우 관련 백엔드 API(v1/workflows,v1/generation/from-template)의 상세 명세와userInputs스키마 구조를 설명하는 문서를 추가했습니다.frontend/ADMIN_FEATURES.md: (신규) 관리자 페이지의 기능(워크플로우 CRUD, 접근 제어)에 대해 설명하는 문서를 추가했습니다.project-overview/03-architecture/ARCHITECTURE.md: 백엔드 역할에 템플릿 관리 시스템을 반영하고, '워크플로우 템플릿 기반 생성 흐름'에 대한 상세 설명을 추가하여 아키텍처 문서를 보강했습니다.