피드로 돌아가기
Dev.toBackend
원문 읽기
의존성 제로 PHP/SQLite 기반의 고성능 미디어 스트리밍 시스템 구축
Building a Side Project with AI Pair Programming: Lessons Learned with Sharebox
AI 요약
Context
기존 미디어 서버의 과도한 오버헤드를 제거하고 가벼운 파일 공유 도구를 구현하려는 요구사항 발생. 외부 의존성 없이 PHP 8.1과 SQLite WAL 모드만으로 동작하는 초경량 시스템 설계 필요.
Technical Solution
- 디바이스 및 코덱 호환성 해결을 위해 Native, Remux, Transcode의 3단계 스트리밍 모드 설계
- ffprobe를 통한 코덱 자동 감지 및 최적의 재생 경로 결정 로직 구현
- PHP-FPM 병렬 워커의 중복 ffmpeg 프로세스 방지를 위한 flock() 기반의 파일 락킹 메커니즘 도입
- Redis 등 외부 저장소 없이 .lock 파일과 LOCK_EX | LOCK_NB 플래그를 통한 동시성 제어 구현
- MKV 자막 추출 지연 시간을 줄이기 위한 최초 요청 시 배경 추출 및 디스크 캐싱 구조 설계
- 브라우저의 빈 응답 캐싱 문제를 해결하기 위한 Cache-Control: no-cache 헤더 적용
실천 포인트
1. AI에게 솔루션을 요청하기 전 프로젝트의 기술적 제약 사항(Dependency, Resource)을 명확히 규정할 것
2. 첫 번째 제안을 그대로 수용하지 말고 대안과 한계점을 반드시 질문하여 엣지 케이스를 검토할 것
3. 기능 구현 후에는 정적 분석과 로그 확인을 통해 AI가 간과한 레이스 컨디션이나 보안 취약점을 수동으로 검증할 것