0개의 글
JoyMini 이중 클라우드 저장소 아키텍처의 실전 경험을 바탕으로, "Featured image upload failed: network error"부터 S3 버킷에 CORS 설정이 누락된 것을 찾아내기까지의 디버깅 과정을 완전히 기록했습니다. 여기에는 브라우저 사전 요청(preflight) 메커니즘 분석, CLI 즉시 수정, CDK 영구 설정, 그리고 R2와 S3의 CORS 동작 차이점이 포함됩니다.
基于 JoyMini 真实项目经验,深入解析 S3 到 Cloudflare R2 跨云灾备同步系统的完整架构设计,包括 SQS 实时事件驱动管道、Lambda 并发流式优化、ETag 增量检测、DLQ+SNS 失败通知机制,以及 AWS CDK 基础设施即代码的最佳实践。
JoyMini 프로젝트의 실제 경험을 바탕으로 ECS Fargate 컨테이너 배포, ALB + ACM 도메인 연결, S3 + CloudFront OAC 이미지 저장소, CDK 인프라스트럭처 코드, GitHub Actions CI/CD 자동화 파이프라인을 포함한 AWS 클라우드 인프라 구축의 전체 실전 과정을 체계적으로 정리합니다.
본 문서는 R2 Multipart Upload 분할 업로드의 기술적 솔루션 선정, 백엔드 아키텍처 설계(Redis 세션 관리 + 사전 서명된 분할 URL), 프론트엔드 FileChunkedUploader 유틸리티 클래스 구현, 그리고 기존 사전 서명된 직접 업로드 방식과의 비교를 심층 분석합니다.
Flutter 파일 업로드 시스템으로, S3 사전 서명 URL 직접 업로드, 매직 넘버 기반 MIME 타입 감지, 압축 파이프라인, 동시성 제한 업로드 큐, 지수 백오프 재시도, 대용량 파일 분할 업로드 및 실시간 진행 상황 추적을 지원합니다.
JoyMini API의 파일 업로드 시스템은 Cloudflare R2 S3 객체 스토리지와 BullMQ 비동기 큐를 기반으로 하며, 이미지 압축(Sharp), 비디오 HLS 트랜스코딩(FFmpeg) 및 BlurHash 생성을 포함한 완전한 미디어 처리 파이프라인을 제공합니다.
NestJS UploadService (Cloudflare R2 이중 버킷 전략) → Flutter GlobalUploadService (사전 서명 URL 직접 전송, 매직 넘버 MIME 보정, 압축 파이프라인) → admin-next HttpClient.upload (미디어 업로드 및 CDN 처리)