Monorepo · esbuild · SWC · 원격 Mac · 2026
2026 원격 Mac 프론트 빌드 피하기:
esbuild·SWC 병렬 worker, 캐시 디렉터리, Node 힙 파라미터 대조표
2026.04.11
MacWww 엔지니어링
약 7분 읽기
esbuild(Go)와 SWC(Rust)를 Turbo·원격 Mac Runner에 같이 올리면 코어는 바쁜데 벽시계는 안 줄거나, 캐시가 느린 볼륨에 있어 적중이 사라지기 쉽습니다. 표로 GOMAXPROCS·worker, cacheDir, NODE_OPTIONS, 증분을 고정하고 검수 절차를 덧붙였습니다. Rspack·esbuild·Vite·Webpack 캐시·Turborepo 체크리스트. 프론트 블로그·홈·구매(로그인 불필요).
키워드: esbuild · SWC · GOMAXPROCS · cacheDir · NODE_OPTIONS · Turbo · 원격 Mac
01 왜 Monorepo 레벨에서 병렬 예산을 잡아야 하나
esbuild는 GOMAXPROCS, SWC는 CLI·프레임워크 워커가 Turbo 동시성과 곱해집니다. README에 코어 − 2 같은 총예산을 적어 두지 않으면 I/O·스왑만 커질 수 있습니다.
02 대조표: GOMAXPROCS·worker, cacheDir, 힙, 증분
동일 lockfile·원격 1대 기준 출발점.
| 항목 | esbuild (Vite·Rspack 사전 번들 등) | SWC (Next, @swc/cli 등) |
|---|---|---|
| GOMAXPROCS / worker | 예: 12코어에서 export GOMAXPROCS=10. Turbo와 곱해 지속 CPU 한도 내로. |
GOMAXPROCS 무관. @swc/cli threads·workers 또는 Next 옵션으로 총 워커 ≤ 코어−예약. |
| cacheDir | Vite: node_modules/.vite 또는 설정의 cacheDir를 SSD로. NFS 루트는 적중·락 이슈. |
Next: .next/cache. 멀티 앱은 패키지별 캐시 경로를 CI에 화이트리스트. |
| NODE_OPTIONS (힙) | 예: NODE_OPTIONS=--max-old-space-size=8192. OOM 시 먼저 동시성↓, 그다음 10240~12288·스왑 관찰. |
동일. 단일 잡 RSS ~70% RAM 이하 권장. |
| 증분 스위치 | 디스크 증분은 Vite 사전번들·상위 번들러 캐시·--watch 등 외곽에 문서화. |
.next/cache+버전. 타입체크를 빌드와 분리, Turbo dependsOn으로 해시 안정화. |
03 원격 Mac에서의 수용(검수) 단계
공용·전용 Runner 공통 절차.
- 베이스라인: Node·pnpm·Turbo·디스크(SSD/네트워크)·여유 GB 기록.
- 콜드/웜: 캐시 삭제 후 전체 → 파일 1개만 수정 후 재빌드. 웜이 짧고 CPU 장시간 100% 평탄이면 I/O·락 의심.
- 캐시: job이
cacheDir를 매번 지우지 않는지, 키에 호스트 ID 등 불안정 값이 없는지. - 회귀: 동일 SHA 세 번, RSS 피크 분산 작게.
- 게이트: 해시·소스맵·패키지 경계 통과 후 스테이징.
04 정리
esbuild는 GOMAXPROCS·캐시·힙, SWC는 워커·캐시·힙, 공통으로 Turbo 동시성까지 한 예산표로 묶으세요. 로컬이 병목이면 원격 Mac에 동일 Runbook을 옮기고 캐시를 SSD에 두면 머지 대기가 줄기 쉽습니다.