2026년 2월 변경 이력
2026-02-13 (금)
🧹 API 버전 정합성 및 문서 기준선 정리
운영 코드/문서의 일관성을 높이기 위해 API 경로 표준화와 레거시 문서/설정 정리를 수행했습니다.
1. API 경로 표준화
- 미사용 테스트 API 제거: 백엔드의
/api/test/*엔드포인트 및 관련TestModule을 제거했습니다. - v1 접두사 정렬:
personas및admin/warmupAPI를/api/v1기준으로 통일했습니다. - 프론트 호출 동기화: 프론트엔드 API 클라이언트가 변경된
/v1/personas,/v1/admin/warmup/*경로를 사용하도록 반영했습니다.
2. 인증 기준 정리
- Web3 nonce 인증 문서 제거: 더 이상 사용하지 않는 nonce/서명 인증 문서(
AUTH_FLOW.md,API_SPEC_AUTH.md)를 삭제했습니다. - 인증 설명 최신화: 활성 문서의 인증 설명을 이메일/비밀번호 + JWT(Access/Refresh) 체계 기준으로 정리했습니다.
3. 설정 및 명령 표준화
- LocalStack 의존성 정리:
backend-vivid-ai/env.example에서 LocalStack URL 및 테스트 큐 설정을 제거했습니다. - 로컬 실행 명령 통일: 온보딩/서비스 README의 실행 명령을
npm run start기준으로 표준화했습니다.
4. 네이밍 정합성 개선
- 운영 문서 명칭 통일: 운영 문서 전반의
autopromaker-*표기를vivid-ai-*로 치환하여 현재 리소스 명명 규칙과 일치시켰습니다.
2026-02-12 (목)
🎨 서비스 철학 확립 및 '모음(Collection)' 기능 설계
플랫폼의 지속 가능성과 사용자 경험의 일관성을 위해 데이터 생명주기 철학을 명문화하고, '모음' 기능을 위한 설계를 확정했습니다.
1. 독립적 스냅샷 모델(Independent Snapshot Model) 확립
- 데이터 소유권 정의: 원본(
Creation)을 삭제하더라도 이미 공유된 게시물(Post)이나 타인이 보관함에 담은(Collection) 아이템은 시스템에서 삭제되지 않고 유지됩니다. - S3 관리 정책: 물리적 데이터는 해당 결과물을 참조하는 서비스 레코드가 하나라도 존재할 때까지 영구히 보관하며, 참조가 모두 사라진 시점에만 물리적으로 삭제합니다.
2. API 설계 원칙: 멱등성(Idempotency) 강화
- 행위 기반 분리: 기존의 전환(Toggle) 방식 대신 명확한 행위 기반 API(
Pin/Unpin,Like/Unlike)를 도입하여 네트워크 불안정 상황에서도 데이터 정합성을 보장합니다.
3. 프로필 및 설정 기능 고도화
- 프라이버시 설정: 사용자 엔티티에
isCreationsPublic,isPinsPublic,isLikesPublic필드를 추가하여 유저가 직접 탭별 노출 여부를 제어할 수 있도록 했습니다. - 설정 페이지(Settings) 구축: 미니멀한 에디토리얼 디자인을 적용한 설정 페이지를 통해 프로필 정보(Username, Bio) 및 프라이버시 옵션을 수정할 수 있게 구현했습니다.
- 성능 최적화: Redis 캐싱을 도입하여 반복적인 프로필 조회 요청 시 DB 부하를 최소화했습니다.
4. UI/UX 정교화
- 탭 상태 보존: URL Query Parameter를 유일한 상태 공급원(SSoT)으로 활용하여 상세 모달 내비게이션 시에도 탭 정보가 유실되지 않도록 개선했습니다.
- 상황별 UI 분기: 공유되지 않은 생성물에 대해서는 불필요한 '좋아요' UI를 제거하고 '모으기'와 '게시'에 집중하도록 UI를 정제했습니다.
2026-02-06 (금)
🛠 데이터 처리 효율화 및 무한 스크롤링 표준화
프로젝트의 확장성과 성능 최적화를 위해 페이지네이션 및 무한 스크롤링 아키텍처를 표준화하고 관련 문서를 작성했습니다.
1. 아키텍처 표준화 및 문서화
- 표준 가이드 작성:
PAGINATION_AND_INFINITE_SCROLL.md문서를 통해 백엔드(NestJS)와 프론트엔드(Next.js) 간의 페이징 데이터 통신 규격을 정의했습니다. - 공통 인터페이스 정의:
PaginatedResult<T>(백엔드) 및PaginatedResponse<T>(프론트엔드) 형식을 통해 모든 리스트 API의 일관성을 확보했습니다.
2. 주요 기능 개선
- Creations API 최적화: 사용자의 생성물 목록 조회 시 전체 데이터를 한 번에 가져오던 방식에서 페이징 방식(
page,limit)으로 전환했습니다. - Admin & Gallery 무한 스크롤 도입:
- 관리자 생성물 리스트(
AdminCreationList)에 가상 스크롤과 연동된 무한 스크롤을 적용했습니다. - 갤러리(
My Creations) 탭에IntersectionObserver기반의 무한 스크롤을 적용하여 데이터 로딩 성능을 개선했습니다.
- 관리자 생성물 리스트(
- TypeScript 안정성 강화:
any타입을 제거하고 중앙화된Creation타입을 사용하여 데이터 모델의 신뢰도를 높였습니다.
3. 관리자 상세 페이지 UX 개선
- Intercepting Routes 도입:
/admin/generate/[id]경로를 추가하고, 목록에서 클릭 시 모달로 열리도록 구현하여 리스트의 스크롤 위치와 상태를 보존했습니다. - 공통 상세 컴포넌트 활용: 일반 사용자와 관리자가 동일한 상세 보기 UI(
PersonaDetail)를 공유하도록 리팩토링했습니다.
2026-02-02 (월)
🚀 새로운 Production 환경 인프라 구축 및 자동 배포 시스템 도입
새로운 AWS Prod 계정(234657229332)으로의 이전과 함께 현대적인 CI/CD 및 보안 아키텍처를 도입했습니다.
1. 보안 및 인증 아키텍처 (OIDC & IRSA)
- GitHub Actions OIDC 도입: AWS Access Key 사용을 지양하고, GitHub Actions가 OpenID Connect를 통해 안전하게 AWS 역할을 수락(AssumeRole)하도록 구성했습니다.
- IRSA (IAM Roles for Service Accounts) 적용: EKS 파드들이 각자의 IAM 역할을 사용하여 S3, SQS 등 AWS 리소스에 최소 권한 원칙으로 접근하도록 설정했습니다. (
backend-sa-prod,post-processing-worker-sa-prod)
2. 배포 자동화 (CI/CD)
- 전 서비스 자동 배포 구축: Backend, Frontend, Post-processing Worker에 대해 GitHub Actions를 통한 자동 배포 파이프라인을 완성했습니다.
latest태그 전략: 수동 실행(workflow_dispatch) 시latest태그로 배포하며, 쿠버네티스 롤아웃 재시작(rollout restart)을 통해 즉각적인 업데이트가 반영되도록 구현했습니다.- 통합 시크릿 관리: 서비스별로 흩어져 있던 시크릿을
vivid-ai-secret-prod하나로 통합하고,stringData방식을 사용하여 관리 효율성을 높였습니다.
3. 서비스별 주요 수정 사항
- Frontend: 빌드 시 컴파일 에러 해결을 위해 Dockerfile에 Python 및 빌드 도구 추가, 새로운 Prod용 S3 버킷 설정 반영.
- Backend: AWS ElastiCache(Valkey) 도입에 따른 Redis 모듈 인증 로직 보강 및 TLS/SNI 설정 추가.
- Worker: 데비안 미러 서버를 CloudFront로 변경하여 패키지 설치 속도 및 안정성 확보.
4. 네트워크 및 도메인
- ALB 컨트롤러 복구: LBC 권한 문제 및 서브넷 태깅 문제를 해결하여 로드밸런서 자동 생성을 정상화했습니다.
- 임시 접속 주소: 도메인(
vivid.place) 이전 전까지 ALB 임시 엔드포인트를 통해 서비스 접근이 가능하도록 Ingress를 구성했습니다.