기술 블로그
실무에서 직접 설계·운영한 백엔드 시스템과 의사결정 기록. Go·Java/Spring·PostgreSQL·Kubernetes 기반의 분산 시스템 패턴, 음성 AI 파이프라인(WebRTC·STT·LLM·TTS)의 latency·동시성 트레이드오프, OCR/문서 탐지 모델의 평가 지표(F1·Precision·Recall) 적용기 등을 다룹니다. 모든 글은 본인이 직접 운영하며 측정한 1차 데이터에서 출발합니다.
-
GKE 인프라 학습(7) ArgoCD
이 글은 개인 GCP 학습 트랙의 마지막 단계 — (7) ArgoCD 도입과 결정 회고 의 기록이다. 회사 시스템과 무관한 개인 학습. 결과부터 한 줄 spoiler:…
-
GKE 인프라 학습(4-1) K8S를 GKE와 연결
이 글은 개인 GCP 계정으로 K8s/GKE/GitHub Actions/ArgoCD 를 직접 띄워본 인프라 학습 시리즈 중 (4-1) Kubernetes 클러스터를 GKE 에 연결하는 단계 의 기록이다. 회사 시스템과…
-
[WebRTC 디버깅] ‘끊긴다’ 현상이 보일 때 보는 5가지
결론 먼저 — 5축 체크리스트 축 본다 도구 1. ICE 상태 iceConnectionState 천이 로그 chrome://webrtc-internals 2. 네트워크 품질 RTT, jitter, packet loss getStats() 3. 디바이스…
-
[hub] AI 음성 상담 시스템 — WebRTC + STT + LLM + TTS 전체 가이드 (10편 인덱스 + 9개월 운영 요약)
WebRTC·STT·LLM·TTS 4축 파이프라인을 처음부터 끝까지 — 9개월 운영하며 쓴 10편의 글을 한 페이지 인덱스로. 처음 보는 분을 위한 학습 순서 + 각 컴포넌트의 의사결정 +…
-
[Google STT] 실시간 음성 → 텍스트 — 음성 turn에서의 스트리밍 패턴
결론 먼저 — interim_results=true 없이는 음성 UX가 깨진다 옵션 설정 영향 API 종류 StreamingRecognize partial result 수신 가능 interim_results true 발화 중 실시간 텍스트 single_utterance…
-
[Gemini] 2.0 Flash를 고른 이유 — 음성 상담의 응답 속도 vs 품질
결론 먼저 — 음성 상담에서 latency는 품질이다 축 Pro 계열 Flash 계열 응답 latency (체감) 높음 낮음 긴 문맥 (32k+) 추론 품질 우수 충분 function…
-
[설계 판단] 1:1 AI 음성 상담을 위해 SFU를 ‘Dumb Pipe’로 둔 이유
결론 먼저 — 1:1 음성 상담의 미디어 토폴로지 비교 토폴로지 서버 CPU 대역폭 지연 구현 복잡도 1:1 상담 적합성 P2P (Mesh) 0 매우 낮음 최저…
-
[Pion] ForwardTrack 루프 — 미디어를 흘려보내는 가장 짧은 코드
결론 먼저 — 미디어 forward의 본질은 한 루프다 항목 값 핵심 코드 라인 수 ~10줄 Track 타입 TrackLocalStaticRTP 패킷 단위 RTP 패킷 (재인코딩 없음) 고루틴…
-
[WebRTC] STUN과 TURN, 언제 무엇을 — NAT 종류 × 성공률 매트릭스
결론 먼저 — Symmetric NAT가 양쪽이면 STUN은 0%다 A 측 NAT B 측 NAT STUN만으로 P2P 가능? fallback 필요 Full Cone 아무거나 O — Restricted…
-
[설계 판단] 서비스 분리는 비즈니스 도메인 중심으로 해야 한다
결론 먼저 서비스 분리는 비즈니스 도메인에 따라 수행하는 것이 적합하다. 이는 각 서비스가 특정 도메인에 집중할 수 있게 해주며, 서비스 간 의존성을 낮추는 장점이 있다.…