Skip to content

Latest commit

 

History

History
244 lines (168 loc) · 6.93 KB

File metadata and controls

244 lines (168 loc) · 6.93 KB

Changelog

All notable changes to Snapkit Asset Transform will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[2.2.0] - 2025-01-08

✨ Added - Video Basic Transform Features

기본 비디오 변환 기능 추가로 v2.0에서 제거되었던 일부 기능 복원.

새로운 파라미터 (6개):

  • width - 비디오 너비 조정 (픽셀)
  • height - 비디오 높이 조정 (픽셀)
  • crop - 비디오 크롭 (형식: w:h:x:y)
  • flip - 좌우/상하 반전 (h, v, horizontal, vertical)
  • rotate - 회전 (90, 180, 270)
  • fps - 프레임레이트 조정 (1-60)

구현 세부사항:

  • FFmpeg 필터 체인 구성으로 효율적 처리
  • 메모리 효율적 설계 (t3a.medium에서 안정적 처리)
  • 복합 변환 지원 (예: width:1280,height:720,flip:h,rotate:90)

성능 영향:

  • CPU 부하: +10-20% (허용 범위)
  • 대역폭 절감: 리사이징 시 50-70% 파일 크기 감소
  • 메모리: 기존과 동일 수준 유지

테스트 커버리지:

  • 신규 테스트 31개 추가
    • ffmpeg.util.test.ts: 15개
    • video-transform-parser.test.ts: 16개
  • 전체 테스트: 897개 통과

문서:

Breaking Changes:

  • ❌ 없음 (기존 기능 모두 유지)

[2.0.0] - 2025-01-XX

🚨 Breaking Changes

Video Transform: DEEP → SHALLOW

Removed Features (11 parameters):

  • resolution - 해상도 프리셋 (1080p, 720p, 480p, 360p)
  • width, height - 커스텀 크기 조정
  • codec - 코덱 선택 (h264, h265, vp9, av1)
  • fps - 프레임레이트 조정
  • quality - 품질 세밀 조정 (CRF 1-100)
  • bitrate - 비트레이트 세밀 조정
  • start, end, duration - 시간 범위 편집
  • thumbnailTime - 썸네일 시간 (thumbnail으로 통합)

Simplified Features (3 parameters only):

  • format - 웹 호환 포맷만 (mp4, webm)
  • thumbnail - 썸네일/포스터 추출
  • preview - 애니메이션 프리뷰 생성 (신규)

Impact:

  • 코드 복잡도 63% 감소 (1,296 lines → 480 lines)
  • API 표면적 79% 축소 (14 parameters → 3 parameters)
  • 테스트 복잡도 75% 감소 (413 lines → 216 lines)

Migration: See docs/VIDEO_MIGRATION_GUIDE.md

Rationale:

  • 복잡도 감소 및 유지보수성 향상
  • 리소스 사용 예측 가능성 개선
  • Shallow Features 전략으로 필수 기능에 집중

🔧 Changed - Dependency Management

FFmpeg 버전 고정

변경 내용:

  • FFmpeg 버전을 6.1.2-r2로 명시적 고정
  • Dockerfile의 builder와 runner 단계 모두 적용
  • Alpine Linux 3.22.2 안정 버전 사용

Before:

RUN apk add --no-cache ffmpeg

After:

# 버전 고정: 6.1.2-r2 (Alpine 3.22 안정 버전)
RUN apk add --no-cache ffmpeg=6.1.2-r2

Benefits:

  • ✅ 재현 가능한 빌드 보장
  • ✅ 예기치 않은 버전 업데이트로 인한 장애 방지
  • ✅ 프로덕션 환경 안정성 향상
  • ✅ 디버깅 및 문제 추적 용이

Technical Details:

  • Alpine package: ffmpeg=6.1.2-r2
  • FFmpeg 공식 최신 버전: 8.0 (Alpine에서는 검증된 6.1.2 사용)
  • 버전 정보: ffmpeg version 6.1.2 Copyright (c) 2000-2024
  • 설치 위치: /usr/bin/ffmpeg

⏸️ Changed - Model Transform

Disabled (code preserved for future):

  • Model Transform 모듈 비활성화
  • 파싱 로직은 유지, 변환 로직 미구현
  • 라우팅에서 제외됨

Reason: 실제 사용 사례 없음, 구현 복잡도 높음, 리소스 집약적

Future: 비즈니스 요구사항 발생 시 재활성화 고려


✅ Added

FFmpeg Installation

  • ✅ Dockerfile에 FFmpeg 설치 추가 (builder, runner 스테이지)
  • ✅ README에 FFmpeg 설치 가이드 추가 (macOS, Ubuntu, Windows)

Video Transform - New Feature

  • preview 파라미터 추가: 짧은 애니메이션 프리뷰 생성 (hover 효과용)
    • 기본 3초 프리뷰
    • 1-10초 범위 커스텀 가능
    • 작은 파일 크기 (320px 너비, 오디오 없음)

Documentation

  • docs/VIDEO_MIGRATION_GUIDE.md 신규 작성
    • v1 → v2 마이그레이션 가이드
    • 파라미터별 대안 제시
    • 시나리오별 마이그레이션 예시
  • docs/CDN_TRANSFORM_REFERENCE.md Video 섹션 전면 개편
    • Shallow Features 철학 명시
    • 3가지 기능만 문서화
    • 제거된 기능 및 대안 표 추가
  • src/cdn/model/README.md 신규 작성
    • 비활성화 이유 설명
    • 향후 활성화 계획
    • 참고 자료

🔧 Technical Details

Code Changes

  • video-transform.types.ts: 14개 → 3개 파라미터로 간소화
  • ffmpeg.util.ts:
    • 제거: 7개 비디오 전용 함수
    • 추가: getPreviewArgs() 함수
    • 수정: getVideoFormatArgs() mp4/webm만 지원
  • video.service.ts: 285줄 → 208줄 (27% 감소)
    • 복잡한 파라미터 우선순위 로직 제거
    • 3가지 기능만 처리: 썸네일, 프리뷰, 트랜스코딩
  • video-transform-parser.ts: 209줄 → 109줄 (48% 감소)
    • 3개 파라미터 파싱만
  • video-transform-parser.test.ts: 413줄 → 216줄 (48% 감소)
    • 간소화된 테스트 케이스

Infrastructure

  • Dockerfile: FFmpeg 설치 명령 추가 (Alpine apk)
  • cdn.module.ts: ModelModule import/export 주석 처리

📊 Impact Summary

항목 Before (v1) After (v2) 변화
파라미터 개수 14개 3개 📉 79% 감소
코드 라인 1,296 480 📉 63% 감소
FFmpeg 함수 15개 4개 📉 73% 감소
테스트 라인 413 216 📉 48% 감소
지원 포맷 7개 2개 📉 71% 감소
기능 범위 전문 편집 필수만 🎯 집중
유지보수 높음 낮음 ✅ 개선

🔗 References


[1.0.0] - 2025-01-04

Added

  • Initial release with CDN multi-resource architecture
  • Image, Video, Audio, Document, Font, Icon, Lottie, Model transform support
  • ResourceProcessor interface for unified resource handling
  • S3 integration with CloudFront CDN
  • FFmpeg-based video/audio transformation
  • Sharp-based image optimization

Legend:

  • 🚨 Breaking Changes
  • ✅ Added
  • 🔧 Changed
  • ⏸️ Deprecated
  • ❌ Removed
  • 🔒 Security
  • 🐛 Fixed