2026. 4. 22. 08:00ㆍIT_Tech
목차

보안이 생명인 공공기관이나 금융권 프로젝트를 수행하다 보면 '폐쇄망'이라는 거대한 벽을 마주하게 됩니다. 구글링은커녕 npm install 한 줄 마음대로 치지 못하는 환경에서 테스트 자동화를 도입한다는 것은 생각보다 고된 작업이었습니다.
최근 진행한 프로젝트에서 Selenium 대신 Playwright를 선택했던 이유는 빠른 속도와 강력한 자동 대기(Auto-waiting) 기능 때문이었는데요. 하지만 외부 인터넷이 차단된 환경에서 Playwright의 핵심인 '브라우저 자동 다운로드' 기능이 먹통이 되면서 겪었던 좌충우돌 구축기를 공유해 보려 합니다.
2. 첫 번째 난관: 브라우저 바이너리 수동 관리
보통의 환경이라면 npx playwright install 명령어로 Chromium, Firefox, WebKit을 순식간에 설치하겠지만, 폐쇄망에선 이 명령어가 'Connection Timeout'만 뱉어냅니다.
제가 시도했던 첫 번째 방식은 로컬(인터넷 망)에서 설치된 브라우저 폴더를 그대로 압축해서 옮기는 것이었습니다. 하지만 OS 버전이 미세하게 다르거나 경로 설정이 꼬이면 실행조차 되지 않더군요. 결국 환경 변수를 활용한 경로 고정이 신의 한 수였습니다.

3. 단계별 폐쇄망 구축 프로세스
실제 제가 성공적으로 적용했던 구축 순서입니다. 이 순서대로 진행하시면 최소한의 시행착오로 환경을 구성하실 수 있습니다.
Step 1. 외부망에서 의존성 패키징
우선 인터넷이 되는 PC에서 필요한 패키지를 다운로드합니다. npm pack을 이용하거나, node_modules를 통째로 압축하는 방법이 있지만, 저는 Yarn Berry(Zero-install) 방식을 추천합니다. 의존성 관리가 훨씬 명확해지기 때문입니다.
Step 2. 브라우저 바이너리 별도 추출
Playwright는 브라우저를 특정 경로(보통 캐시 폴더)에 저장합니다. 이를 원하는 경로로 강제하기 위해 환경 변수를 설정해야 합니다.
export PLAYWRIGHT_BROWSERS_PATH=./pw-browsers
npx playwright install chromium
Step 3. 폐쇄망 서버로 반입 및 환경 설정
보안 심사를 거쳐 파일을 반입한 후, 코드 내에서 혹은 시스템 환경 변수에서 다시 한번 경로를 잡아줍니다. 저는 playwright.config.ts 파일 상단에 경로 설정을 명시하여 팀원들이 별도의 설정 없이 사용할 수 있게 했습니다.
"핵심 팁: 폐쇄망에서는 브라우저 실행 시 --disable-setuid-sandbox 같은 보안 옵션이 필요할 수 있습니다. 리눅스 환경이라면 필수 라이브러리(libgbm, libasound 등)가 설치되어 있는지 먼저 확인하세요."
4. 실무에서 느낀 주관적인 인사이트
폐쇄망에서 테스트 자동화를 구축하며 느낀 점은 "툴의 성능보다 환경의 제약을 먼저 이해해야 한다"는 것입니다. 아무리 좋은 도구라도 라이브러리 하나 반입하는 데 3일이 걸리는 환경이라면, 의존성을 최소화하는 방향이 정답일 수 있습니다.
- 의존성 다이어트: 꼭 필요한 패키지만 사용하세요. 의존성이 많을수록 폐쇄망 반입 시 보안 검토 항목만 늘어납니다.
- 도커(Docker) 활용: 가능하다면
mcr.microsoft.com/playwright이미지를 통째로 반입하는 것이 가장 깔끔합니다. 런타임 이슈를 한 번에 해결할 수 있습니다. - 기록의 중요성: 한 번 성공한 구축 프로세스는 반드시 위키에 문서화해두세요. 브라우저 버전 업데이트 때 똑같은 고생을 반복하지 않으려면요.

5. 자주 묻는 질문(FAQ)
Q1. 폐쇄망에서 Playwright Inspector도 사용 가능한가요?
네, 브라우저 바이너리만 제대로 매핑되어 있다면 코드 제너레이터와 인스펙터 모두 정상 작동합니다.
Q2. 윈도우에서 리눅스로 파일을 옮기면 실행이 안 돼요.
브라우저 바이너리는 OS 종속적입니다. 타겟 서버가 리눅스라면 반드시 리눅스용 바이너리를 다운로드받아 옮겨야 합니다.
Q3. npm install 없이 새 패키지를 추가하려면?
로컬에서 해당 패키지를 포함해 다시 빌드하거나, 오프라인 미러링 저장소(Nexus 등)를 사내에 구축하는 것이 근본적인 해결책입니다.
마치며
폐쇄망에서의 도전은 늘 어렵지만, 그만큼 인프라와 툴의 구조를 깊게 이해할 수 있는 기회가 되기도 합니다. 저의 시행착오가 여러분의 구축 시간을 단 1시간이라도 줄여줄 수 있기를 바랍니다.
'IT_Tech' 카테고리의 다른 글
| 마이크로서비스 데이터 정합성, SAGA 패턴으로 완벽하게 정복하기 (1) | 2026.05.06 |
|---|---|
| 트래픽 폭주에도 끄떡없는 웹서비스 구축, NGINX로 가능합니다 (0) | 2026.04.29 |
| 느린 웹 서버? Redis 캐싱으로 초고속 응답 경험하기! (0) | 2026.04.15 |
| NLB vs ALB, 당신의 서비스에 딱 맞는 선택은? (L4/L7 차이부터 실무 팁까지) (0) | 2026.04.08 |
| 실시간 서버 감시의 끝판왕! 프로메테우스와 그라파나로 무적의 모니터링 환경 구축하기 (feat. Docker 가이드) (0) | 2026.04.01 |