Claude를 사용해 넷플릭스 스타일의 미디어 서버 앱을 만들었습니다. 전체 용량이 15MB밖에 안 돼요 🤯
I built a Netflix-style app for my media server with Claude. The whole thing is 15 MB 🤯
핵심 요약
Claude를 활용해 기존 미디어 서버 앱들을 대체할 15MB 초경량 통합 앱 'HolyArrs'를 개발했습니다.
- 초경량 설계 — 기존 6개 앱을 대체하며 15MB 용량과 70MB RAM 사용량 달성함
- Claude 활용 — 코드 작성 시 엄격한 메모리 제한과 성능 테스트를 통해 최적화함
- 모듈형 모놀리스 — 각 기능을 모듈화하여 유닉스 철학을 유지하면서도 통합된 환경 제공함
- 성능 검증 — 12,800개 라이브러리 환경에서 메모리 사용량을 250MB 이하로 엄격히 제한함
홈 미디어 서버 돌리는 놈들이라면 아마 sonarr, radarr, lidarr, bazarr, prowlarr, seerr 다 깔려 있을 거다. 앱이 무려 6개나 되는데, 각각 돌아가려고 그 안에 지들만의 작은 운영체제를 하나씩 다 처박아 놨음. sonarr랑 radarr는 아무것도 안 해도 램을 110~140MB씩이나 처먹고 앉아 있고.
그래서 그냥 넷플릭스처럼 깔끔하게 다 되는 앱 하나 만들고 싶어서 holyarrs를 직접 짰다. 다운로드 용량은 15MB 정도고, 영화랑 쇼 12,800개 넣어놔도 램은 70MB 정도밖에 안 먹음.
.buffering-track-fill { stroke-dasharray: 100; stroke-dashoffset: 50; }
디자인은 내가 하고 코드는 Claude 도움받아서 짰음. 근데 짜면서 바로 깨달은 게, Claude 이 새끼는 용량 같은 건 좆도 신경 안 쓴다는 거임. 냅두면 뭐든 점점 무거워짐. 그래서 용량 가볍게 유지하려고 내가 한 짓들이다:
코딩 시작하기 전에 제한부터 걸어버림. 유휴 상태에서 램 얼마나 쓸지, 시작 속도는 얼마나 빠를지, 전체 용량은 얼마나 될지. 모든 기능은 이 틀 안에서만 돌아가게 만들었음.
추측하지 말고 무조건 테스트함. 홈 화면(포스터 10,000개)을 두 가지 방식으로 짜서 다 측정해 봤거든. 하나가 3배는 더 가볍고 화면 뜨는 속도도 2배 빠르길래 바로 그걸로 갈아탔음.
박스 안에 운영체제 같은 거 안 넣음. 웹 앱이 내장된 프로그램 딱 하나고 나머진 아무것도 없음. 이게 용량 차이의 핵심이고, 공격자가 파고들 구석도 없다는 소리임.
무거워지면 바로 컷하는 체크 로직 넣음. 라이브러리 12,800개 돌리면서 유휴 램 사용량이 250MB 넘어가면 바로 에러 뱉게 해놨음. 체크 로직 넣기 전까진 Claude가 자꾸 선 넘으려고 했는데, 이제는 70MB 정도로 잘 버팀. 작업 중에 강제로 죽였다가 2초 안에 복구 안 되면 실패 처리하는 로직도 있는데, 이건 0.5초 만에 다시 살아남.
기능 추가해도 이 메모리 체크 로직은 그대로 남겨둘 거라, 뭐 하나 추가해서 무거워지면 아예 배포 자체가 안 되게 막아놨음.
돌아가는 영상이랑 전체 로드맵은 여기서 봐라: holyarrs.coderluii.dev

