🏗️ 1. 시스템 아키텍처 개요 (System Architecture Overview)
FireNavi는 3-Tier Architecture를 채택하여 센서 데이터 수집부터 최종 사용자 시각화까지의 전체 파이프라인을 체계적으로 구성합니다. 각 레이어는 독립적으로 확장 가능하며, 장애 격리(Fault Isolation)를 통해 시스템 전체의 가용성을 보장합니다.
3-Tier Architecture 구조
로컬 추론
실시간 전처리
CFD 엔진
경로 최적화
Web Dashboard
Mobile App
End-to-End 데이터 플로우
온도 / 연기감지기
로컬 추론
CFD Engine
대피 안내
Layer별 구성 요소
| Layer | 구성 요소 | 기술 스택 | 역할 |
|---|---|---|---|
| Edge Layer | IoT 센서, CCTV, 온도 센서, 연기 감지기 | MQTT, AMQP, Edge GPU | 실시간 데이터 수집 및 로컬 추론 |
| Processing Layer | AI Inference Server, CFD Engine, Path Optimizer | PyTorch, OpenFOAM, Python | 화재 시뮬레이션 및 경로 최적화 연산 |
| Presentation Layer | Unity 3D, Web Dashboard, Mobile App | Unity, React, WebSocket | 3D 시각화, 대피 안내, 관리 인터페이스 |
📡 2. Edge Computing 구조 (Edge Computing Structure)
선박 내 Edge Server는 센서 데이터를 실시간으로 수집/집계하고, 로컬 AI 추론을 통해 100ms 이내의 응답 시간을 보장합니다. 위성 통신 의존도를 최소화하여 해상 환경에서도 안정적인 운영이 가능합니다.
On-Ship Edge Server 사양
| 항목 | Primary Server | Secondary Server (Failover) |
|---|---|---|
| CPU | Intel Xeon W-2295 (18C/36T) | Intel Xeon W-2275 (14C/28T) |
| GPU | NVIDIA A4000 (16GB VRAM) | NVIDIA T4 (16GB VRAM) |
| RAM | 128GB DDR4 ECC | 64GB DDR4 ECC |
| Storage | 2TB NVMe SSD (RAID 1) | 1TB NVMe SSD |
| Network | 10GbE + Ship LAN | 10GbE + Ship LAN |
| OS | Ubuntu Server 22.04 LTS | Ubuntu Server 22.04 LTS |
Sensor Data Aggregation Pipeline
온도 / 연기 / 가스
Topic 기반 라우팅
데이터 정규화
<100ms 추론
알림 발송
센서 데이터 스키마 (MQTT Payload)
이중화 및 네트워크 구성
Redundancy: Dual Edge Server
- Active-Standby 구성으로 자동 Failover 지원
- Heartbeat 모니터링 (1초 간격)
- Failover 전환 시간: 5초 이내
- 데이터 동기화: Redis Sentinel 기반 실시간 복제
- 센서 데이터 로컬 버퍼링 (최대 24시간)
Network 구성
- Primary: Ship LAN (10GbE Backbone)
- Backup: VSAT 위성 통신 (2~4 Mbps)
- VLAN 분리: 센서망 / 서비스망 / 관리망
- 네트워크 모니터링: SNMP + Prometheus
- 자동 경로 절체: OSPF 프로토콜
🏢 3. BIM/IFC 연동 시스템 (BIM/IFC Integration)
선박 설계 데이터(BIM)를 IFC(Industry Foundation Classes) 표준 형식으로 파싱하여 대피 경로 최적화에 필요한 Navigation Graph를 자동으로 생성합니다. 공간(Space)은 노드(Node)로, 출입구(Door/Opening)는 간선(Edge)으로 매핑됩니다.
IFC File Parsing Pipeline
파일 로드
IfcDoor 추출
경계 계산
가중치 산정
Unity 연동
IFC to Navigation Graph 변환
| IFC Entity | Graph Element | 속성 매핑 | 예시 |
|---|---|---|---|
| IfcSpace | Node (V) | 면적, 수용인원, 위치, 덱번호 | Cabin-D3-204, Corridor-D3-Main |
| IfcDoor | Edge (E) | 폭, 높이, 개폐상태, 방화문여부 | Door-D3-204-Corridor |
| IfcStair | Edge (E, vertical) | 폭, 경사도, 연결 덱 | Stair-D3-D4-Fwd |
| IfcSpace (Assembly) | Node (Terminal) | 최대수용, 구명보트 접근성 | MusterStation-A, MusterStation-B |
Graph 자료구조 정의
V = {rooms, corridors, stairs, muster_stations}E = {doors, openings, stairways, elevators}α = 1.0 (기본 거리 가중치)β = dynamic (실시간 위험도 반영, 0~10)γ = dynamic (혼잡도 반영, 0~5)
IFC Parser - Python 코드
자동 Floor Plan 추출
IFC 모델로부터 각 Deck별 평면도를 자동으로 추출하여 Unity 3D 환경에 로드합니다. 벽체, 복도, 출입구, 계단 등의 건축 요소를 그래픽 요소로 변환하며, 실시간 위험도에 따라 색상 코딩을 적용합니다.
- IfcWall / IfcWallStandardCase → 벽체 메시 생성
- IfcSlab → 바닥/천장 평면 생성
- IfcDoor → 출입구 인터랙티브 오브젝트
- IfcStair → 수직 연결 통로 표시
- 자동 LOD (Level of Detail) 적용으로 렌더링 최적화
🔥 4. OpenFOAM CFD 통합 (OpenFOAM CFD Integration)
OpenFOAM(Open Source Field Operation and Manipulation)을 활용하여 선박 내부의 화재 시뮬레이션을 수행합니다. 화재 발생 시 연기 확산, 온도 분포, 가스 농도 등을 사전 계산하여 Scenario Library를 구축하고, 실시간 시나리오 매칭을 통해 즉각적인 위험 예측을 제공합니다.
Fire Simulation Case 파일 구조
blockMeshDict - 선박 구획 메시 구성
turbulenceProperties: k-epsilon 모델
Boundary Conditions 요약
| 경계면 | 온도 (T) | 속도 (U) | 설명 |
|---|---|---|---|
| Fire Source | fixedValue (800~1200K) | fixedValue (plume model) | 화재 발생 위치 - HRR 기반 열원 |
| Walls | zeroGradient | noSlip | 단열 벽면 (adiabatic wall) |
| Ventilation Inlet | fixedValue (293K) | fixedValue (0.5 m/s) | HVAC 급기구 |
| Ventilation Outlet | inletOutlet | pressureInletOutletVelocity | HVAC 배기구 |
| Deck Floor / Ceiling | zeroGradient | noSlip | 바닥/천장 경계 |
Post-Processing Pipeline
T, U, CO2, soot
시간별 슬라이스
Risk Score 산정
UI 렌더링
Real-time vs Pre-computed 전략
Pre-computed Scenario Library
- 화재 위치별 시나리오 사전 계산 (200+ 시나리오)
- 각 시나리오: 시간 단계별 온도/연기/가스 분포
- HVAC 상태별 (가동/정지/부분가동) 변형 포함
- 선박 건조 시 1회 계산, 이후 DB 저장
- 시나리오 매칭 시간: <1초
Real-time CFD (보정용)
- 실제 센서 데이터 기반 보정 시뮬레이션
- Coarse mesh로 빠른 근사 계산
- GPU 가속 (CUDA) 적용
- 계산 시간: 30~60초 (보정 사이클)
- Pre-computed 시나리오와 블렌딩
🎮 5. Unity 3D 시각화 엔진 (Unity 3D Visualization Engine)
Unity 3D를 활용하여 선박 내부의 화재 상황, 연기 확산, 승객 이동을 실시간 3D로 시각화합니다. WebSocket 통신을 통해 Python 백엔드와 연동하며, BIM 데이터를 자동으로 로드하여 현실적인 선박 환경을 재현합니다.
Real-time Rendering Pipeline
JSON 파싱
Fire/Smoke 업데이트
60 FPS 렌더링
VR Headset
WebSocket 통신 프로토콜
Python 서버와 Unity 클라이언트 간 WebSocket을 통해 실시간 양방향 통신을 수행합니다. 데이터는 JSON 형식으로 전송되며, 초당 10~30회 업데이트됩니다.
핵심 시각화 컴포넌트
| 컴포넌트 | Unity 기술 | 데이터 소스 | 업데이트 주기 |
|---|---|---|---|
| BIM 자동 로딩 | IFC Importer + Mesh Generator | IFC 파일 (빌드 시) | 초기 1회 |
| 화재 시각화 | VFX Graph Particle System | fire.origin, fire.intensity | 10 Hz |
| 연기 시각화 | Volumetric Fog + Shader Graph | smoke.density_map | 10 Hz |
| 에이전트 이동 | NavMesh Agent + Animation | agents[].position, path | 30 Hz |
| 위험지도 오버레이 | Custom Shader (Heatmap) | risk_map[].level | 10 Hz |
| 경로 표시 | Line Renderer + Arrow Mesh | agents[].path | 10 Hz |
VR Training Mode
Unity의 XR Interaction Toolkit을 활용하여 VR 기반 대피 훈련 모드를 제공합니다. 승무원은 가상 선박 환경에서 화재 대피 시나리오를 체험하고, 실제 상황에서의 대응 능력을 사전에 훈련할 수 있습니다.
- 지원 디바이스: Meta Quest 3, HTC Vive Pro 2, Varjo XR-4
- 훈련 시나리오: 화재 발견, 초기 대응, 승객 안내, 구명보트 탑승
- 평가 항목: 대응 시간, 올바른 경로 선택, 의사소통 정확도
- 리플레이: 훈련 기록 저장 및 3D 리플레이 지원
📊 6. 데이터 파이프라인 (Data Pipeline)
FireNavi의 데이터 파이프라인은 실시간 스트리밍과 배치 처리의 이중 구조로 구성됩니다. 센서 데이터는 MQTT를 통해 실시간으로 수집되고, BIM 데이터와 사전 계산 시나리오는 배치로 처리됩니다.
실시간 스트리밍 파이프라인
500+ 디바이스
QoS 1
이상 탐지
경로 최적화
PA / Mobile
배치 처리 파이프라인
선박 설계 데이터
그래프 생성
시나리오 계산
인덱싱
데이터 저장소 구성
| 저장소 | 기술 | 용도 | 데이터 보존 |
|---|---|---|---|
| Time-series DB | InfluxDB 2.x | 센서 데이터 (온도, 연기, 가스 농도) | 30일 (로컬), 1년 (클라우드) |
| Graph DB | Neo4j 5.x | 선박 레이아웃, Navigation Graph | 영구 저장 |
| Scenario DB | PostgreSQL + TimescaleDB | CFD 시뮬레이션 결과, 시나리오 라이브러리 | 영구 저장 |
| Cache | Redis 7.x | 실시간 상태, 세션, 센서 최신값 | In-memory (TTL 기반) |
| Object Store | MinIO (S3 호환) | IFC 파일, 훈련 기록, 로그 아카이브 | 영구 저장 |
데이터 플로우 다이어그램
🚀 7. 배포 및 운영 (Deployment & Operations)
FireNavi는 Docker 컨테이너와 Kubernetes 오케스트레이션을 통해 선박 내 Edge Server에 배포됩니다. Prometheus + Grafana 기반 모니터링과 다채널 알림 시스템을 통해 24/7 안정적인 운영을 보장합니다.
Docker 컨테이너 구성
Kubernetes 오케스트레이션
| 서비스 | Replicas | Resource Limits | Health Check |
|---|---|---|---|
| firenavi-edge | 2 (Active-Standby) | 4 CPU, 8GB RAM, 1 GPU | /health (5s interval) |
| firenavi-ai | 2 (Load Balanced) | 8 CPU, 16GB RAM, 1 GPU | /health (10s interval) |
| firenavi-api | 3 (Load Balanced) | 2 CPU, 4GB RAM | /health (5s interval) |
| firenavi-ws | 2 (Load Balanced) | 2 CPU, 4GB RAM | WebSocket ping (10s) |
| mosquitto | 2 (Clustered) | 1 CPU, 2GB RAM | TCP 1883 (5s) |
모니터링: Prometheus + Grafana
시스템의 모든 컴포넌트는 Prometheus 메트릭을 노출하며, Grafana 대시보드를 통해 실시간으로 모니터링됩니다. 사전 정의된 경고 규칙을 통해 이상 상황을 즉시 감지합니다.
다채널 알림 시스템 (Alert System)
| 채널 | 대상 | 지연시간 | 내용 |
|---|---|---|---|
| PA 방송 (Public Address) | 전체 승객 + 승무원 | <2초 | 화재 위치, 대피 방향, 집결지 안내 |
| 모바일 앱 Push | 개인별 승객 | <3초 | 개인 맞춤 대피 경로, 턴바이턴 안내 |
| Deck Display | 구역별 승객 | <2초 | 동적 대피 경로 표시, 구역 위험도 |
| Bridge Console | 선장 / 항해사 | <1초 | 전체 상황 개요, 대피 진행률 |
| Crew Headset | 대피 담당 승무원 | <2초 | 담당 구역 상황, 도움 필요 승객 위치 |
Drill Mode vs Emergency Mode
Drill Mode (훈련 모드)
- 시뮬레이션 기반 가상 화재 시나리오
- 실제 센서 데이터 사용하지 않음
- PA 방송: "THIS IS A DRILL" 접두사
- 훈련 결과 기록 및 분석 리포트 생성
- IMO SOLAS 규정 주간 훈련 대응
- VR 훈련 모드와 연동 가능
Emergency Mode (비상 모드)
- 실제 센서 데이터 기반 실시간 분석
- 모든 알림 채널 동시 활성화
- PA 방송: 긴급 대피 안내 자동 송출
- EPIRB/SART 연동 가능
- 블랙박스 기록 자동 시작
- 외부 기관 (해경, 보험사) 자동 통보
시스템 건강 모니터링 항목
- CPU/GPU 사용률: 임계값 80% 초과 시 경고
- 메모리 사용률: 임계값 85% 초과 시 경고
- 센서 연결 상태: 미응답 센서 5% 초과 시 경고
- 네트워크 지연: Edge-Server 간 100ms 초과 시 경고
- 디스크 사용률: 90% 초과 시 로그 자동 정리
- 서비스 Health Check: 3회 연속 실패 시 자동 재시작
🔒 8. 보안 및 인증 (Security & Certification)
해양 사이버보안 국제 기준을 준수하며, 네트워크 분리, 데이터 암호화, 역할 기반 접근 제어를 통해 시스템의 무결성과 가용성을 보장합니다. DNV GL 사이버보안 인증 획득을 목표로 설계되었습니다.
Maritime Cybersecurity 준수 기준
| 기준/규정 | 발행 기관 | 적용 범위 | 준수 상태 |
|---|---|---|---|
| IMO MSC-FAL.1/Circ.3 | IMO (국제해사기구) | 해양 사이버 위험관리 가이드라인 | 준수 |
| IACS UR E26/E27 | IACS | 선박 사이버 복원력 요구사항 | 준수 |
| IEC 62443 | IEC | 산업 자동화 보안 표준 | 준수 |
| NIST Cybersecurity Framework | NIST | 사이버보안 관리 프레임워크 | 준수 |
| DNV GL Cyber Security | DNV GL | 선급 사이버보안 인증 | 인증 진행중 |
네트워크 분리 (Network Segmentation)
데이터 암호화 (Data Encryption)
| 구간 | 프로토콜 | 암호화 방식 | 키 관리 |
|---|---|---|---|
| 전송 중 (In-transit) | TLS 1.3 | AES-256-GCM / ChaCha20-Poly1305 | 자동 인증서 갱신 (Let's Encrypt) |
| 저장 중 (At-rest) | LUKS / dm-crypt | AES-256-XTS | TPM 2.0 기반 키 저장 |
| MQTT | MQTT over TLS | TLS 1.3 + Client Certificate | 센서별 개별 인증서 |
| WebSocket | WSS (WebSocket Secure) | TLS 1.3 | JWT Token 인증 |
| 위성 통신 | VPN (WireGuard) | ChaCha20-Poly1305 | Pre-shared Key + Certificate |
역할 기반 접근 제어 (RBAC)
| 역할 (Role) | 접근 권한 | 인증 방법 | 대상 |
|---|---|---|---|
| ADMIN | 시스템 전체 관리, 설정 변경, 사용자 관리 | MFA (비밀번호 + OTP) | 시스템 관리자 |
| CAPTAIN | 전체 상황 모니터링, 비상모드 전환, 알림 관리 | 생체인식 + PIN | 선장 / 부선장 |
| OFFICER | 담당 구역 모니터링, 대피 안내, 훈련 관리 | ID 카드 + PIN | 항해사 / 안전관리자 |
| CREW | 할당 구역 대피 안내, 상태 보고 | ID 카드 | 일반 승무원 |
| PASSENGER | 개인 대피 경로 수신 (읽기 전용) | 탑승권 QR + 객실번호 | 승객 |
DNV GL 사이버보안 인증 로드맵
Gap 분석
대응 계획 수립
테스트
인증 취득
🔧 기술 스택 종합 (Technology Stack Summary)
| 영역 | 기술 | 버전 | 라이선스 |
|---|---|---|---|
| AI / ML | PyTorch, Stable Baselines3, ONNX Runtime | 2.x, 2.x, 1.x | BSD / MIT / MIT |
| CFD | OpenFOAM, ParaView | v11, 5.x | GPL / BSD |
| BIM | IfcOpenShell, NetworkX | 0.7.x, 3.x | LGPL / BSD |
| 3D Visualization | Unity, URP, XR Interaction Toolkit | 2022 LTS | Unity Pro |
| Database | InfluxDB, Neo4j, PostgreSQL, Redis | 2.x, 5.x, 16, 7.x | MIT / GPL / PostgreSQL / BSD |
| Messaging | Eclipse Mosquitto, Apache Kafka | 2.x, 3.x | EPL / Apache 2.0 |
| Monitoring | Prometheus, Grafana, ELK Stack | 2.x, 10.x, 8.x | Apache 2.0 / AGPL / Elastic |
| Container / Orch | Docker, Kubernetes | 24.x, 1.29 | Apache 2.0 / Apache 2.0 |