Meloming

Build in public

멜로밍 기술 블로그

크리에이터와 팬을 잇는 서비스를 만들며 마주한 기술적 도전, 노래책 서비스의 노하우, 그리고 실제 운영에서 배운 것을 공유합니다.

meloming 8 postmortem 5 backend 4 devops 4 kubernetes 3 go 3 realtime 3 architecture 3 meloming-ranking 2 clickhouse 2 onprem 2 reliability 2 llm 2 ai 2 aws 2 terraform 2 pipeline 1 stt 1 ffmpeg 1 nlp 1 mecab 1 python 1 batch 1 infrastructure 1 cdn 1 websocket 1 keda 1 karpenter 1 spot-instance 1 matching 1 web-audio 1 frontend 1 audio 1 dsp 1 redis 1 postgresql 1 k3s 1 s3 1 vault 1 announcement 1
kubernetes ·

노래클립 자동생성 파이프라인 - 방송 녹화, STT, Agent 판정

라이브 방송을 녹화해 신청곡 한 곡 구간만 클립으로 만드는 파이프라인입니다. 파드 하나가 축출되며 녹화 4건이 사라진 사고, Kubernetes Job으로 옮기자 이어하기가 따라온 과정, 가사와 STT를 겹쳐 경계를 찾는 알고리즘, 그리고 클립이 0개가 된 날 드러난 네 겹의 원인을 실제 코드와 수치로 정리합니다.

조현우 조현우 62 min read
meloming-ranking ·

방송에서 가장 많이 나온 단어는? : NLP를 활용한 채팅 워드클라우드

라이브 채팅을 형태소 분석해 워드클라우드로 만들면서 정한 것들. 무엇을 단어로 셀지, 집계 창을 어떻게 고정할지, 절반만 계산된 결과를 어떻게 감출지에 대한 기록입니다.

조현우 조현우 24 min read
go ·

채팅 키워드알림 서비스 - 멀티테넌트 키워드 알림

라이브 채팅 firehose 한 줄이 조직별 키워드에 걸려 Slack, Discord, 앱 푸시로 나가고 ClickHouse에 남기까지를 실제 코드로 따라갑니다. 단일 테넌트로 태어난 Go 서비스가 조직, 그룹, 채널 3층 구조를 얻는 동안 무엇을 바꾸고 무엇을 그대로 뒀는지 정리합니다.

조현우 조현우 75 min read
infrastructure ·

유튜브 임베드를 벗어나 직접 재생하기 : 광고 없이 video 태그로 유튜브 영상 서빙하기

노래책 콘솔에서 YouTube 반주 영상을 직접 재생하려고 만든 게이트웨이입니다. 추출과 다운로드를 한 노드에 묶어야 했던 이유, 출구 IP가 통째로 차단됐던 사고, 일관 해시로 singleflight를 살린 방법, 캐시 히트를 CloudFront로 넘긴 구조를 실제 코드와 설정으로 정리합니다.

조현우 조현우 52 min read
go ·

SOOP, 치지직, 씨미 채팅 수집 커넥터로 12,000개 방송 채팅 수집하기

치지직, SOOP, 씨미 세 곳에서 수천 개의 채팅 WebSocket을 동시에 유지하며 만난 문제입니다. 두 겹 keepalive가 각각 다른 죽음을 잡는 이유, 68,248번의 Ping/Pong 측정이 상수를 정한 과정, 공유 출구 IP 하나가 만든 P0 인시던트를 코드와 함께 정리합니다.

조현우 조현우 49 min read
kubernetes ·

라이브 스트리밍 채팅 수집 시스템을 KEDA와 Karpenter로 확장한 방법

수집 채널 수를 KEDA의 확장 신호로 바꾸고, Karpenter와 Spot Instance로 필요한 Worker와 노드를 공급하며 만든 운영 원칙을 공유합니다.

조현우 조현우 15 min read
llm ·

노래 제목과 Musixmatch 트랙 매칭하기 - LLM Agent와 HITL(Human-in-the-Loop)

결정론적 매칭이 회수하지 못한 3,067곡을 LLM 에이전트 배치로 되찾았습니다. 죽어 있던 상한, 서버 안의 HTTP 클라이언트가 된 도구, 리스 기반 멱등성, 회수율 게이트, 그리고 에이전트가 물러선 곡을 사람이 확정하는 검수 대기열까지 실제 코드와 실제 수치로 정리합니다.

조현우 조현우 45 min read
llm ·

!신청 사랑하긴 그 긴거 : 개떡같이 말해도 찰떡같이 알아듣는 LLM 기반 신청곡 매칭 로직

라이브 채팅의 신청곡 한 줄을 스트리머 노래책의 곡으로 매칭하는 파이프라인 전체를 코드 수준으로 정리합니다. 어떤 메시지를 신청으로 볼지 가르는 티어 분류기의 실제 상수부터 10단계 결정론적 캐스케이드, 자모 단위 fuzzy, 프롬프트 캐싱을 건 LLM 판정과 환각 차단까지 다룹니다.

조현우 조현우 66 min read
web-audio ·

확장 프로그램 없이 브라우저에서 영상 키 조절하기

노래책 콘솔의 실시간 키 조절을 Web Audio로 구현한 기록입니다. 위상 보코더에서 WSOLA로 갈아타기까지 지나간 오진 세 건, 0 반음에서 물리적으로 우회해야 했던 이유, WSOLA 파라미터가 실제로 만들어내는 100ms대 지연까지 코드와 함께 정리합니다.

조현우 조현우 48 min read
meloming-ranking ·

멜로밍 랭킹 - SOOP, 치지직, 씨미 채팅 수집 및 처리 아키텍처

SOOP·치지직·씨미의 방송과 채팅을 공통 이벤트로 정규화하고, PostgreSQL·Redis Streams·ClickHouse로 분리해 멜로밍 랭킹까지 연결한 아키텍처를 소개합니다.

조현우 조현우 11 min read