미니 데이터센터 구축 — 10인치 랙에 짓는 AI 팩토리
17장까지는 계산으로 배웠다. 이 장부터는 손으로 짓는다. 책상 위에 올라가는 10인치 랙 두 대에 GPU·클러스터·스토리지·전력·냉각·보안망을 전부 넣는다. 규모는 1/260 이지만 물리는 같다 — 그래서 앞 장에서 세운 식이 여기서 그대로 성립하는지 확인할 수 있다.
이 장을 마치면
- 실제 AI 데이터센터와 미니 데이터센터가 무엇이 같고 무엇이 다른지 축척으로 설명할 수 있다.
- 12U 두 대의 공간·전력·발열 예산을 세우고 장비 배치를 논증할 수 있다.
- DGX Spark 2대를 묶었을 때 무엇이 되고 무엇이 안 되는지 8·12장의 규칙으로 예측할 수 있다.
- 존(보안등급)을 VLAN 과 물리 배선으로 구현하고 배선 규칙을 세울 수 있다.
- 구축 순서와 검수 항목을 절차서로 만들어 재현 가능한 형태로 남길 수 있다.
왜 짓는가 — 계산이 손에 닿는 크기로
이 과목의 모든 장은 계산으로 끝났다. 랙이 190 kW 를 먹는다, 링크가 2,048개 필요하다, 토큰 100만 개에 600원이다 — 다 맞는 말이지만 손으로 만져 본 적이 없다. 미니 데이터센터는 그 계산을 만질 수 있는 크기로 줄인 것이다.
규모는 줄였지만 계통은 하나도 빼지 않았다. 전력·냉각·네트워크 존 분리·스토리지 계층·관측·보안·에이전트 운영이 전부 들어간다. 빼면 배울 것이 사라지기 때문이다.
반대로 줄일 수 없는 것도 있다. 액체냉각은 0.8 kW 에서 성립하지 않고, 800 VDC 배전도 마찬가지다. 그런 항목은 「왜 이 규모에서는 필요 없는가」를 계산으로 확인하는 것으로 대신한다 — 그것도 배움이다.
완성 상태의 랙 두 대 — 이 장의 목표물
이 그림이 이 장의 사양서다. 치수는 전부 실제 제품 값이고 그림의 1 단위가 1 mm 다. 랙 한 대가 280 x 260 x 590 mm, 1U 가 44.45 mm, 장비를 넣을 수 있는 실폭이 228 mm 다.
DGX Spark 가 150 mm 라 좌우에 39 mm 씩 남는다 — 10인치 랙에 두 대를 나란히 넣을 수 없다는 뜻이고, 그래서 2U 씩 위아래로 쌓았다. 도면을 그리기 전에는 「두 대니까 1U 에 나란히」라고 생각하기 쉽다. 치수를 넣어 그려 보면 그 순간 드러난다.
빈 칸이 보이는 것은 그리다 만 것이 아니다. DGX Spark 는 50.5 mm 라 2U(89 mm) 안에서 위쪽 38 mm 가 남고, 랙 B 의 U7 은 통째로 비워 두었다 — 확장 여유 1U 다. 실제 랙 설계에서도 만실로 채우지 않는다. 장비가 늘고, 손이 들어가야 한다.
왼쪽 랙이 연산(app 존), 오른쪽이 운영·시설(mgmt·ot 존)이다. 두 랙을 나눈 것은 예뻐서가 아니라 존을 나누기 위해서다 — 9장에서 본 「모든 트래픽은 검사 지점을 지난다」를 물리로 강제하려면 연산망과 관리망이 다른 스위치에 붙어야 한다.
직접 제작 도해 · 자유 사용축척 — 무엇이 몇 배 차이인가
| 항목 | VR200 NVL72 랙 1대 | 우리 랙 A | 배수 |
|---|---|---|---|
| 가속기 수 | 72 | 2 | 36배 |
| 랙 전력 | 약 210 kW | 0.63 kW | 약 330배 |
| 가속기 메모리 합 | 약 20 TB (HBM4) | 256 GB (LPDDR5X) | 78배 |
| 메모리 대역폭 (칩당) | 수 TB/s | 273 GB/s | 약 20~30배 |
| scale-up 링크 | NVLink 6 · 3.6 TB/s | 없음 (200GbE 직결) | — |
| 냉각 | 액체 (CDU · 콜드플레이트) | 공랭 (자연 대류 + 팬) | — |
| 배전 | 800 VDC 직류 | 220 V 교류 콘센트 1구 | — |
| 무게 | 약 1.5 t | 약 12 kg | 125배 |
| 가격 | 수십억 원 | 수백만 원 | 약 1,000배 |
배수가 항목마다 다르다는 것 자체가 교보재다. 전력은 330배인데 메모리는 78배다. 이 어긋남이 곧 「랙 밀도가 왜 전력 문제로 귀결되는가」의 답이다 — 11장에서 계산한 그대로다.

이 랙의 주인공 — DGX Spark
측면의 금속 폼(metal foam) 격자가 흡배기 통로다. 150 x 150 x 50.5 mm, 1.2 kg, 최대 240 W. GB10 슈퍼칩에 128 GB 통합 메모리가 붙어 있고 대역폭은 약 273 GB/s 다. 3장에서 이 장비를 「용량은 크고 대역폭은 낮은 쪽」이라고 분류했는데, 그 성질이 18·19장 내내 설계 제약으로 돌아온다.
출처: Daniel Lu (User:dllu)CC BY-SA 4.0
클러스터를 이룰 라즈베리파이 5
가운데 큰 칩이 BCM2712(Cortex-A76 4코어), 그 옆이 LPDDR4X, 오른쪽 아래 은색 커넥터가 기가비트 이더넷이다. 왼쪽 아래 작고 흰 커넥터가 PCIe 2.0 x1 포트이며, 여기에 M.2 HAT 을 달아 NVMe SSD 를 붙인다. SD 카드로는 쿠버네티스 etcd 의 쓰기 부하를 못 견딘다 — 이 포트가 있어서 이 클러스터가 성립한다.
출처: SimonWaldherrCC BY 4.0자재 명세 — 무엇을 왜 골랐는가
부품 목록은 결론이 아니라 논증의 요약이다. 아래 표의 「고른 이유」 칸이 이 절의 본체다.
| 품목 | 사양 | 수량 | 고른 이유 |
|---|---|---|---|
| 랙 | DeskPi RackMate T2 · 10인치 12U · 280x260x590 mm | 2 | 19인치는 책상에 못 올린다. 10인치는 깊이 260 mm 라 미니 장비와 맞고, 개방형 프레임이라 배선이 보인다 — 교보재로는 보이는 편이 낫다 |
| GPU 시스템 | NVIDIA DGX Spark (GB10 · 128 GB · 240 W) | 2 | AI 데이터센터를 축소하면서 GPU 만은 진짜여야 한다. CUDA·NCCL·컨테이너·드라이버 스택이 실제와 같아야 실습이 성립한다 |
| 클러스터 노드 | Raspberry Pi 5 8GB + M.2 HAT + NVMe 512GB | 4 | k3s 노드 4대. 여러 대가 필요한 이유는 성능이 아니라 「대수」다 — 노드가 죽는 실습은 노드가 여러 대여야 성립한다 |
| 관리 시스템 | 미니 PC (Intel N95 · DDR5 16GB · NVMe) | 4 | 보안 · 시설운영 · 에이전트 · 가상회사를 각각 다른 기계에 올린다. 한 대에 몰면 「어느 계통이 죽었는가」를 구분할 수 없다 |
| 콘솔 | 10인치 2U 랙마운트 LCD 7.84" 1280x400 터치 | 1 | 네트워크가 끊겨도 닿을 수 있는 마지막 경로. 평시에는 관제 화면을 상시 표시한다 |
| 스위치 | 2.5GbE 8포트 + SFP+ 2 (VLAN·관리형) | 2 | 비관리형은 안 된다 — VLAN 이 없으면 존을 나눌 수 없고, 존이 없으면 9장·19장이 통째로 사라진다 |
| 방화벽 | 듀얼 NIC 팬리스 미니 PC (OPNsense/pfSense) | 1 | 존 사이를 지나는 유일한 길을 물리적으로 하나로 만든다 |
| 핫 스토리지 | NVMe SSD 512GB~1TB | 4 | 모델 가중치 · 컨테이너 이미지 · KV 오프로드 |
| 콜드 스토리지 | 외장 SSD (USB 3.2 · 1~2 TB) | 4 | 백업 · 증적 보관. 매체가 달라야 3-2-1 이 성립한다 |
| UPS | 600~1000 VA · 정현파 출력 권장 | 1 | 정전을 버티려는 것이 아니라 정상 종료할 시간을 사는 것이다 |
| PDU | 랙마운트 0.5U · 채널별 on/off | 2 | 채널별로 끊을 수 있어야 「부하 차단」 실습이 성립한다 |
| 계측 | 온습도 센서 4점 · 전류계 · 도어 센서 | 1식 | 측정하지 않는 것은 운영할 수 없다. 19장의 모든 시나리오가 여기서 나온다 |
| 배선 | Cat6 패치코드(색상 4종) · 라벨기 · 케이블 타이 | 1식 | 색과 라벨이 곧 문서다 |
| 공구 | RJ45 압착기 · 케이블 테스터 · 정밀 드라이버 | 1식 | 케이블은 사서 쓰되, 만들 줄은 알아야 한다 |
kt66 은 16개 컨테이너를 31 GB 머신에서 검증했다. N95 미니 PC 의 최대 메모리는 보통 16 GB 이므로 한 대에 kt66 전체를 올릴 수 없다. 세 가지 중 하나를 고른다.
- 나눠 올린다(권장) — 보안 스택(fw·ips·web·취약앱·Wazuh)을 1번 기계에, 시설·관제 스택(envsim·noc·injector·portal)을 2번 기계에 올린다. 어차피 존이 다르므로 물리적으로 나누는 편이 오히려 교보재답다.
- 줄여 올린다 — Wazuh 인덱서를 단일 노드로 두고 JVM 힙을 2 GB 로 묶는다. 돌기는 하지만 로그가 쌓이면 느려진다.
- 32 GB 기계를 쓴다 — 미니 PC 한 대만 상위 모델로 바꾼다. 가장 단순하고, 가장 돈이 든다.
이 제약을 미리 계산하지 않으면 구축 당일에 막힌다. 14장에서 「모델이 메모리에 들어가는가」를 먼저 따진 것과 완전히 같은 문제다 — 대상이 GPU 메모리에서 서버 메모리로 바뀌었을 뿐이다.

소형 폼팩터(SFF) PC — 앞쪽에서 본 모습
측면 전체가 미세 타공 메시이고, 아래 띠 부분에 전원 버튼과 USB-A 포트가 보인다. 케이스 옆구리 전체가 흡기구라는 뜻이며 안쪽 팬이 여기로 공기를 빨아들인다. 11장에서 본 「랙 앞면 전체가 흡기」와 같은 발상이 한 대 크기에서 나타난 것이다.
출처: DlluCC BY-SA 4.0
같은 기계를 뒤쪽에서 — 오른쪽 끝에 후면 I/O 가 보인다
같은 기계를 반대편에서 찍어 후면 패널의 확장 슬롯과 안테나 커넥터가 드러난다. 손잡이가 달린 알루미늄 케이스에 옆면 전체가 메시다. 우리가 쓰는 N95 미니 PC 보다 훨씬 큰 부류이며, 풀사이즈 GPU 를 넣기 위한 크기다. 여기 실은 이유는 대비를 위해서다 — 「작은 컴퓨터」에도 등급이 있고, 무엇을 넣느냐가 크기를 정한다.
출처: DlluCC BY-SA 4.0
같은 기계를 연 모습 — 3팬 GPU 가 부피의 절반이다
ProArt 3팬 카드가 케이스 폭을 거의 다 쓴다. 부피를 정하는 것은 연산기가 아니라 냉각기다. 2장에서 본 「같은 다이라도 전력이 다르면 다른 제품이 된다」가 케이스 크기로 나타난 것이다. DGX Spark 가 50.5 mm 로 얇을 수 있는 것은 240 W 밖에 안 쓰기 때문이다.
출처: DlluCC BY-SA 4.0
라즈베리파이 계보 — 왼쪽부터 Pi 1, Pi 5, 뒤가 Pi 400, 앞이 Zero 2 와 Pico
키보드 위에 세대별 보드를 늘어놓은 사진이다. 클러스터에 Pi 5 를 쓰는 이유는 PCIe 와 메모리다 — Pi 4 까지는 NVMe 를 붙일 수 없어 SD 카드로 etcd 를 돌려야 하는데, 쿠버네티스의 쓰기 패턴에 SD 카드는 몇 주를 못 버틴다.
출처: SimonWaldherrCC BY-SA 4.0
Pi 5 + 액티브 쿨러 — 이 조합이 사실상 필수다
알루미늄 히트싱크에 소형 팬이 얹혀 있고 GPIO 옆 전용 커넥터로 전원을 받는다. Pi 5 는 부하가 걸리면 쿨러 없이 스로틀링에 들어간다. 12장에서 본 GPU 열 스로틀과 원리가 똑같다 — 규모만 다르지 「온도가 성능을 정한다」는 성질은 보드 한 장에서도 같다.
출처: SimonWaldherrCC BY 4.0
M.2 2242 NVMe 512 GB — Pi 5 의 PCIe 포트에 붙는다
라즈베리파이 재단이 파는 512 GB NVMe 모듈이다. M.2 HAT 을 거쳐 Pi 5 의 PCIe 2.0 x1 에 연결되며 실효 대역폭은 약 450 MB/s 수준이다. 10장에서 본 「스토리지 계층」의 맨 아래 칸이 이 물건이고, 여기서도 SD 카드 대비 100배 가까운 IOPS 차이가 그대로 나타난다.
출처: SparkFun ElectronicsCC BY 2.0공간 — 12U 를 어떻게 나눌 것인가
공간 설계는 아래에서 위로 한다. 무겁고 뜨겁고 위험한 것이 아래다. 이 원칙은 190 kW 랙이든 0.8 kW 랙이든 같다.
| U | 랙 A — AI 존 (app) | 랙 B — 운영 존 (mgmt / ot) |
|---|---|---|
| 12 | 패치 패널 12P (0.5U) + 브러시 (0.5U) | 패치 패널 12P (0.5U) + 브러시 (0.5U) |
| 11–10 | 콘솔 모니터 7.84" 터치 (2U) | 미니 PC x4 — 세워서 (3U, U11–9) |
| 9 | 스위치 A — 2.5GbE x8 + SFP+ x2 | 〃 |
| 8–7 | DGX Spark 01 (1U 벤티드 선반 + 본체) | 스위치 B — mgmt / ot |
| 6 | 〃 | 방화벽 / IPS |
| 5 | DGX Spark 02 | 콜드 스토리지 x4 (2U, U6–5) |
| 4–3 | Raspberry Pi 5 x4 + NVMe (2U) | 환경 계측 패널 (2U) |
| 2 | 핫 스토리지 NVMe x4 (1U 선반) | UPS (2U, U2–1) |
| 1 | DC PDU 7ch (0.5U) + 전력계 (0.5U) | 〃 |
- 무거운 것이 아래로. UPS 가 가장 무겁다(배터리). 위에 두면 랙의 무게중심이 올라가 넘어진다 — 실제 데이터센터에서 UPS·배터리를 1층에 두는 것과 같은 이유다.
- 뜨거운 것이 위로. DGX Spark 두 대가 랙 A 발열의 80 % 다. 더운 공기는 위로 가므로 발열원을 아래에 두면 위쪽 장비가 그 공기를 마신다. 11장의 핫아일/콜드아일이 12U 안에서는 이렇게 나타난다.
- 손이 자주 가는 것이 눈높이로. 콘솔과 패치 패널이 위쪽에 있는 이유다. 책상에 올렸을 때 U10~12 가 앉은 눈높이가 된다.
실폭 228 mm 는 DGX Spark(150) · Pi 5(85) · 미니 PC(130) 를 다 받는다. 막히는 것은 깊이 260 mm 다. 일반 1U 서버는 깊이가 500~800 mm 이므로 10인치 랙에는 애초에 들어가지 않는다.
그래서 이 구성은 「작은 서버를 산 것」이 아니라 「깊이 260 mm 안에 들어가는 것만으로 데이터센터를 이룰 수 있는가」 라는 설계 문제를 푼 결과다. 답이 미니 PC · SBC · 외장 SSD 조합이었다.
전력 — 0.81 kW 의 계통을 설계한다
전력은 더하기부터 한다. 11장에서 랙 전력을 계산한 것과 완전히 같은 순서다.
| 장비 | 수량 | 대당 피크 | 합계 | 랙 |
|---|---|---|---|---|
| DGX Spark | 2 | 240 W | 480 W | A |
| Raspberry Pi 5 + NVMe + 쿨러 | 4 | 15 W | 60 W | A |
| 미니 PC (N95) | 4 | 30 W | 120 W | B |
| 2.5GbE 스위치 | 2 | 12 W | 24 W | A·B |
| 방화벽 (팬리스) | 1 | 20 W | 20 W | B |
| 콘솔 모니터 | 1 | 10 W | 10 W | A |
| NVMe / 외장 SSD | 8 | 4 W | 32 W | A·B |
| 계측 · PDU 자체 소비 | 1식 | 12 W | 12 W | A·B |
| 소계 | 758 W | |||
| 여유율 (+7 %) | 53 W | |||
| 설계 부하 | 약 0.81 kW |
「피크」와 「실사용」은 다르다. 위 표는 전부 최대치를 더한 값이라 실제로는 절반쯤인 0.4 kW 근처에서 돈다. 그런데 회로는 피크로 잡아야 한다 — 15장에서 가동률을 다룰 때와 정반대의 방향이다. 용량 산정은 피크로, 원가 계산은 평균으로 한다.
회로 — 콘센트 하나로 되는가
설계 부하 0.81 kW
콘센트 회로 220 V x 16 A = 3.52 kW (국내 일반 분기회로)
연속부하 규정 정격의 80% 까지 = 2.82 kW
0.81 / 2.82 = 29% → 콘센트 하나로 충분하다.
그런데 「충분하다」의 뜻을 확인해 둔다:
- 같은 회로에 전기포트(2 kW)를 꽂으면 2.81 kW → 한계선이다
- 강의실 배선은 여러 콘센트가 한 분기회로를 공유하는 경우가 많다
→ 두꺼비집에서 이 랙이 어느 차단기에 물려 있는지 확인하고 표시해 둔다11장에서 「랙 190 kW → 건물 수전 용량 → 변압기 → 계통」으로 올라갔다. 여기서는 「랙 0.81 kW → 분기회로 3.52 kW → 두꺼비집」으로 올라간다. 계층의 개수만 줄었을 뿐 방법은 같다.
그리고 같은 함정이 있다. 「내 부하만 보면 여유롭다」 — 실제로 문제가 되는 것은 언제나 공유 구간이다. 데이터센터에서는 그것이 변전소이고, 강의실에서는 두꺼비집이다.
UPS — 무엇을 사는 물건인가
UPS 는 정전을 버티는 장비가 아니다. 0.8 kW 를 몇 시간 버티려면 자동차 배터리만 한 것이 필요하고, 그건 이 랙의 목적이 아니다. UPS 가 사 주는 것은 정상 종료할 시간이다.
보호할 부하를 먼저 정한다 (전부 보호하지 않는다)
미니 PC 4대 120 W ← 상태를 가진 기계. 갑자기 끊기면 DB가 깨진다
스위치 2대 + 방화벽 44 W ← 이게 죽으면 종료 명령도 못 보낸다
스토리지 32 W ← 쓰기 도중 정전이 가장 위험하다
------------------------------
보호 부하 196 W
DGX Spark 2대 (480 W) ← 보호하지 않는다. 상태가 없고, 용량이 안 나온다
UPS 용량 (여기서 학생 절반이 틀린다)
600 VA UPS 의 유효 출력 = 600 VA x 역률 0.6 = 360 W
※ VA 와 W 는 같지 않다. 카탈로그 앞 숫자는 VA 다.
196 W / 360 W = 54% → 용량은 충분
런타임
배터리 12 V x 7 Ah = 84 Wh
실사용 가능분 (방전 심도 50%, 인버터 효율 85%)
84 x 0.5 x 0.85 = 35.7 Wh
35.7 Wh / 196 W = 0.18 h = 약 11분
→ 11분 안에 순서대로 끄면 된다. 그 순서가 19장의 런북이다.
11장에서 본 이중변환 UPS 구성도 — 이번에는 부품 이름을 읽는다
네 블록의 뜻은 이렇다. Egyenirányító = 정류기(교류를 직류로), Akkumulátor telep = 축전지, DC-AC Inverter = 인버터(직류를 교류로), Bypass kapcsoló = 바이패스 스위치. 이중변환은 평시에도 교류를 직류로 바꿨다가 다시 교류로 만들어 내보낸다 — 그래서 절체 시간이 0 이지만 상시 변환 손실이 있다. 11장에서 800 VDC 가 「변환 단계를 줄인다」고 한 것이 겨냥한 손실이 바로 이것이다.
출처: Vid GáborCC BY-SA 4.0
값싼 UPS 의 실제 출력 파형 — 정현파가 아니다
오실로스코프 화면이다. 노란색이 UPS 출력, 보라색이 상용 전원이고 화면 우상단에 59.9941 Hz, 채널 감도 100 V/div 가 찍혀 있다. 보라색은 매끄러운 정현파인데 노란색은 계단 모양이다 — 이것이 「모의 정현파(stepped approximation)」다. 역률 보정 전원장치(요즘 PC 대부분)는 이 파형에서 소음을 내거나 아예 배터리 모드를 인식하지 못하는 경우가 있다. UPS 를 고를 때 VA 다음으로 볼 항목이 이 파형이다.
출처: Timothy QuillCC BY-SA 4.0측정 — 계측하지 않는 것은 운영할 수 없다
18장에서 붙인 센서가 19장 시나리오의 입력 전부다. 전력계 하나, 온습도 4점, 도어 센서 하나. 그것으로 충분하고, 그것 없이는 아무것도 안 된다.

AM2302(DHT22) 온습도 센서 모듈 — 우리가 랙에 네 개 붙일 물건
흰 격자 케이스 안에 감지 소자가 있고 아래 검은 기판에 + / out / - 세 핀이 나와 있다. 측정 범위는 온도 -40~80 C, 습도 0~100 %RH 이고 초당 한 번 정도만 읽을 수 있다 — 열은 느리게 움직이므로 충분하다. 이 세 핀을 라즈베리파이 GPIO 에 물리면 그 순간 시설 계통이 생긴다.
출처: Suyash DwivediCC BY-SA 4.0
더 값싼 DHT11 — 사양서를 읽어야 하는 이유
파란 기판에 VCC / DATA / GND 가 찍혀 있고, 라벨에 3.5V~5.5VDC, 20%~95%RH, 0~60도, 정확도 ±5%RH, ±2도 가 인쇄돼 있다. 위의 AM2302 는 ±2 %RH · ±0.5 C 다. ±2 C 짜리로는 「기준선 대비 +3 C」를 판정할 수 없다 — 오차가 신호보다 크기 때문이다. 값이 몇 배 싸도 이 센서로는 19장의 열 시나리오가 성립하지 않는다.
센서를 고르는 기준은 정확도가 아니라 「내가 잡으려는 변화보다 오차가 작은가」다. 15장에서 관측을 다룰 때 「무엇을 재는지 정하고 나서 도구를 고른다」고 한 것의 가장 작은 실례가 이 두 모듈의 차이다.

19인치 랙마운트 PDU 가 실제로 놓인 모습
랙 뒤편에서 찍은 사진이다. 검은 PDU 본체에 굵은 전원 케이블들이 꽂혀 있고 주변으로 배선이 지난다. 10인치 랙에는 이 물건이 들어가지 않는다 — 폭이 19인치(482 mm)이기 때문이다. 그래서 우리는 0.5U DC PDU 를 쓴다. 규격이 장비 선택을 얼마나 강하게 제약하는지 보여주는 예다.
출처: DMahalko, Dale Mahalko, Gilman, WI, USA -- Email: dmahalko@gmail.comCC BY-SA 3.0
건물 전기실 — 대형 UPS 와 배전반이 늘어선 방
여러 대의 캐비닛이 벽을 따라 서 있고 천장에서 주황색 배관이 내려온다. 왼쪽 바닥의 배관은 냉각 계통이고 오른쪽 벽면이 배전반이다. 우리 랙 B 의 U2~U1 두 칸이 이 방 전체에 해당한다. 11장의 전력 계통도에서 「UPS」라고 적힌 네모 하나가 현실에서는 이만한 방이라는 것을 기억해 둘 만하다.
출처: Work With SoundsCC BY-SA 4.0
11장의 그 UPS 를 다시 — 이번에는 우리 것과 비교하려고
MGE UPS SYSTEMS 캐비닛이 벽면을 채운다. 앞면 하단의 넓은 루버가 발열을 빼는 통로이고 가운데 작은 화면이 상태 표시기다. 우리 랙의 UPS 와 하는 일은 똑같다 — 정류·축전·인버터·바이패스. 다른 것은 규모뿐이며, 그래서 위 헝가리어 구성도가 양쪽에 다 적용된다.
출처: Derrick Coetzee from Berkeley, CA, USACC0
가동 중인 랙 — 파랑·빨강으로 나눈 배선과 상단 패치 패널
랙 앞면을 열어 찍은 사진이다. 위쪽이 패치 패널, 그 아래로 장비가 쌓여 있고 파란 다발과 빨간 다발이 좌우로 갈라져 세로로 내려간다. 장비마다 파란 LED 가 줄지어 켜져 있다. 색을 나눈 것은 미적 취향이 아니라 문서를 대신하는 것이다 — 이 랙에서도 같은 규칙을 쓴다(아래 배선 절).
출처: SchleifenbauerCC BY-SA 4.0냉각 — 왜 우리는 팬만으로 되는가
11장에서 랙 190 kW 는 공랭이 불가능하다고 했다. 그러면 어디까지가 공랭인가? 그 경계를 계산으로 확인한다.
강의실이 완전히 밀폐돼 있다고 가정하고, 우리 랙이 방을 얼마나 데우는지 본다.
발열 0.81 kW = 0.81 kJ/s (전기는 결국 전부 열이 된다)
방 부피 60 m2 x 2.7 m = 162 m3
공기 질량 162 m3 x 1.2 kg/m3 = 194 kg
공기 비열 1.005 kJ/(kg K)
시간당 온도 상승 = 0.81 x 3600 / (194 x 1.005)
= 2916 / 195
= 약 15 C/h
같은 방에 190 kW 랙을 넣으면
190 x 3600 / 195 = 약 3,500 C/h → 1분에 58 C
→ 공조가 멈춘 순간부터 몇 분 안에 장비가 죽는다.
13장 시나리오 ENV-01(CRAC 정지)이 「90초 후 GPU 스로틀」인 이유가 이 숫자다.실제로는 벽·문·환기로 열이 빠지므로 방이 15도씩 오르지는 않는다. 몇 도 오르고 평형에 도달한다 — 그 평형점이 랙 흡기 온도이고, 그것이 서버 사양 범위(보통 10~35 C) 안이면 공조가 필요 없다.
즉 0.8 kW 는 「방이 알아서 식혀 주는」 영역이고, 190 kW 는 「방이 못 따라가는」 영역이다. 그 사이 어딘가에 공랭의 한계가 있고, 업계가 그것을 대략 랙당 30~40 kW 로 본다. 그 위가 액체냉각이다.
우리 랙이 액체냉각을 안 쓰는 이유를 「작아서」라고 말하면 반쪽이다. 정확히는 「방의 열용량이 발열을 흡수할 수 있어서」다. 이 표현이어야 30 kW 랙 앞에서도 같은 판단을 할 수 있다.

팬 두 개 — 250 mm 와 30 mm, 자와 함께 찍었다
투명한 대형 팬(250 mm) 한가운데에 초소형 팬(30 mm)이 얹혀 있고 아래에 자가 놓여 크기를 알 수 있다. 같은 풍량이면 큰 팬이 조용하다 — 풍량은 대략 면적 x 회전수인데 소음은 회전수에 훨씬 민감하기 때문이다. 강의실에 두는 랙이라면 이 선택이 실제로 중요하다. 1U 서버가 시끄러운 것도 같은 이유다 — 높이가 44 mm 라 40 mm 팬을 만 회 이상 돌릴 수밖에 없다.
출처: MrBurnsCC BY-SA 3.0
케이스 안의 CPU 히트싱크와 팬
구리 히트파이프가 CPU 에서 알루미늄 핀 뭉치로 열을 옮기고, 파란 팬이 그 핀 사이로 바람을 민다. 콜드플레이트 액체냉각도 구조가 똑같다 — 열을 받는 면, 옮기는 매질, 버리는 곳. 다른 것은 매질이 공기냐 물이냐이고, 물의 열용량이 공기의 약 3,500배(체적 기준)라 같은 부피로 훨씬 많은 열을 옮긴다. 11장의 그 계산이다.
출처: Douglas Paul PerkinsCC BY 3.0네트워크 — 존을 물리로 강제한다
9장에서 「모든 트래픽은 검사 지점을 지난다」고 했고, 19장의 보안 시나리오 전부가 그 성질에 기대고 있다. 그러니 우회로가 없도록 물리적으로 만들어야 한다.
| 존 | VLAN | 대역 | 신뢰등급 | 어디에 붙는가 | 무엇이 사는가 |
|---|---|---|---|---|---|
ext | 30 | 10.20.30.0/24 | L0 | 스위치 B | 인터넷 접점 · 공격자 단말 · 점프 호스트 |
pipe | 31 | 10.20.31.0/24 | L1 | 스위치 B | 방화벽↔IPS 사이. 통과 트래픽만 |
dmz | 32 | 10.20.32.0/24 | L2 | 스위치 B | WAF · SIEM · 관리 포털 |
int | 40 | 10.20.40.0/24 | L3 | 스위치 B | 업무 앱 백엔드 |
app | 50 | 10.20.50.0/24 | L3 | 스위치 A | DGX Spark 2대 · k3s 클러스터 |
ot | 60 | 10.20.60.0/24 | L3 격리 | 스위치 B | 전력·냉방·센서. tcp/8000 과 ICMP 만 |
mgmt | — | — | L2 논리 | — | 망이 아니라 권한 경계다 |
trust 는 「밖에서 얼마나 쉽게 닿는가」 이지 「얼마나 중요한가」가 아니다. DGX Spark 는 이 랩에서 가장 비싼 장비지만 신뢰등급은 L3 이고, 공격자 단말은 아무 값어치 없지만 L0 이다.
학생이 가장 자주 뒤집어 생각하는 지점이라 처음부터 이렇게 정의한다. 중요도로 존을 나누면 「중요한 것을 다 같은 망에 몰아넣는」 설계가 나오고, 그 순간 측면 이동(lateral movement)이 공짜가 된다.
두 스위치와 트렁크
물리 배선
[스위치 A] ── VLAN 50 (app) 만 다룬다
├ DGX Spark 01 10.20.50.10
├ DGX Spark 02 10.20.50.11
├ Pi 5 x4 10.20.50.21~24
└ 트렁크 ─────────────┐
│ Cat6 2가닥 (이중화)
[스위치 B] ── 나머지 전부 ┘
├ VLAN 30/31/32/40/60
├ 미니 PC x4
├ 방화벽 (VLAN 30,31 양다리)
└ IPS (VLAN 31 ↔ 32/50/60)
존을 건너는 길은 이것뿐이다:
ext --fw--> pipe --ips--> dmz --web(WAF)--> int
|
+--ips--> app (연산 트래픽도 여기를 지난다)
+--ips--> ot (tcp/8000, ICMP 만)한 가닥이면 그 케이블이 곧 단일 장애점이다. 랙 A 전체가 랙 B 를 통해서만 바깥과 통신하므로, 케이블 하나가 빠지면 DGX 두 대와 클러스터가 통째로 고립된다.
두 가닥을 LACP 로 묶으면 대역폭도 늘고 한 가닥이 빠져도 살아남는다. 19장 FLT-03(링크 플랩) 시나리오가 성립하려면 이 이중화가 있어야 한다 — 이중화가 없으면 그냥 전부 죽는 것이지 「플랩」이 아니다.
배선 규칙 — 색과 라벨이 문서다
| 색 | 용도 | 규칙 |
|---|---|---|
| 파랑 | app 존 (연산) | DGX · Pi 클러스터 |
| 빨강 | ext / pipe (신뢰 밖) | 공격자 단말 · 방화벽 외부측. 만지기 전에 한 번 더 생각하라는 뜻 |
| 노랑 | mgmt (관리) | 콘솔 · IPMI · 스위치 관리 포트 |
| 회색 | ot (시설) | 센서 · PDU · UPS |
| 라벨 | 양끝 모두 | A-U7-eth0 → SW-A:p3 형식. 한쪽만 붙이면 없는 것과 같다 |

스위치 위에 얹힌 라즈베리파이 — 우리 구성과 거의 같은 모습
TP-Link 8포트 기가비트 스위치 위에 방열 케이스를 씌운 파이가 올라가 있고, 노란 케이블이 파이와 스위치를, 다른 노란 케이블들이 스위치와 외부를 잇는다. 파이의 빨간 LED 는 전원, 스위치의 초록 LED 는 링크 상태다. 실제 우리 랙 A 의 U9~U3 구간이 이것과 같은 구성이며, 다른 점은 파이가 4대이고 랙에 고정된다는 것뿐이다.
출처: RAIL P (FLUFFTECH.NET)CC0
패치 패널과 스위치 사이 — 파랑·회색으로 나눈 배선
포트 번호(10·12·14·16·18·20)가 찍힌 패널에 파란 케이블과 회색 케이블이 섞여 꽂혀 있다. 위쪽 열과 아래쪽 열이 서로 다른 장비다. 이 사진의 상태는 아직 「관리되고 있다」고 말하기 어렵다 — 색은 나뉘어 있지만 다발이 정리되지 않아 한 가닥을 뽑으려면 여러 가닥을 건드리게 된다. 9장의 「rail-optimized 배선이 까다롭다」가 12포트짜리에서도 이미 시작된다.
출처: ShakataGaNaiCC BY-SA 3.0
5포트 기가비트 스위치 — 노란 케이블과 빨간 케이블
포트마다 초록 LED 가 링크를, 옆의 작은 LED 가 속도를 나타낸다. 노랑과 빨강을 섞어 꽂은 것이 이 사진의 교훈이다 — 우리 규칙에서 빨강은 신뢰 밖(ext) 이고 노랑은 관리망이다. 이 두 색이 같은 비관리형 스위치에 꽂히면 존 분리가 무너진다. 그래서 자재 명세에서 비관리형을 배제했다.
출처: Simon A. EugsterCC BY-SA 3.0
48포트 19인치 스위치 — 우리가 쓰지 않는 쪽
1U 높이에 RJ45 48개와 SFP 슬롯, 콘솔용 시리얼 포트가 앞면에 늘어서 있다. 포트가 8개 단위로 색 구획돼 있다. 폭 482 mm, 깊이 300 mm 이상 — 10인치 랙에는 폭도 깊이도 안 맞는다. 그리고 우리에게 필요한 포트는 랙당 8개 남짓이다. 「좋은 장비」가 아니라 「맞는 장비」를 고르는 것이 자재 명세의 일이다.
출처: Geek2003CC BY-SA 3.0
라즈베리파이 4를 옆에서 — 보드 두께가 얼마나 얇은지
측면에서 본 사진이라 기판 위로 솟은 부품의 높이가 보인다. 가장 높은 것이 USB 커넥터(약 16 mm)이고 나머지는 5 mm 이하다. 그래서 보드 네 장을 2U(89 mm) 안에 나란히 눕힐 수 있다 — 18장 랙 도면의 U4~U3 이 그 계산이다. 다만 Pi 5 에 액티브 쿨러를 얹으면 높이가 배로 늘어난다. 쿨러를 뺀 도면을 그렸다가 조립 당일에 막히는 것이 흔한 실수다.
출처: LaserlichtCC BY-SA 4.0
Pi 5 8GB 소매 포장 — 검수의 시작점
빨간 상자에 보드 실루엣과 8GB RAM 이 인쇄돼 있다. 개봉 전에 상자에서 확인할 것이 있다 — 모델·용량·수량. 18장 D-3 절차의 「검수와 채번」이 여기서 시작한다. 4 GB 를 8 GB 로 알고 받아 두면 k3s 노드 구성 단계에서야 드러나고, 그때는 반품 기한이 지나 있다.

케이블 공구 세트 — 압착기 · 탈피기 · 테스터 · LSA 툴
파우치 안에 왼쪽부터 케이블 테스터 본체와 리모트(작은 쪽을 반대편 끝에 물린다), 탈피기, LSA(펀치다운) 툴, RJ45 압착기, 그리고 여분 커넥터가 들어 있다.
케이블은 사서 쓰는 편이 낫지만 만들 줄은 알아야 한다. 이유는 두 가지다. 첫째, 랙 안에서는 길이가 딱 맞는 케이블이 필요한데 시판 길이는 0.25 m 단위라 남는 길이가 결국 다발이 된다. 둘째, 19장 시나리오 중 상당수가 물리 계층 문제이고 테스터로 도통을 확인할 줄 모르면 소프트웨어에서 원인을 찾다가 시간을 다 쓴다.
출처: www.heimnetzwerke.netCC BY 4.0DGX Spark 두 대를 묶으면 무엇이 되는가
이 절이 18장에서 가장 중요하다. 8장과 12장에서 세운 규칙이 실제 장비 두 대에서 그대로 성립하는지 확인하는 자리이기 때문이다.
| 항목 | 값 |
|---|---|
| 가속기 | GB10 Grace Blackwell 슈퍼칩 x 2 |
| 메모리 | 128 GB 통합 x 2 = 256 GB (단, 하나의 주소공간이 아니다) |
| 메모리 대역폭 | 약 273 GB/s (대당) |
| 연산 | 약 1,000 TOPS FP4 (대당) |
| 상호연결 | ConnectX-7 — QSFP 200 GbE 로 두 대를 직결 |
| 프로토콜 | RoCE v2 (RDMA over Converged Ethernet) |
| 실효 대역폭 | 200 Gb/s = 25 GB/s |
| 대역폭 비 | 25 / 273 = 약 1/11 |
8장에서 scale-up 과 scale-out 의 차이를 「메모리를 읽는가, 메시지를 보내는가」로 정의했다. DGX Spark 두 대 사이에는 scale-up 이 없다. NVLink 도, UALink 도 없다. 이더넷 위의 RDMA 가 전부이고, 그것은 정의상 메시지다.
12장의 병렬화 배치 규칙을 그대로 적용하면 결론이 바로 나온다.
| 병렬화 | 이 구성에서 | 왜 |
|---|---|---|
| TP 텐서 병렬 | 쓰면 안 된다 | 레이어마다 all-reduce 가 필요하다. 25 GB/s 이더넷에서 하면 통신이 계산을 압도해 두 대가 한 대보다 느려진다 |
| PP 파이프라인 병렬 | 이것을 쓴다 | 스테이지 경계에서만 활성화를 넘긴다. 통신량이 작아 이더넷으로 감당된다 |
| DP 데이터 병렬 | 쓸 수 있다 | 스텝 끝에 한 번만 그래디언트를 합친다. 파인튜닝에 적합 |
| EP 전문가 병렬 | 쓰기 어렵다 | MoE all-to-all 은 TP 만큼은 아니어도 여전히 무겁다 |
70 B 모델(FP8, 가중치 70 GB)을 파이프라인 병렬로 두 대에 나눈다고 하자. 각 대가 35 GB 씩 맡는다. 그러면 토큰 하나가 두 배 빨리 나오는가? 아니다.
토큰 하나를 만들려면 어차피 전체 레이어를 통과해야 한다.
1대: 70 GB / 273 GB/s = 0.256 s → 3.9 tok/s
2대(PP): Spark1 이 35 GB 읽고(0.128 s)
→ 활성화를 넘기고(수 ms)
→ Spark2 가 35 GB 읽는다(0.128 s)
합계 0.256 s + 통신 → 3.9 tok/s 보다 오히려 조금 느리다
파이프라인 병렬은 「한 요청을 빠르게」가 아니라
「마이크로배치를 흘려 넣어 처리량을 올리는」 방법이다.
12장의 버블 그림이 말하던 것이 정확히 이것이다.속도를 두 배로 만드는 병렬화는 텐서 병렬뿐이고, 그건 이 배선에서 쓸 수 없다. 그래서 두 대의 진짜 값어치는 속도가 아니라 적재 용량이다 — 128 GB 한 대에 안 올라가던 모델이 256 GB 두 대에는 올라간다.
그래서 무엇을 올릴 수 있나 (14장 적재 판정의 실제 적용)
| 모델 | 정밀도 | 가중치 | Spark 1대 | Spark 2대 (PP) | 예상 디코드 |
|---|---|---|---|---|---|
| 8 B | FP8 | 8 GB | 여유 | 불필요 | 약 34 tok/s |
| 32 B | FP8 | 32 GB | 여유 | 불필요 | 약 8.5 tok/s |
| 70 B | FP8 | 70 GB | 빠듯 (KV 여유 없음) | 여유 | 약 3.9 tok/s |
| 120 B MoE | FP4 | 60 GB | 여유 | 여유 | 활성 파라미터에 좌우 |
| 235 B MoE | FP4 | 118 GB | 거의 불가 | 여유 | MoE 라 체감은 낫다 |
| 405 B dense | FP4 | 203 GB | 불가 | 빠듯 | 약 1.3 tok/s — 실용 아님 |
맨 아래 줄이 중요하다. 405 B 가 「올라간다」는 것과 「서비스할 수 있다」는 것은 다르다. 1.3 tok/s 는 한 문장을 만드는 데 1분이 걸린다는 뜻이다. 3장에서 DGX Spark 를 처음 소개할 때 한 말이 여기서 실물로 확인된다 — 이 장비는 기능 검증용이지 서빙용이 아니다.
실습 18-1. 두 대를 묶고 규칙을 검증한다.
- ConnectX-7 QSFP 포트를 케이블로 직결하고 RoCE 를 올린다.
ib_write_bw로 실효 대역폭을 재고 25 GB/s 에 얼마나 근접하는지 확인한다. nccl-tests의all_reduce_perf를 1대(내부)와 2대(이더넷)에서 각각 돌려 대역폭 차이를 숫자로 만든다. 8장 실습에서 쟀던 그 격차다.- 70 B 모델을 (a) 1대 단독, (b) 2대 PP 로 각각 서빙하고 TTFT 와 tok/s 를 비교한다. 위 경고가 맞는지 직접 확인한다.
- TP=2 로도 한 번 띄워 본다. 얼마나 느려지는지 재고, 12장의 「TP 는 랙 안에서만」 규칙이 왜 규칙인지 숫자로 남긴다.
라즈베리파이 4대 — 클라우드를 흉내내는 최소 단위
Pi 5 네 대로 성능을 얻으려는 것이 아니다. 대수를 얻으려는 것이다. 「노드가 죽으면 파드가 다른 노드로 옮겨간다」는 것을 눈으로 보려면 노드가 여럿이어야 한다.
| OpenStack | k3s | |
|---|---|---|
| 최소 메모리 | 컨트롤러만 8~16 GB | 512 MB |
| 구성 요소 | Nova·Neutron·Keystone·Glance… 10종 이상 | 단일 바이너리 (60 MB) |
| Pi 5 8GB 에서 | 사실상 불가 | 4노드가 여유롭게 돈다 |
| 배우는 것 | IaaS 의 구조 | 컨테이너 오케스트레이션 · 스케줄링 · 자가치유 |
| 13장과의 연결 | 간접적 | Dynamo 의 플래너와 같은 문제를 다룬다 |
「클라우드 서비스를 구성한다」는 목표에는 둘 다 맞지만, 이 하드웨어에서 실제로 도는 것은 k3s 뿐이다. 그리고 배우려는 것 — 스케줄링·자가치유·쿼터 — 은 k3s 쪽이 오히려 직접적이다. OpenStack 을 꼭 보고 싶다면 미니 PC 한 대에 all-in-one 으로 올려 구조만 관찰하는 편을 권한다.
노드 구성 (4대)
pi-01 control-plane + etcd + worker 10.20.50.21
pi-02 control-plane + etcd + worker 10.20.50.22 ← HA 는 홀수여야 한다
pi-03 control-plane + etcd + worker 10.20.50.23
pi-04 worker 10.20.50.24
etcd 쿼럼 = 3대 중 2대. 한 대가 죽어도 클러스터가 산다.
→ 19장 FLT 시나리오에서 pi-01 을 죽여도 서비스가 유지되는 근거가 이 구성이다.
무엇을 올리나
관측 스택 Prometheus · Grafana · Loki (19장의 화면 전부)
레지스트리 Harbor 또는 registry:2 (모델·이미지 보관)
잡 큐 Redis + 워커 (추론 요청 큐)
데모 서비스 의도적으로 취약한 웹앱 (보안 실습 대상)
※ 추론 자체는 여기서 하지 않는다. DGX Spark 가 한다.
Pi 는 「그 앞뒤를 다루는 층」이다 — 라우팅·큐·관측·저장.이 구성이 13장의 P/D 분리와 닮은 것은 우연이 아니다. 무거운 연산은 전용 하드웨어에, 그 앞뒤의 조율은 값싼 범용 노드에 — 분리 서빙의 발상이 그대로 하드웨어 배치가 된 것이다.
외장 SSD 를 서버 스토리지처럼 쓰기
10장에서 스토리지를 네 계층으로 나눴다. 이 랙에서는 그 계층이 핫(NVMe)과 콜드(외장 SSD) 둘로 압축된다. 줄인 이유와 남긴 이유를 분명히 해 둔다.
| 계층 | 매체 | 위치 | 용도 | 10장의 무엇에 해당 |
|---|---|---|---|---|
| 핫 | NVMe 512GB~1TB x4 | 랙 A U2 | 모델 가중치 · 컨테이너 이미지 · KV 오프로드 | 로컬 NVMe |
| 웜 | (Pi 노드의 NVMe) | 랙 A U4–3 | k3s PV · 로그 · 메트릭 | 분산 파일시스템 자리 |
| 콜드 | 외장 SSD 1~2TB x4 | 랙 B U6–5 | 백업 · 증적 · 스냅샷 | 오브젝트 스토리지 |
무엇으로 공유할 것인가
| 방식 | 장점 | 단점 | 이 랩에서 |
|---|---|---|---|
| NFS | 가장 간단. 10분이면 된다 | 잠금·성능·단일 장애점 | k3s PV 로 쓴다 |
| iSCSI | 블록 장치라 DB 에 적합 | 구성이 번거롭다 | 쓰지 않는다 |
| MinIO | S3 호환. 체크포인트·모델에 맞는 의미론 | 메모리를 좀 쓴다 | 이것을 쓴다 |
10장에서 체크포인트 쓰기가 수 TB/분의 돌발 부하라고 했다. 그 부하의 성질은 「큰 객체를 한 번에 쓰고, 거의 안 읽고, 세대별로 보관」이다. 그건 파일시스템의 의미론이 아니라 오브젝트 스토리지의 의미론이다.
우리 랙의 체크포인트는 수 GB 수준이지만 성질은 같다. 그래서 도구도 같은 것을 쓴다 — 규모가 커졌을 때 배운 것이 그대로 쓰이도록.
3-2-1 을 이 랙에서 성립시키기
3 벌 원본(NVMe) + 백업(외장 SSD) + 원격(학교 스토리지 또는 클라우드)
2 매체 NVMe 와 USB SSD — 컨트롤러도 인터페이스도 다르다
1 벌 랙 밖에 — 랙이 통째로 없어지는 경우를 상정한다
지키지 못하면 무엇이 무너지는가:
- 2매체를 안 지키면 → 같은 펌웨어 버그로 두 벌이 동시에 죽는다
- 1벌을 랙 밖에 안 두면 → 화재·도난·침수에서 전부 잃는다
(2022년 판교 화재가 정확히 이 항목이었다 — 16장 참조)
19장 INC-08(백업 실패 3일간 미탐지)이 검증하는 것은
「백업을 하는가」가 아니라 「백업이 되고 있음을 아는가」다.
외장 SSD — 콜드 계층의 실물
나무 책상 위의 삼성 T5 포터블 SSD 다. 신용카드보다 조금 크고 두께가 10 mm 남짓이다. USB 3.2 로 붙이면 실효 400~500 MB/s 정도가 나온다. 이 속도로는 핫 계층이 될 수 없다 — 모델 가중치를 여기서 읽으면 70 GB 를 읽는 데 150초가 걸린다. 그래서 「백업·증적」이라는 역할이 성능에서 자연스럽게 정해진다.
출처: Tony Webster from Minneapolis, Minnesota, United StatesCC BY 2.0
쌓아 둔 2.5인치 SATA SSD 들 — 고무줄로 묶여 있다
킹스톤 2.5인치 SSD 수십 개가 책상 위에 쌓여 있다. 이 사진이 보여주는 것은 「자산 관리가 안 된 상태」다. 일련번호가 대장에 없고 어느 것이 지워졌는지 모르는 매체는 보관이 아니라 위험이다 — 19장 AUD-01(모의 감사)에서 가장 먼저 지적되는 항목이 이것이다. 우리 랙에서는 외장 SSD 4개 전부에 라벨과 자산번호를 붙이고 대장에 올린다.
출처: SamITech ComputersCC BY-SA 4.0소프트웨어 배치 — 어느 기계에 무엇을 올리나
미니 PC 네 대는 역할이 다르다. 한 대에 몰지 않는 이유는 성능이 아니라 고장을 구분하기 위해서다. 계통이 섞이면 「무엇이 죽었는가」를 물을 수 없다.
보안 스택
kt66 의 fw · ips · web(WAF) · 취약 웹앱 6종 · Wazuh(SIEM). 존 ext/pipe/dmz/int 가 전부 이 기계 안의 브리지로 구현된다.
시설 · 관제
kt66 의 envsim(환경 시뮬레이터) · noc(관제 화면) · injector(고장 주입) · portal. 19장 수업이 시작되고 끝나는 곳이 이 기계의 8020 포트다.
에이전트 운영
dawnofagi 의 에이전트 하네스와 AOC(이상 운영 센터). L1~L4 제어 문서와 게이트가 여기서 컴파일된다.
가상 회사
dawnofagi 의 Pixel Office · 그룹웨어 · 비즈 시스템. 에이전트들이 「일하는」 무대이자 그 결과를 보는 화면.
두 저장소가 겹치는 곳과 갈라지는 곳
kt66 | dawnofagi | |
|---|---|---|
| 무엇을 흉내내나 | 데이터센터 건물 | 회사 조직 |
| 기본 단위 | 층 · 존 · 자산 | 사업 · 팀 · 에이전트 |
| 「고장」이란 | 시설·IT 계통의 이상 (48종) | 에이전트의 오조치 · 게이트 위반 |
| 통제 수단 | 존 경계 · 방화벽 룰 · 런북 | L1~L4 제어 문서 · gate.yaml · 킬 스위치 |
| 관측 | Wazuh · envsim · NOC | AOC (수집→탐지→선별→대응) |
| 사람의 자리 | 근무자 9역할 | HITL 승인 큐 |
kt66 은 「인프라가 고장난다」를 다루고 dawnofagi 는 「운영 주체가 잘못 판단한다」를 다룬다. 실제 운영에서 이 둘은 같이 일어난다 — 장애가 났고, 그 장애에 사람(또는 에이전트)이 잘못 대응해서 더 커진다.
kt66 의 시나리오 AGT-01(에이전트 오조치) 가 정확히 그 접점이다. 그래서 두 스택이 한 랙 안에 있어야 이 장면을 만들 수 있다.
배치 요약
랙 A (app 존)
DGX Spark 01/02 추론 서빙 (Ollama / vLLM), 파인튜닝
Pi 5 x4 (k3s) 관측 스택 · 레지스트리 · 큐 · 데모 서비스
NVMe x4 모델 · 이미지 · KV 오프로드
랙 B (mgmt / ot 존)
미니PC 1 SOC kt66 보안 스택 (fw, ips, web, vuln x6, wazuh)
미니PC 2 DC-OPS kt66 시설·관제 스택 (envsim, noc, injector, portal)
미니PC 3 AGENT dawnofagi 에이전트 (harness, aoc, gate compiler)
미니PC 4 COMPANY dawnofagi 가상회사 (pixel-office, portal, biz)
방화벽 OPNsense — 존 사이의 유일한 길
외장 SSD x4 백업 · 증적
랙을 건너는 연결
DGX Spark 는 app 존의 정식 구성원이다 (10.20.50.10/11).
그 트래픽도 ips 를 지난다 — 우회로를 만들지 않는다.구축 절차 — 순서가 곧 설계다
순서를 지키는 이유는 되돌리기 위해서다. 전원부터 넣고 나중에 배선을 정리하려 하면, 문제가 났을 때 어느 단계에서 생겼는지 알 수 없다.
- D-3 · 검수와 채번. 도착한 물건을 개봉해 수량·외관을 확인하고 모든 장비에 자산번호와 라벨을 붙인다. 이때 붙이지 않으면 영원히 안 붙인다.
- D-2 · 사전 구성. 랙에 넣기 전에 책상에서 OS·펌웨어·SSH 키를 끝낸다. 랙 안에서는 화면도 키보드도 붙이기 어렵다.
- D-1 · 공간 배치. 선반과 레일부터 다 조립한 뒤 장비를 올린다. 아래에서 위로 — 위쪽 장비를 먼저 달면 아래를 조일 수 없다.
- D-day 오전 · 전력. PDU → UPS → 각 장비 순으로 결선하고, 전원을 넣기 전에 전류계로 무부하 상태를 확인한다. 그다음 한 채널씩 켜면서 소비 전력을 기록한다 — 이 표가 나중에 기준선이 된다.
- D-day 오후 · 네트워크. 패치 패널부터 배선하고 색·라벨 규칙을 지킨다. VLAN 을 올린 뒤 존 사이가 실제로 막혀 있는지 먼저 확인한다 — 통하는 것을 확인하기 전에 막힌 것을 확인한다.
- D+1 · 소프트웨어. kt66 → dawnofagi 순. kt66 이 먼저인 것은 dawnofagi 가 그 위에서 관측되어야 하기 때문이다.
- D+2 · 기준선 측정. 무부하·평시·최대부하 세 상태에서 전력·온도·대역폭·응답시간을 잰다. 19장의 모든 「이상」은 이 기준선과의 차이로 정의된다.
- 금속 조각을 턴다. 랙 조립 중 나온 부스러기가 기판 위에 남으면 단락된다.
- 모든 나사를 다시 조인다. 특히 선반 — DGX Spark 가 떨어지면 1.2 kg 이 아래 장비를 친다.
- 극성과 전압을 확인한다. DC PDU 는 채널마다 전압이 다를 수 있다. 5 V 장비에 12 V 를 넣으면 그 자리에서 끝난다.
- 차단기 위치를 확인하고 표시한다. 사고가 났을 때 「어디를 내려야 하는가」를 그 순간에 찾으면 늦다.
검수 체크리스트 — 이것이 통과해야 「구축 완료」다
| 구분 | 확인 항목 | 합격 기준 |
|---|---|---|
| 물리 | 모든 장비에 자산번호·라벨 | 대장과 100 % 일치 |
| 물리 | 케이블 양끝 라벨 | 빠진 곳 0 |
| 전력 | 무부하 → 최대부하 소비 전력 | 0.81 kW 이하, 기록 완료 |
| 전력 | UPS 절체 시험 | 상용 차단 후 무중단, 런타임 10분 이상 |
| 전력 | PDU 채널별 on/off | 전 채널 동작 |
| 열 | 최대부하 30분 후 랙 상단 흡기 온도 | 35 C 이하 |
| 망 | 존 간 차단 | ext→ot 직접 도달 불가 |
| 망 | 존 간 허용 경로 | ext→fw→ips→web→int 도달 가능 |
| 망 | 트렁크 이중화 | 한 가닥 제거 시 무중단 |
| 연산 | DGX 2대 RoCE | ib_write_bw 20 GB/s 이상 |
| 연산 | 모델 서빙 | 70 B 응답 성공, tok/s 기록 |
| 클러스터 | k3s 노드 | 4/4 Ready, 노드 1대 강제 종료 시 파드 이전 |
| 저장 | 백업 왕복 | 쓰고 → 지우고 → 복원 성공 |
| 관측 | 대시보드 | 전력·온도·노드·존이 한 화면에 |
| 보안 | SIEM 수집 | 주입한 사건이 로그에 남는가 |
| 문서 | 기준선 측정표 | 작성 완료 — 19장의 입력이다 |
실습 18-2. 기준선을 만든다.
구축이 끝난 랙에서 다음 세 상태를 각각 10분씩 유지하며 측정한다.
- 무부하 — 전원만 켜고 아무것도 안 돌린다.
- 평시 — 관측 스택과 서빙이 떠 있고 요청은 없다.
- 최대 — 70 B 모델에 부하 테스트를 걸고 k3s 에 스트레스 잡을 띄운다.
각 상태에서 전력(W) · 랙 상하단 온도(C) · 네트워크 사용률 · GPU 사용률을 기록한다. 이 표가 19장에서 「정상이 무엇인가」의 정의가 된다. 기준선이 없으면 이상을 정의할 수 없다 — 15장에서 관측을 다룰 때 한 말 그대로다.
참고 자료
- DeskPi RackMate T2 제품 사양 — 10인치 12U, 280x260x590 mm
- NVIDIA DGX Spark 사양 — GB10, 128 GB, 150x150x50.5 mm, 240 W
- Raspberry Pi 5 제품 문서 — PCIe 2.0 x1, M.2 HAT
- k3s 문서 — 경량 쿠버네티스, HA 구성
- mrgrit/kt66 — 4층 모델 · 존 체계 · envsim · injector · 시나리오 34종
- mrgrit/dawnofagi — L1~L4 제어 평면 · AOC · Experience Graph
- MinIO 문서 — S3 호환 오브젝트 스토리지
- 이 과목 11장(전력·냉각) · 8장(scale-up) · 12장(병렬화 배치) · 14장(용량 산정) — 이 장의 모든 계산이 그 장들에서 나왔다