Class S 프로젝트

강의 서비스 Class S를 설계하고 운영하며 겪은 문제와 해결 과정을 남긴 빌드 로그입니다.

글 수
16
시작
2026.06.09
최근
2026.09.08
RSS

Class Project 1차 회고

개요 1차 MVP는 현재 학원 내에서 배포 중이며, 도메인 연결 후 공유할 예정입니다. 슬슬 머릿속에는 있지만 말로는 정리가 안 되는 단계에 닿은 것 같아 글로 정리합니다. Anime Search에서의 한계 지난번에 진행했던 Anime Search Project에서 장면 검색 RAG까지 구현하며 결과적으로 마음에 들지 않았던 점은, 어디까지나 기술적 호기심 해결로 끝났다는 점이었습니다. ...

Class Project 2차 회고

개요 Class Project 1차 회고를 6월 9일에 적었으니 8일 만에 진행 사항을 정리하게 되네요. 확장할 기능에 대해서 다음처럼 정리를 했죠. 개발 예정인 기능이 아직 많습니다. 실질적으로 사용자에게 가장 큰 변화를 주는 기능을 먼저 구현할 예정입니다. - 업로드가 아닌 유튜브 링크를 통한 공유 - 자유 게시판 그 후에는 테스트와 고도화를 병행할 생각이지만, 무엇보다 비용 절감에 초점을 둘 예정이죠. 고도화에서는 아래 영역에 대해서 작업이 필요하죠. - HLS 세그먼트 다수 업로드: `.ts`마다 S3 PutObject가 늘어 요청 비용이 오르는 문제 해결 - 인코딩 서버 구현: ffmpeg를 쓰지 않고 직접 인코딩 구현해서 최적화 - 멀티파트 업로드로 바이트 단위 청크 전송을 최적화 - 디스크 문제: 로컬에 원본 파일과 인코딩 파일이 동시에 존재할 때도 괜찮은지 체크 - 배포 비용 절감의 필요 테스트 및 분석 영역 - 과부하 테스트 - 큰 파일이 들어왔을 때(GB 단위) - 보안 이슈 체크 결과적으로는 다음과 같이 정리되었습니다. ...

GitHub Actions로 자동 배포 파이프라인 구축하기 (Class Project)

개요 저번 글을 작성하던 중 배포 방식을 검토하다가 개선점이 보이더군요. 현재는 수동 배포로 버전 업데이트마다 SSH(Secure Shell)로 EC2(Elastic Compute Cloud)에 접근하여 이미지를 빌드하고 실행하는 방식을 하고 있었습니다. 저번 글에서는 스팟 인스턴스를 추가함으로써 API 서버의 사양을 줄이는 것을 목표로 하고 있었는데, 이런 식으로 서버에서 이미지를 빌드한다면 필연적으로 빌드 과정을 감당할 정도의 메모리 공간이 추가로 필요하다는 점입니다. ...

Class Project 3차 회고

개요 Class Project 2차 회고를 적은 지 12일 만에 진행 사항을 정리합니다. 2차 회고 마지막 Todo는 다음과 같았습니다. 지금 당장은 배포 비용 절감이 중요합니다. 현재 EC2 온디맨드 인스턴스만으로 하루 약 $3(월 $90 전후)이 나가고 있습니다. 현재 구조에서 벗어나 Spot 인스턴스로 인코딩을 분리하고 DB를 RDS로 옮긴다고 가정하면 웹/API용 EC2 스펙을 줄일 수 있습니다. 하지만 Spot 중단 시에는 인코딩 잡 재시도가 필요하다는 점 때문에 프로세스가 복잡해지게 되고, 자연스럽게 버그가 발생할 가능성이 높아질 테니 연구가 필요합니다. 또한 현재는 원본 코덱과 관계없이 항상 transcode하도록 되어 있습니다. 이미 H.264/AAC인 영상은 -c copy로 패키징만 하도록 분기하면 인코딩 시간을 더 줄일 수 있으니 이 부분도 연구가 필요하죠. 마지막으로 도메인 붙여봐야겠군요 이번 기간에 수정의 중심은 인코딩 파이프라인 고도화와 인프라 분리였습니다. 2차까지는 단일 EC2 위에서 기능 추가와 ffmpeg 튜닝을 진행했다면, 이번에는 월 비용을 줄이는 데 집중했습니다. ※ 해당 동영상 스트리밍 사이트는 다음 주소에서 볼 수 있습니다. http://43.201.141.69 ...

AI 이미지 생성으로 영상 썸네일 자동화하기 (Class Project)

개요 최근 기업들의 공고를 보면 재밌는 공고가 AI 애니메이션 플랫폼 개발건이었습니다. 해당 공고와 더불어서 AI로 생성하는 것과 관련된 공고들이 많이 올라오더군요. 그래서 호기심에 현재 프로젝트에 AI를 녹일 부분이 없을까 고민하던 중 썸네일 기능에 이를 적용하기로 했습니다. ...

SSE로 실시간 공지 알림 기능 만들기 (Class Project)

서비스 방문자 수 부트캠프 수업을 매일 녹화하고 쉬는 시간을 기준으로 영상을 나눠 업로드한 결과, 다음과 같은 트래픽이 발생했습니다. 외부 커뮤니티에 노출한 곳은 제 개인 블로그뿐이므로 블로그나 링크드인을 통해 들어온 소수의 인원과 실제로 복습을 위해 영상을 보는 몇 사람 정도가 전부일 것으로 추측했습니다. ...

PostgreSQL로 하이브리드 검색(FTS + 벡터) 구현하기 (Class Project)

개요 처음에 강의 공유 사이트로 컨셉을 잡고 배포했던 이유에는, 동영상처럼 무거운 데이터를 다루고 싶었던 점도과 함께, 여기서 빠져나갈 갈래가 많다는 점도도 있었습니다. LLM 관련 기능을 붙이려면 콘텐츠가 필요한데, 그에 가장 잘 맞는 서비스라고 생각해 접근했습니다. ...

검색 랭킹 가중치 A/B 테스트로 검증하기 (Class Project)

개요 이전 하이브리드 검색에서는 FTS, 벡터, 조회수를 0.45 / 0.45 / 0.10으로 섞어 순위를 매겼습니다. 그 비중은 일단 동작하게 둔 값이었고, 어떤 조합이 사용자가 원하는지 알 수 없었죠. 실제 서비스에서는 A/B 테스트나 카나리 테스트로 이를 시험해 보기에, 이게 가능한 구조를 적용해 봤습니다. ...

강의 영상에 RAG 기반 질의응답 붙이기 (Class Project)

개요 이전 하이브리드 검색에서 강의 내용을 청크로 나누고 FTS와 임베딩을 쌓아 두었습니다. 이번에는 그 인덱스를 써서, 질문에 관련 구간을 찾은 뒤 LLM이 답하게 하는 RAG를 붙이려 합니다. 이유는 AWS에 Class S를 배포할 때 아마존 큐라는 서비스를 이용해서 모르는 부분과 배포 구조에 대해 조언을 받았는데, 굉장히 편하다는 인상을 받았고, 이 구조를 만드는 데 비용이 얼마나 발생할까? 그리고 그 비용을 최적화하는 데 어떻게 했을까?라는 의문에서 시작했습니다. ...

Class Project 시연

사이드 프로젝트 Class S 사이트 주소 OTT 서비스 구조를 직접 만들어보고 싶어서 진행한 사이드 프로젝트 관련해서 전체 히스토리를 보고 싶으시다면, Class Project 카테고리로 가시면 됩니다. 개요 사이드 프로젝트를 보여줄 때 직접 시연하는 걸 보여줄 수 있지만 다음과 같은 제약이 발생할 수 있죠. ...

AI로 강의 문제 자동 생성하기 (Class Project)

개요 처음 이 프로젝트를 만들 땐 단 한 명의 수강생이 있었으면 좋겠다는 생각이 들었지만, 프로젝트에 투입하는 리소스가 늘수록 좀 더 사용자의 체류 시간을 높이고 싶어졌습니다. 영상 콘텐츠를 다루면 참 좋은 게, 확장할 수 있는 기능이 참 많더군요. 이번에는 사용자에게 직접적으로 닿는 3가지 기능을 추가해봤습니다. ...

Whisper STT 비용 절감하기: VAD와 Groq API 조합 (Class Project)

개요 이전까지는 하루 강의치를 전부 올리면 대략 $1.2~$1.5 선으로 나왔습니다. 이 비용은 서버 비용까지 합친 게 아니라 오직 AI 비용이며, 하루에 4~5시간짜리 영상을 올리면 여기서 텍스트를 추출하고 임베딩하는 비용 전체를 나타내죠. 이 비용의 대부분은 오디오에서 텍스트를 추출하는 비용이었습니다. 매우 비싸게 지출되고 있었죠. ...

Postgres too many clients: gevent 상한과 사이트맵 팬아웃 (Class Project)

문제 갑자기 운영 중이던 서버에서 여러 개의 메일이 발송되어서 놀랐던 적이 있습니다. 잘 운영되다가 갑자기 새벽 시간에 이렇게 서버에서 에러가 발생한다는 게 신기했기에, 최근에 SEO를 손봐서 봇이 접근한 걸까라는 의문이 들기도 했죠. ...

다른 VOD 사이트 분석하고 얕은 DRM 붙여보기: MPEG-DASH와 Clear Key (Class Project)

개요 지금 Class 프로젝트에 회원 유료 구독제와 PG를 붙이면 이게 클래스101이고 인프런이라고 개인적으로 생각합니다. 제가 좋아하는 코딩애플 유튜버님이 자체 운영하는 유료 강좌 사이트도 마찬가지 결이죠. DRM 위에서 언급한 사이트들은 결국 돈을 받고 콘텐츠 접근을 허용하죠. 그 영상을 파일로 빼가지 못하게 막는 체계를 DRM이라고 합니다. DRM은 Digital Rights Management라 하며 사이트에서 허가된 재생만 열어 주는 콘텐츠 보호입니다. ...