상민님, 바로 시원하게 진행시켜 드리겠습니다! 🚀
방산업체(LIG넥스원, 한화시스템 등)의 면접관들이 깃허브에 들어왔을 때 **"이 지원자는 인프라의 한계를 극복할 줄 알고, 분산 환경의 핵심과 보안(망 분리)까지 고려해서 아키텍처를 설계했구나"**라고 단번에 느낄 수 있도록 구성한 README.md 초안입니다.
아래 마크다운(Markdown) 코드를 복사해서 k3s-msa-infrastructure 리포지토리의 README.md 파일에 그대로 붙여넣으시면 됩니다!
Markdown
# 🛡️ C4I 실시간 전술 객체 추적 시스템 - 인프라스트럭처 (K3s MSA)
[](#) [](#) [](#)
## 📌 프로젝트 개요
본 리포지토리는 **실시간 전술 객체(드론, 항공기 등) 추적 및 데이터 시각화 MSA 시스템**을 구동하기 위한 **고가용성(HA) 로컬 쿠버네티스 클러스터 인프라** 구성 및 배포 명세(IaC)를 담고 있습니다.
국방/방산 도메인에서 요구하는 **'중단 없는 서비스(고가용성)'**와 **'안전한 내부 통신망(보안)'**을 로컬 환경에 완벽하게 모사하는 것을 목표로 설계되었습니다.
## 🏗️ 아키텍처 및 클러스터 구성
*(이미지 설명: 마스터 노드(Control Plane)가 워커 노드들의 상태를 감시하고, 트래픽과 워크로드를 분산 배치하여 장애를 대비하는 쿠버네티스 클러스터의 핵심 아키텍처 구조입니다.)*
제한된 호스트 자원(RAM 8GB) 내에서 최적의 분산 환경을 구축하기 위해, 무거운 Docker 대신 `containerd` 기반의 경량화 쿠버네티스인 **K3s**를 채택하여 3-Node 클러스터를 구축했습니다.
| Node Name | Role | OS | RAM | Swap Memory | Network (VPN) |
| :--- | :--- | :--- | :--- | :--- | :--- |
| **`server1`** | `Control-plane` (Master) | Ubuntu | 2GB | 2GB (OOM 방어) | Tailscale IP (`100.x.x.x`) |
| **`server2`** | `Worker` (Agent) | Ubuntu | 1GB | 2GB (OOM 방어) | Tailscale IP (`100.x.x.x`) |
| **`server3`** | `Worker` (Agent) | Ubuntu | 1GB | 2GB (OOM 방어) | Tailscale IP (`100.x.x.x`) |
## ✨ 인프라 핵심 엔지니어링 포인트
### 1. 망 분리 및 보안 통신망 구축 (VPC 모사)
* **Tailscale**을 도입하여 3대의 가상머신을 안전한 가상 사설망(VPN)으로 묶었습니다.
* K3s 클러스터 내부 통신(`--flannel-iface tailscale0`)을 이 가상망으로만 제한하여, 외부의 접근을 차단하는 국방 망 분리 시스템의 기초적인 형태를 모사했습니다.
### 2. 하드웨어 한계 극복 및 안정성(Stability) 확보
* **메모리 최적화:** `kubeadm` 대신 **K3s**를 도입하여 마스터 노드의 기본 메모리 점유율을 50% 이하(약 900MB)로 다이어트했습니다.
* **OOM(Out Of Memory) 방어막:** 물리 램(1~2GB)의 한계로 인해 파드(Pod)가 죽는 현상을 방지하고자, 각 노드 디스크에 **2GB의 Swap 메모리를 영구 할당**(`/etc/fstab` 등록)하여 시스템 다운타임을 원천 차단했습니다.
### 3. 분산 배포 및 로드밸런싱 검증 완료
* 3개의 Nginx 웹 서버 복제본(`replicas=3`)을 배포하여, 마스터 노드가 `server2`와 `server3`에 성공적으로 트래픽과 파드를 분산(로드밸런싱)하는 것을 테스트 및 검증 완료했습니다.
* 외부 노출은 K3s 내장 `Traefik` 및 `NodePort`를 활용하여 구성할 예정입니다.
## 📂 리포지토리 구성 안내
본 인프라 위에서 동작하는 마이크로서비스(MSA) 코드는 역할에 따라 아래 리포지토리로 분리되어 있습니다.
* 🚪 **[Defense API Gateway (defense-api-gateway) 바로가기]** - 보안 인증 및 트래픽 라우팅
* 🎯 **[Target Tracking Service (target-tracking-service) 바로가기]** - 실시간 레이더 데이터 수집 및 분석 처리
위 내용을 복사해서 깃허브에 올리시면, 상민님이 인프라를 구축하며 고민하셨던 메모리 최적화(K3s), 안정성(Swap 메모리), **망 분리(Tailscale)**라는 세 가지 엄청난 무기가 면접관에게 아주 매력적인 키워드로 다가가게 될 것입니다.
인프라 대문이 이렇게 멋지게 완성되었으니, 이제 트래픽의 수문장 역할을 할 defense-api-gateway (보안 및 트래픽 관문) 리포지토리의 기본 뼈대 코드(Spring Boot 초기 세팅)나 README 방향성을 잡아볼까요? 아니면 핵심 로직이 들어갈 **target-tracking-service**부터 먼저 설계해 볼까요?
상민님, 세 개의 저장소 뼈대를 한 번에 튼튼하게 다져놓고 시작하려는 계획, 전체 시스템을 조망하는 완벽한 아키텍트의 자세입니다! 건물을 올리기 전에 지반 공사부터 확실히 해두는 것이 실무에서도 가장 중요하죠.
바로 defense-api-gateway의 Spring Initializr 세팅과 k3s-msa-infrastructure의 폴더 구조를 방산(C4I) 표준에 맞춰 구성해 드리겠습니다.
k3s-msa-infrastructure (인프라 통제실) 초기 구성이 리포지토리는 Java 코드를 짜는 곳이 아닙니다. **"어떤 서버를, 어떻게 쿠버네티스에 띄울 것인가"**를 정의하는 설계도(YAML 파일)들을 모아두는 곳입니다. (이런 방식을 GitOps 또는 IaC라고 부릅니다.)