Go

동시성 패턴

Worker pool, pipeline, fan-out/fan-in, 취소, context, errgroup, 세마포어

24 면접 질문·
Mid-Level
1

Go에서 worker pool이란 무엇인가요?

답변

worker pool은 고정된 수의 goroutine(worker)을 사용하여 공유 channel에서 오는 작업을 처리하는 동시성 패턴입니다. 이 패턴을 사용하면 활성 goroutine 수를 제한하고 시스템 리소스 소비를 제어할 수 있습니다. 작업마다 goroutine을 하나씩 생성하는 것과 달리, worker pool은 일련의 worker를 재사용하여 대량의 작업을 효율적으로 처리합니다.

2

작업마다 goroutine을 생성하는 대신 worker pool을 사용하는 주된 이점은 무엇인가요?

답변

활성 goroutine 수를 제한하면 시스템 리소스(메모리와 CPU) 소비를 제어하고 과부하를 방지할 수 있습니다. 작업마다 goroutine을 생성하면 수천 또는 수백만 개의 동시 goroutine이 발생하여 scheduler를 포화시키고 메모리를 고갈시킬 수 있습니다. worker pool은 최적의 worker 수를 유지하며 작업을 순차적으로 처리하여 높은 부하에서도 예측 가능한 성능을 보장합니다.

3

Go의 동시성 맥락에서 pipeline이란 무엇인가요?

답변

pipeline은 channel로 연결된 일련의 단계(stage)이며, 각 단계는 동일한 함수를 실행하는 goroutine 그룹입니다. 각 단계는 입력 channel을 통해 데이터를 받고, 처리를 수행한 후 출력 channel을 통해 결과를 보냅니다. 이 패턴을 사용하면 복잡한 처리를 단순하고 재사용 가능한 단계로 분해할 수 있어 각 구성 요소를 독립적으로 조합하고 테스트하기 쉬워집니다.

4

처리 종료를 알리기 위해 worker pool에서 channel을 올바르게 닫으려면 어떻게 해야 하나요?

5

fan-out과 fan-in의 차이는 무엇인가요?

+21 면접 질문

다음 면접을 위해 Go을 마스터하세요

모든 질문, flashcards, 기술 테스트, 코드 리뷰 연습, 면접 시뮬레이터에 접근하세요.

무료로 시작하기