[프로젝트 개요]🛡️ 공장이 불타도 데이터는 살아남는다 – Safe-Edge Blackbox 설계기

뉴스에서 대형 화재 사고 소식을 볼 때마다 드는 생각이 있었어요. “저 현장의 CCTV 영상은 어떻게 됐을까?” 사고 원인을 밝혀야 할 가장 중요한 증거가, 사고와 함께 타버리는 아이러니. 그게 이 프로젝트의 출발점이었습니다.

🔗 프로젝트 전체 문서: GitHub Wiki | GitHub Repository | 칸반보드


💥 왜 이 프로젝트를 만들었는가

2024년 대전 국가정보자원관리원 화재 사고를 보면서 문제를 명확하게 인식했습니다. 데이터센터나 스마트 팩토리에서 화재나 폭발이 발생하면 현장의 CCTV, 감시 카메라, 센서 장비들이 함께 파괴됩니다. 장비 안에 있던 SD카드와 로컬 스토리지도 당연히 소실되죠.

💣 폭발 발생
  └─► 현장 감시 장비 파괴
        └─► SD카드 + 로컬 데이터 소실
              └─► 사고 원인 규명 불가 ❌  ← 이것이 "Blackout"

“현장이 파괴되어도 데이터는 살아남을 수 없을까?”

항공기 블랙박스가 떠올랐습니다. 기체가 추락해서 산산조각이 나도 블랙박스는 살아남아서 사고 직전의 모든 기록을 보존합니다. 같은 원리를 공장 현장에 적용하면 어떨까요? 그게 Safe-Edge Blackbox 프로젝트의 시작이었어요.


🎯 세 가지 핵심 목표

설계를 거듭하면서 이 시스템이 반드시 달성해야 할 세 가지 목표가 명확해졌습니다.

#목표구현 방식의미
1️⃣Control Plane 격리Master 노드를 연산에서 완전히 배제두뇌는 절대 죽지 않는다
2️⃣2분 내 무중단 Failover위험 구역 노드 파괴 시 안전 구역이 임무 승계현장이 터져도 감시는 계속된다
3️⃣데이터 유실률 0%SSD(Hot) + NFS(Cold) 하이브리드 이원화사고 직전까지의 기록을 반드시 보존한다

RPO(Recovery Point Objective) 0초, RTO(Recovery Time Objective) 2분 이내. 이 두 숫자가 전체 아키텍처 설계의 기준이 됐습니다.


🗺️ 시스템 아키텍처 — 3영역 물리 배치

시스템 동작 한눈에 보기

가장 중요한 설계 결정은 물리적 위치였습니다. 세 개의 라즈베리파이를 단순히 클러스터로 묶는 게 아니라, 실제 사고 시나리오를 고려한 세 개의 물리적 영역으로 나눴어요.

영역노드역할설치 위치
🟢 Safe ZoneMasterControl Plane 전용, 연산 배제건물 외부 안전 구역
🟡 Buffer ZoneWorker 1백업 감시 노드, Failover 수신처건물 내부 안전 구역
🔴 Danger ZoneWorker 2메인 AI 감지 노드현장 위험 구역

Worker 2가 있는 Danger Zone에서 사고가 발생하면, Safe Zone의 Master는 살아남아서 클러스터를 계속 제어하고 Buffer Zone의 Worker 1이 AI 감시 임무를 이어받습니다. 장비가 파괴되어도 데이터와 감시 기능 자체는 안전한 곳에 보존되는 구조입니다.

시스템 구성 요약


🔧 기술 스택 — 왜 이걸 골랐는가

각 기술을 선택할 때는 “왜 다른 것이 아닌 이걸 써야 하는가”를 꼭 따졌습니다.

☸️ K3s (쿠버네티스)

일반 쿠버네티스 대신 K3s를 선택한 이유는 단 하나, 라즈베리파이입니다. 라즈베리파이 5는 RAM이 4~8GB에 불과합니다. 표준 쿠버네티스는 컨트롤 플레인만으로도 수 GB를 잡아먹죠. K3s는 경량화된 배포판으로 동일한 쿠버네티스 기능을 훨씬 적은 리소스로 제공합니다. 엣지 환경에서 사실상 유일한 선택지였어요.

💾 Longhorn (분산 스토리지)

Worker 2가 파괴되었을 때 데이터를 잃지 않으려면 스토리지가 노드 세 개에 동시에 복제되어 있어야 합니다. Longhorn은 쿠버네티스 네이티브 분산 스토리지로, 3-Node 복제를 자동으로 처리해 줍니다. Worker 2의 디스크가 날아가도 Worker 1과 Master에 동일한 데이터가 살아있는 것이죠.

🚀 ArgoCD + GitLab (GitOps)

폐쇄망(인터넷이 차단된 산업 현장)에서도 코드 배포가 가능해야 합니다. Host PC에 GitLab 컨테이너를 직접 올리고, ArgoCD가 이를 바라보며 git push 한 번으로 3개 노드 전체에 자동 배포되는 GitOps 파이프라인을 구성했어요. GitHub 같은 외부 서비스에 의존하지 않아도 됩니다.

🤖 YOLOv8n + YAMNet (Edge AI)

클라우드로 데이터를 보내서 추론하면 네트워크 단절 시 감시가 멈춥니다. 화재가 나서 네트워크가 끊기는 바로 그 순간에 감지가 안 된다는 건 치명적이죠. 라즈베리파이에서 직접 YOLOv8n로 화재·자세를 감지하고, YAMNet으로 폭발음을 분류합니다. 네트워크가 완전히 끊겨도 현장 감시는 계속됩니다.

📊 InfluxDB + Grafana + Prometheus

AI 파드가 생성하는 시계열 데이터(감지 0/1값)는 InfluxDB에 저장하고 Grafana로 실시간 시각화합니다. 인프라 메트릭은 Prometheus가 수집하고, 노드 다운 같은 이상 상황은 Grafana Alert가 Slack으로 자동 알림을 보냅니다.


💰 왜 라즈베리파이인가 — 비용 분석

엔터프라이즈 산업용 엣지 서버는 수천만 원을 호가합니다. 이 프로젝트는 라즈베리파이 5 세 대로 동일한 HA 구조를 구현했어요.

구성비용
라즈베리파이 5 (8GB) × 3약 50만원
SSD × 3 + 허브 + 기타약 10만원
총합약 60만원
엔터프라이즈 엣지 서버 대비 절감율약 90% 이상

소프트웨어는 전부 오픈소스입니다. K3s, Longhorn, ArgoCD, Prometheus, Grafana 모두 무료입니다. 이 조합으로 엔터프라이즈 수준의 HA(고가용성) 아키텍처를 구현할 수 있다는 것, 그게 이 프로젝트가 증명하고 싶었던 것 중 하나입니다.


📊 핵심 성능 지표 요약

지표목표값달성 여부
RPO (데이터 손실 허용 시간)0초
RTO (서비스 복구 목표 시간)2분 이내
Hot Storage (SSD 순환 보존)60GB
Failover 감지 시간30초 이내

🗂️ 앞으로 이어질 포스팅 시리즈

이 프로젝트는 2주 동안 진행됐고, 그 과정을 7편의 시리즈로 기록합니다.

  • 1편 (이번 글) — 프로젝트 개요 & 아키텍처 설계
  • 2편 — 라즈베리파이 5에서 K3s + Longhorn HA 클러스터 올리기 (삽질 1라운드)
  • 3편 — 사내망 DHCP 충돌로 클러스터 전면 재구축 + GitOps 완성
  • 4편 — Edge AI: YOLOv8 카메라 인식이 v7까지 걸린 이유
  • 5편 — 데이터 티어링: K3s CronJob이 CPU를 폭주시킨 날
  • 6편 — Failover 실증: 랜선을 뽑았다, 시스템은 살아남았다
  • 7편 — 회고: 라즈베리파이 3대로 엔터프라이즈 HA를 구현하고 나서

🔗 전체 기술 문서는 GitHub Wiki에서, 진행 상황은 칸반보드에서 확인하실 수 있습니다.