피드로 돌아가기
Concurrent Video Processing with Go Goroutines
Dev.toDev.to
Backend

Go Goroutines 도입으로 비디오 처리 시간을 32초에서 3.8초로 88% 단축

Concurrent Video Processing with Go Goroutines

ahmet gedik2026년 4월 14일6intermediate

Context

8개 지역의 비디오 메타데이터를 순차적으로 처리함에 따른 높은 지연 시간 발생. 400개 비디오 처리 시 30초 이상의 소요 시간이 걸리는 병목 지점 확인.

Technical Solution

  • Worker Pool Pattern 도입을 통한 배치 처리 효율화 및 리소스 사용 최적화
  • Channel 기반의 Job 분산 및 Result 수집 구조를 통한 Data Race 방지
  • Ticker 기반 Rate Limiter 설계를 통한 외부 API 요청 속도 제어 및 쿼터 준수
  • Context Cancellation 적용으로 불필요한 고루틴 실행 중단 및 리소스 낭비 방지
  • errgroup.SetLimit(3) 설정을 통한 동시성 수준 제한 및 체계적인 에러 전파 구조 구축
  • sync.Mutex를 활용한 Shared Map 접근 제어로 스레드 안전한 결과 집계 구현

1. 외부 API 연동 시 Ticker를 이용한 Rate Limiting 구현 여부 확인

2. 고루틴 생명주기 관리를 위해 Context 전파 및 취소 로직 포함 여부 검토

3. 동시성 제어 시 단순 고루틴 생성보다 errgroup.SetLimit을 통한 동시 실행 수 제한 고려

원문 읽기