온프레미스(On-Premise) AI 코드 리뷰: 에어갭(Air-Gapped) 환경에서 Claude를 로컬로 배포하는 방법 (설정 가이드)
요약
보안이 엄격한 에어갭(Air-gapped) 환경에서 Claude와 같은 AI 모델을 온프레미스로 배포하여 코드 리뷰를 자동화하는 방법을 다룹니다. 하드웨어 요구 사항, 모델 선택, 보안 아키텍처 구축 등 폐쇄망 내 AI 도입을 위한 실무 가이드를 제공합니다.
핵심 포인트
- 에어갭 환경에서는 모델 선택부터 하드웨어 관리까지 전체 스택을 직접 책임져야 함
- 실질적인 코드 리뷰를 위해서는 최소 70B 이상의 파라미터 모델 권장
- 팀 규모와 리뷰 양에 따른 GPU 인프라(예: NVIDIA A100) 구성 전략 제시
- 데이터 유출 위험 없이 기밀 코드를 안전하게 처리하는 보안 아키텍처 구축
보안 담당자는 안 된다고 했습니다.
"일부 수정하면 가능할지도 모릅니다"도 아니었습니다. "데이터 처리 정책을 검토해 봅시다"도 아니었습니다. 아니었습니다. 클라우드 기반(Cloud-hosted) AI 코드 리뷰는 그들의 환경에서 실행될 수 없었습니다. 코드베이스에는 기밀 자료가 포함되어 있었습니다. 네트워크는 에어갭(Air-gapped) 상태였습니다. 어떤 데이터도 건물 밖으로 나갈 수 없습니다. 대화는 거기서 끝이었습니다.
이곳은 방위산업체였습니다. 그들의 개발 팀은 외부 API, 클라우드 서비스, 또는 SaaS 플랫폼에 전혀 접속할 수 없는 코드를 작성하고 있었습니다. 하지만 그들은 또한 연간 20만 줄 이상의 코드를 작성하고 있었고, 12명의 엔지니어가 리뷰 품질을 유지하는 데 어려움을 겪고 있었습니다. 이는 바로 AI 코드 리뷰가 해결하고자 하는 정확한 문제였습니다.
과제: 기밀 컴퓨팅 환경의 보안 및 컴플라이언스(Compliance) 요구 사항을 충족하면서, 외부 연결 없이 완전히 온프레미스(On-premise) 및 에어갭(Air-gapped) 네트워크 내에서 실행되는 AI 코드 리뷰 기능을 배포하는 것.
이 가이드는 우리가 그 프로젝트를 시작했을 때 존재했으면 좋았을 가이드입니다. 하드웨어 요구 사항, 모델 선택, 추론 서버(Inference server) 설정, CI/CD 통합, 그리고 컴플라이언스 검토를 통과할 수 있게 해준 보안 아키텍처(Security architecture)를 다룹니다.
에어갭(Air-gapped) AI 코드 리뷰가 다른 모든 것과 다른 이유
대부분의 AI 코드 리뷰 가이드는 클라우드 연결을 가정합니다. 모델은 제공업체의 인프라에서 실행됩니다. 코드는 API를 통해 전송됩니다. 리뷰 결과가 돌아옵니다. 보안 문제는 데이터 처리 정책, 전송 중 암호화(Encryption in transit), 그리고 벤더(Vendor)에 대한 신뢰에 관한 것입니다.
에어갭(Air-gapped) 환경에서는 이 중 어느 것도 적용되지 않습니다. 모델은 당신이 제어하는 하드웨어에서 실행됩니다. 코드는 네트워크를 절대 벗어나지 않습니다. 프로세스에 참여하는 벤더가 없기 때문에 신뢰해야 할 벤더도 없습니다.
보안 관점에서는 이것이 더 간단하게 들릴 수 있습니다. 어떤 면에서는 그렇습니다. 하지만 다른 면에서는 훨씬 더 복잡합니다. 왜냐하면 클라우드 배포에서는 다른 사람의 문제였던 모델 선택, 양자화(Quantisation), 추론 하드웨어(Inference hardware), 배포, 모니터링, 업데이트 및 시스템 유지 관리라는 전체 스택(Stack)을 이제 당신이 책임져야 하기 때문입니다.
하드웨어 요구 사항
하드웨어 문제는 첫 번째 결정 사항이며 다른 모든 것을 제약하는 요소입니다.
**온프레미스(On-premise) AI 코드 리뷰**를 위해서는 모델이 코드의 의미론(Semantics)을 이해하고, 패턴을 식별하며, 의미 있는 리뷰 코멘트를 생성할 수 있을 만큼 충분히 커야 합니다. 소형 모델(7B 파라미터)은 기본적인 린팅(Linting) 및 스타일 체크는 처리할 수 있지만, 실질적인 코드 리뷰를 위한 추론(Reasoning) 능력은 부족합니다. 대형 모델(70B+ 파라미터)은 클라우드 기반의 프런티어 모델(Frontier models)에 근접하는 리뷰 품질을 제공하지만, 상당한 GPU 인프라를 요구합니다.
실무 환경의 온프레미스 코드 리뷰를 위한 권장 사항은 다음과 같습니다:
리뷰 양이 적당한 25명 미만의 엔지니어 팀: 4비트 양자화(4-bit quantisation)된 70B 파라미터 모델을 실행하는 NVIDIA A100 80GB GPU 2개가 장착된 단일 서버. 이는 하루 1525개의 PR(Pull Request)을 생성하는 팀의 추론(Inference) 부하를 수용하며, 허용 가능한 수준의 지연 시간(리뷰당 3060초)을 유지합니다. 총 하드웨어 비용은 GPU 서버 기준 약 $30,000~$45,000이며, 이를 3년으로 분할하면 연간 약 $10,000~$15,000 수준으로, 이 규모의 팀이 사용하는 클라우드 기반 리뷰 도구 라이선스 비용과 유사합니다.
25~75명의 엔지니어 팀: 로드 밸런서(Load balancer) 뒤에 각각 4개의 A100 80GB GPU를 갖춘 두 대의 추론(Inference) 서버를 배치합니다. 이는 하루 50~80개의 PR을 일관된 지연 시간으로 처리합니다. 두 번째 서버는 중복성(Redundancy)을 제공하여, 한 대가 다운되더라도 리뷰 기능이 완전히 중단되지 않고 처리량(Throughput)이 감소된 상태로 계속 유지됩니다.
75명 이상의 엔지니어 팀: 수평적 확장(Horizontal scaling)이 가능한 전용 추론 클러스터(Inference cluster). 이 규모에서는 인프라 관리가 전담 운영 업무가 되므로 전용 MLOps 지원을 권장합니다.
CPU 전용 추론은 매우 높게 양자화된 모델(4비트 이하)과 llama.cpp를 사용하여 기술적으로 가능하지만, 지연 시간이 너무 길어 실무용으로는 부적합합니다(GPU 사용 시 리뷰당 3060초인 반면, CPU는 35분 소요). 저희가 직접 테스트해 본 결과, 팀원들이 리뷰를 기다리지 않고 리뷰 없이 병합(Merge)해버리는 상황이 발생하여 해당 방식을 포기했습니다.
모델 선택 (Model selection)
에어갭 (Air-gapped) 환경에서는 다운로드하여 물리적 매체를 통해 전달하고 로컬에 배포할 수 있는 오픈 웨이트 (Open-weight) 모델로 제한됩니다. 프런티어 폐쇄형 모델 (Frontier closed models, 예: Claude, GPT)은 오프라인에서 사용할 수 없습니다.
2026년 중반 기준으로, 저희가 테스트를 완료하고 온프레미스 (On-premise) 코드 리뷰용으로 추천할 수 있는 모델은 다음과 같습니다:
Llama 3.3 70B는 코드 이해도, 리뷰 품질, 그리고 추론 효율성 (Inference efficiency) 사이에서 최적의 균형을 제공합니다. 4비트 양자화 (4-bit quantisation, GPTQ 또는 AWQ)를 적용할 경우, 2x A100 80GB GPU 환경에서 적절한 배치 크기 (Batch size)를 확보하며 구동할 수 있습니다. Python, TypeScript, Java, C++ 코드베이스에 대한 리뷰 품질이 강력하며, 논리적 오류, 보안 취약점, 패턴 불일치를 포착하여 인간의 리뷰 부담을 유의미하게 줄여주는 수준을 보여줍니다.
DeepSeek Coder V3는 코드 작업에 특화되어 있으며, 코드 중심의 리뷰에서 탁월한 결과를 제공합니다. 이 모델은 크기가 더 작으며 (가장 성능이 뛰어난 변형 모델 기준 33B), 더 적은 하드웨어에서도 실행 가능하므로 소규모 배포에 좋은 선택입니다. 코드 특화 벤치마크에서는 Llama 3.3 70B보다 뛰어난 성능을 보이지만, 아키텍처 리뷰 코멘트를 위한 일반적인 추론 (General reasoning) 능력은 다소 약합니다.
Qwen 2.5 Coder 32B는 품질과 리소스 요구 사항 사이의 균형을 잘 맞춘 또 다른 강력한 코드 특화 옵션입니다.
저희의 추천: 코드 중심의 리뷰를 위해서는 DeepSeek Coder V3로 시작하십시오. 만약 단순히 문제가 있다는 사실을 넘어, 왜 그것이 문제인지 설명하는 리뷰 코멘트와 더 넓은 범위의 아키텍처 분석이 필요하다면 Llama 3.3 70B를 추가하십시오.
추론 서버 설정 (Inference server setup)
저희는 프로덕션 배포를 위한 추론 서버로 vLLM을 사용합니다. vLLM은 모델 로딩, 요청 큐잉 (Request queuing), 연속 배치 (Continuous batching)를 처리하며, 기존 도구들과의 통합을 용이하게 만드는 OpenAI 호환 API 엔드포인트를 제공합니다.
배포 아키텍처:
┌─────────────────────────────────────────────┐
│ 에어갭 네트워크 (Air-gapped network) │
│ │
...
이 이중 노드(dual-node) 설정은 두 가지 목적을 수행합니다: 중복성(redundancy, 한 노드가 다운되더라도 다른 노드가 모든 트래픽을 처리할 수 있음)과 모델 전문화(model specialisation, 한 노드는 아키텍처 리뷰를 위한 범용 모델을 실행하고, 다른 노드는 상세 코드 분석을 위한 코드 특화 모델을 실행함)입니다. 리뷰 파이프라인(review pipeline)은 서로 다른 리뷰 유형을 서로 다른 모델로 라우팅할 수 있습니다.
각 노드에 vLLM 설정하기:
# vLLM 설치 (승인된 매체를 통해 wheel 파일 전송)
pip install vllm --no-index --find-links /media/packages/
...
tensor-parallel-size 2 플래그는 모델을 두 개의 GPU에 분할합니다. max-model-len 32768은 최대 컨텍스트 창(context window)을 설정하며, 이는 상당한 양의 diff(차이점)를 리뷰하기에 충분히 크면서도 GPU 메모리를 고갈시키지 않을 정도의 크기입니다.
컨테이너화된 배포(containerised deployment)의 경우:
FROM nvidia/cuda:12.4.0-base-ubuntu22.04
COPY ./packages /packages
RUN pip install --no-index --find-links /packages vllm
...
CI/CD 통합
리뷰 파이프라인은 기존의 CI/CD 시스템에 연결됩니다. 기밀 환경(classified environments)에서 가장 흔히 사용되는 온프레미스(on-premise) Git 플랫폼인 GitLab CI를 예로 들겠지만, 이 패턴은 어떤 CI 시스템에도 적용 가능합니다.
파이프라인 단계(pipeline stage)는 모든 머지 리퀘스트(merge request) 시 트리거됩니다. 파이프라인은 diff를 추출하고, 프로젝트별 컨벤션(conventions)에 맞춰 리뷰 프롬프트(review prompt)를 구성한 뒤, 이를 vLLM 엔드포인트(endpoint)로 전송합니다. 그 후 응답을 파싱(parse)하여 머지 리퀘스트에 리뷰 코멘트를 게시합니다.
# .gitlab-ci.yml
ai-code-review:
stage: review
...
리뷰 스크립트:
import requests
import subprocess
import json
...
temperature: 0.1 설정은 의도적인 것으로, 우리는 창의적인 제안이 아닌 일관되고 결정론적인(deterministic) 리뷰를 원합니다. 규칙 파일(.review-rules.md)에는 모델이 리뷰 기준으로 사용할 프로젝트별 컨벤션이 포함되어 있으며, 이는 클라우드 기반 리뷰 도구가 설정 파일을 사용하는 방식과 유사합니다.
기밀 환경을 위한 보안 고려 사항
모델 파일 자체는 배포 전에 보안 분류 검토 (security classification review)를 거쳐야 합니다. 공개 데이터로 학습된 오픈 웨이트 (Open-weight) 모델은 기밀 정보를 포함하지 않지만, 검토 과정에서는 모델이 공개 데이터로만 학습되었으며 파인튜닝 (fine-tuning) 또는 프롬프트 구성 (prompt construction)에 기밀 데이터가 사용되지 않았음을 증명하는 문서가 필요합니다.
추론 서버 (inference server)는 코드베이스와 동일한 보안 구역 (security zone) 내에서 실행되어야 합니다. 추론 서버와 외부 네트워크 사이에는 프록시 (proxy)나 게이트웨이 (gateway)를 통해서라도 어떠한 네트워크 경로도 존재해서는 안 됩니다. 로드 밸런서 (load balancer)는 내부용으로만 사용됩니다.
감사 로그 (Audit logging)는 모든 리뷰 요청과 응답, 제출된 디프 (diff), 생성된 리뷰 코멘트 및 파이프라인 메타데이터 (pipeline metadata)를 캡처합니다. 이 감사 추적 (audit trail)은 보안 준수 (security compliance)와 시간이 지남에 따른 AI 리뷰 품질 모니터링을 위해 모두 필수적입니다.
모델 업데이트는 초기 배포와 동일한 물리적 매체 전송 프로세스를 요구합니다. 새로운 모델 버전이 출시되면, 비기밀 시스템 (unclassified system)에서 다운로드한 후 승인된 매체를 통해 전송하며, 표준 변경 관리 프로세스 (change management process)를 통해 배포합니다. 이는 모델 업데이트가 지속적으로 이루어지는 것이 아니라, 기껏해야 분기별로 발생함을 의미합니다.
에어갭 (Air-gapped) 배포는 퍼즐의 한 조각일 뿐입니다. SOC 2, HIPAA, PCI 및 정부 보안 요구 사항을 아우르는 온프레미스 (on-premise) AI 코드 리뷰를 위한 전체 컴플라이언스 및 보안 프레임워크는 당사의 전체 가이드에 포함되어 있습니다. 해당 가이드는 기술적 배포가 작동해야 하는 범위 내의 정책 문서, 액세스 제어 (access controls) 및 감사 절차를 다룹니다.
Dextra Labs, AI 컨설팅 및 엔터프라이즈 에이전트 개발 발행
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기