기술을 이해하고,
정리합니다.

시스템·네트워크·인프라·클라우드부터 실시간 통신과 AI까지. 공부한 원리와 직접 구현하며 얻은 경험을 정리합니다.

음성 AI와 에이전트 구현 글 읽기

주제별로 읽기

궁금한 주제부터 펼쳐보세요.

전체 글

찾은 글

최신순

실시간 통신

HLS vs HTTP-FLV vs MP4 — 프로토콜과 컨테이너부터 바로잡는 스트리밍 선택 가이드

HLS, HTTP-FLV, MP4를 같은 종류의 포맷처럼 비교하면 선택 기준이 흐려집니다. HLS와 HTTP-FLV는 전달 방식이고, FLV와 MP4는 미디어를 담는 컨테이너입니다. 이 글은 HLS가 반드시 .ts만 쓰는지, HTTP-FLV가 Flash 종료와 함께 사라졌는지, 1~3초·10~30초라는 지연 수치를 어디까지 믿어야 하는지 검증하고, ABR·브라우저 호환성·CDN 확장성·실시간성에 따라 무엇을 선택할지 정리합니다.

HLSLL-HLSHTTP-FLV
14분 읽기글 읽기

실시간 통신

Stream과 RTP의 관계 — Cloud Recording 디버깅에서 헷갈리지 않는 법

stream은 논리적인 미디어 흐름이고 RTP는 그 미디어를 네트워크로 운반하는 패킷 프로토콜입니다. 하지만 WebRTC API의 MediaStream, Agora 운영 문맥의 stream, RTP의 SSRC packet stream은 같은 말이 아닙니다. 이 글은 track, stream, RTP, RTCP의 층위를 분리하고, muteLocalVideoStream, enableLocalVideo, stopPreview, leaveChannel이 Cloud Recording에서 어떻게 다르게 보이는지 검증된 기준으로 정리합니다.

WebRTCAgoraCloud Recording
12분 읽기글 읽기

실시간 통신

WebRTC 아키텍처 — Mesh, SFU, MCU, Hybrid 비교

Mesh, SFU, MCU, Hybrid의 media path와 처리 경계를 토폴로지·시퀀스 다이어그램으로 비교합니다. Mesh의 direct path에는 TURN relay 예외가 있고, SFU는 선택 전달, MCU는 서버 합성을 담당합니다. 참가자 수만으로 결론을 내리지 않고 codec·subscription·layout·region·hardware·recording 요구를 함께 검증하는 기준을 제시합니다.

WebRTCMeshSFU
16분 읽기글 읽기

실시간 통신

HLS와 DASH 비교 — 매니페스트, 세그먼트, DRM, 저지연

HLS와 DASH를 매니페스트 문법, 세그먼트 형식, ABR, DRM, 저지연 확장 기준으로 비교합니다. 두 프로토콜이 fMP4를 사용할 때 CMAF 미디어 세그먼트를 공유할 수 있는 조건과 Apple 플랫폼의 HLS 요구사항도 함께 설명합니다. LL-HLS는 HTTP/2 Push가 아니라 blocking playlist reload와 preload hint를 사용한다는 점을 현재 사양에 맞춰 정리했습니다.

HLSDASHCMAF
18분 읽기글 읽기

실시간 통신

SFU 확장 구조 — 단일 노드 용량과 Cascading

Full Mesh, 단일 SFU, 지역 간 SFU cascading, CDN 기반 방송 구조의 부하 특성을 비교합니다. SFU 용량은 참가자 수만으로 정해지지 않고 publish·subscribe 수, simulcast layer, bitrate, packet rate, 암호화, 하드웨어에 따라 달라집니다. 따라서 예시 계산은 용량 계획의 출발점으로만 사용하고 실제 트래픽 모델로 부하 시험해야 합니다.

ArchitectureSFUMCU
20분 읽기글 읽기

실시간 통신

Meta의 libwebrtc Fork 복귀 사례 — Shim을 이용한 점진적 전환

Meta가 공개한 엔지니어링 글을 기준으로 장기 유지한 libwebrtc fork를 upstream 계열로 전환한 과정을 정리합니다. 두 구현의 호출 경계를 shim으로 통제하고 use case별로 이동한 방식, fork가 보안 패치와 기능 추적에 만드는 비용, 공개된 사실과 추정을 구분하는 방법을 다룹니다.

ArchitectureMetaFacebook
16분 읽기글 읽기

실시간 통신

iOS VoIP 통합의 4-레이어 모델 — CallKit · PushKit · AVAudioSession · Agora ADM

PushKit 수신, CallKit transaction, AVAudioSession activation, RTC SDK audio module의 책임을 네 계층으로 나눕니다. `didActivate`와 `didDeactivate`, interruption·route change callback을 어떤 상태 전이에 연결할지 설명하며, channel join 시점과 audio module 제어는 사용 중인 SDK 계약에 맞춰 검증합니다.

iOSCallKitPushKit
25분 읽기글 읽기

실시간 통신

RTC 미디어 경로 해부 — RTP에서 Media Push·Cloud Recording까지

RTC 채널의 압축 프레임이 RTP로 패킷화되는 과정과 서버 측 미디어 제품이 그 흐름에 개입하는 지점을 추적합니다. Media Gateway·Media Pull·Cloud Transcoding·Media Push·Cloud Recording을 입력, 변환, 출력 기준으로 구분하고 CDN 송출과 stream fallback까지 같은 데이터 경로 위에서 설명합니다.

RTPRTCPMedia Gateway
25분 읽기글 읽기

실시간 통신

Bitrate와 화질 — 같은 해상도인데 왜 결과가 다른가

Bitrate는 해상도·frame rate·codec·장면 복잡도와 함께 압축 화질을 좌우합니다. 이 글은 송출 설정, 네트워크 적응, Cloud Recording 출력 설정을 구분하고 `ffprobe`로 실제 결과를 측정하는 절차를 설명합니다. 출력 bitrate를 높여도 원본에서 이미 잃은 디테일은 복원되지 않으므로 실제 콘텐츠로 품질을 비교해야 합니다.

BitrateCloud RecordingHLS
12분 읽기글 읽기

실시간 통신

FFmpeg 실전 파이프라인 — Agora 녹화에서 프로덕션 VOD까지

연재

Individual recording 결과를 참가자별 VOD나 하나의 composite 화면으로 후처리하는 FFmpeg 파이프라인을 설명합니다. M3U8과 TS를 점검하고 기록된 track의 시작 시각을 맞춘 뒤, audio-only·video-only 입력과 참가자 수를 검증해 레이아웃을 구성합니다. 입력값 제한, 경로 검증, 실패 복구를 포함한 자동화 기준도 함께 다룹니다.

FFmpegCloud Recordingfilter_complex
15분 읽기글 읽기

실시간 통신

FFmpeg 미디어 처리 — 컨테이너, 코덱, 스트림

연재

FFmpeg에서 컨테이너, 코덱, 스트림을 구분하고 probe·demux·decode·filter·encode·mux 단계가 어떻게 연결되는지 설명합니다. `-c copy`는 입력 코덱과 출력 컨테이너, timestamp와 keyframe 조건이 맞을 때만 안전합니다. remux, transcoding, stream mapping, seek, concat을 선택하는 기준을 실제 명령으로 정리했습니다.

FFmpegCodecContainer
14분 읽기글 읽기

실시간 통신

Agora 녹화 모드 비교 — Individual, Composite, Web page

연재

Individual, Composite(`mix`), Web page recording의 출력과 처리 범위를 비교합니다. Individual은 참가자별 track 후처리에, Composite는 서버 합성과 고정 레이아웃 출력에, Web page recording은 웹 화면 캡처에 맞습니다. 과금은 모드 이름이 아니라 스트림 수·시간·합산 해상도 등 공식 가격 기준으로 확인해야 합니다.

Cloud RecordingIndividualComposite
12분 읽기글 읽기

실시간 통신

실시간 통화, 왜 녹화해야 하는가 — Cloud Recording Architecture

연재

WebRTC는 미디어 저장 방식을 정의하지 않으므로 녹화가 필요하면 별도 파이프라인을 설계해야 합니다. 이 글은 브라우저 `MediaRecorder`, 자체 미디어 서버, Agora Cloud Recording의 통제 범위와 운영 부담을 비교합니다. Cloud Recording의 non-streaming client 모델, `acquire → start → query → stop` 수명주기, REST 인증과 RTC token의 역할도 구분합니다.

Cloud RecordingArchitectureNon-streaming Client
10분 읽기글 읽기

© 2026 Frank Kim. 배우고 실험한 것을 기록합니다.