병렬화는 한 레이어만 보면 놓친다

concept updated 2026-04-13

병렬화는 한 레이어만 보면 놓친다

한 줄 정의

외부 루프에 pLimit을 걸면 “병렬화 했다”고 착각하지만, 내부 루프에 직렬 await가 있으면 총 시간은 외부 × 내부.

핵심 내용

Before: pLimit(5)로 멤버 간 병렬화 → 실제로는 멤버 내부 이벤트 10개가 직렬.

  • 100명 ÷ 5병렬 = 20라운드 × 5초 = 100초

After: 내부 루프에도 pLimit 적용.

  • 100명 ÷ 5병렬 = 20라운드 × 0.5초 = 10초

패턴: 병렬 처리 설계 시 “어디에 await가 있는가”를 전체 콜스택에서 추적.

  1. 외부 루프에 pLimit 걸었으면 → 내부 루프에도 await 있는지 확인
  2. 내부에 API 호출 있으면 → 그것도 병렬화 대상
  3. rate limit은 pLimit 숫자로 제어

체크리스트

  • pLimit/Promise.all 발견 → 그 안에 await 개수 확인
  • 내부 await N회 반복 → 총 대기시간 = 외부병렬라운드 × N × 단위시간 계산

Relationships

related_to 확정적 검증 후 LLM 판단 (SAST→LLM 패턴) — 병렬 처리 전 전체 콜스택에서 await 추적
derived_from ../projects/lattice/entities/lattice — lattice 미팅노트 리마인더 cron에서 발견 (멤버 5명 병렬, 이벤트 10개 직렬)