Skip to content
@BeeGuardians

BeeGuardians

우리FISA 4기 최종 프로젝트 🏆우수상 수상팀 - BeeGuardians


"배우고 도전하고 성장하세요. 당신의 실력을 수호하는 공간, 가디언즈."

모의해킹 문제와 실시간 환경 배포가 결합된 워게임 플랫폼을 개발했습니다.
BeeGuardians는 별도의 설치 없이, 웹에서 바로 실습하고 실력을 시각화하며 성장할 수 있습니다.



⋄ Team 꿀벌 방범대 소개


우리FISA 4기 클라우드 엔지니어링 과정 수강생 5명으로 구성된 팀입니다.
웹 애플리케이션 개발과 운영 및 배포(DevOps) 전반을 함께 다루며
약 2개월간 협업을 통해 BeeGuardians 프로젝트를 완성했습니다.

[PM] 한정현
@letsgojh0810
[PL] 나홍찬
@HongChan1412
김예진
@yeejkim
박지혜
@parkjhhh
석혜진
@HyeJinSeok



⋄ 프로젝트 기간

📆 2025.04.18 ~ 2025.06.10



⋄ Github Repositories


Repo Screenshot

🔗 BeeGuardians 전체 저장소 바로가기



⋄ 마일스톤


마일스톤


⋄ Git Branch 전략


기능 및 페이지 개발은 dev 브랜치에서 일괄 통합한 뒤, 테스트를 거쳐
최종적으로 main 브랜치에 병합하여 운영 환경에 배포했습니다.

마일스톤



⋄ Overview


아래 순서로 BeeGuardians 프로젝트의 주요 내용을 소개합니다. (클릭 시 해당 섹션으로 이동 가능) :

1. 프로젝트 개요

2. 프로젝트 소개

3. 기술 스택

4. 아키텍처

5. 프론트엔드

6. 백엔드 및 DB

7. 인프라

8. 서비스 평가 및 기대효과



1. 프로젝트 개요


🌍 도입 배경

  • 세계경제포럼(WEF)의 「글로벌 사이버보안 전망 2025」보고서에 따르면, 전 세계적으로 사이버 보안 인력은 400만 명 이상 부족함

  • 최근 국내 대형 통신사를 비롯하여 많은 기업들에서 해킹 사고가 잇따라 발생하면서 보안의 중요성이 대두되고 있음


🎯 문제 인식

  • 보안이나 해킹 관련 실습을 해보려면 가상머신(VM) 설정, 각종 도구 설치 등 복잡한 환경 구성이 선행되어야 함

  • 이 경우 실습 환경이 무겁고 개인별로 독립된 실습 공간을 확보하기 어려움

  • 여러 사용자가 동일한 환경을 공유할 경우 충돌이나 오류가 발생할 수 있음

  • 실습 플랫폼 자체도 부족하거나, 유료 플랫폼이 많아 자유로운 접근이 어려움


💡 해결 방안

  • 보안이나 해킹 실습 문제를 쉽고 빠르게 수행할 수 있도록 Kubernetes 기반으로 실습 환경(pod) 을 자동 생성하는 구조를 설계함

  • 사용자는 버튼 클릭만으로 개인별 격리된 실습 공간에 접근 가능하며, 별도의 환경 설정이나 복잡한 설치 없이 실습이 가능함

  • 실습 환경은 사용자마다 분리되므로 충돌 없이 안정적인 실습이 가능함

  • 전체 과정은 웹에서 이루어지며 접근성과 반복 학습 효율이 높음


Note

Pod는 Kubernetes에서 가장 작은 배포 단위로, 하나 이상의 컨테이너를 포함할 수 있는 격리된 실행 환경입니다.
전통적인 가상머신(VM)은 각 인스턴스마다 전체 운영체제를 포함해 무겁고 부팅시간이 오래 걸리는 반면,
Pod는 호스트 OS를 공유하면서 필요한 애플리케이션만 실행해 리소스 사용이 효율적이고 배포 속도가 빠릅니다.





2. 프로젝트 소개


🖥️ Kubernetes 기반 모의해킹 트레이닝 플랫폼 - “Guardians”

  • 보안 위협에 실질적으로 대응할 수 있도록 누구나 쉽게 실습 가능한 모의해킹 훈련 플랫폼

  • 워게임별로 pod가 자동 생성되어 격리된 환경에서 모의해킹 기법 실습 가능

  • 사용자의 워게임 관리, 활동 기록, 성과 분석 등이 유기적으로 반영되는 서비스 구조


🚩 모의해킹 실습 환경 - 워게임이란?

  • 다양한 해킹 관련 문제를 풀어보며 보안 기술을 연습하는 실습 콘텐츠

  • 사용자는 웹 해킹/포렌식/리버싱 등 여러 분야의 문제를 해결해나가며 각 문제에 숨겨진 문자열인 ‘flag’를 찾아내는 방식으로 진행됨

  • flag는 문제해결 과정 중에 발견할 수 있도록 설계되어 있어, 실제 보안 취약점을 분석하고 추적하는 연습에 적합함

유저 다이어그램


🎲 워게임 pod 생성 요약도

POD요약도

1. React (프론트엔드)  
   → 사용자는 웹 UI를 통해 워게임을 선택  

2. Spring Boot (백엔드)  
   → 요청된 워게임에 맞는 컨테이너 환경을 설정하고, 생성할 pod의 세부 스펙을 정의  

3. Fabric8 라이브러리  
   → Spring 내부에서 Kubernetes 클러스터와 직접 통신하며 pod 생성 명령을 전달  

4. Kubernetes Pod  
   → 워게임 환경 컨테이너 실행  

5. Amazon ECR  
   → 워게임 Docker 이미지를 저장해두는 컨테이너 이미지 저장소  
   → 워게임 생성 시 해당 이미지를 기반으로 pod가 생성됨

Important

Fabric8은 Java 기반 애플리케이션에서 K8s 리소스를 코드로 생성·관리할 수 있도록 해주는 오픈소스 라이브러리입니다.
이를 통해 yaml 파일 없이 Java 코드로 Deployment, Pod, Service 등을 정의할 수 있습니다.

Amazon ECR은 Elastic Container Registry의 약자로, AWS에서 제공하는 완전관리형 Docker 이미지 저장소입니다.
이를 통해 K8s 클러스터에서 이미지 pull 시 빠르고 안정적인 접근이 가능합니다.


📋 서비스 주요 기능

기능 영역 설명
워게임 실습 다양한 난이도의 워게임 선택 및 격리된 실습 환경(Pod) 자동 생성
채점 시스템 사용자 Flag 제출 시 자동 채점 및 정답 여부 실시간 확인
랭킹 시스템 사용자 점수를 기준으로 순위를 산정하고 랭킹 페이지에서 확인 가능
대시보드 획득한 뱃지, 역량 진단표, 타임라인 등 사용자의 종합 활동 리포트 시각화
커리어 보안 분야 채용공고 목록 및 상세정보 확인, 필터링 검색
커뮤니티 Q&A, 관리자에게 문의, 스터디 모집 등 게시글 작성 및 댓글 기능
마이페이지 내 정보 수정, 내가 쓴 게시글 및 내가 쓴 워게임 리뷰 확인
관리자 기능 워게임/채용공고 등록 및 관리, 사용자 목록 확인 및 삭제

📋 인프라 주요 기능

기능 영역 설명
CI/CD 파이프라인 Jenkins와 GitHub Actions를 활용한 자동 빌드 및 배포
보안 스캔 Trivy로 이미지 보안 취약점 검사 수행
이미지 저장소 Harbor로 내부 이미지 저장, DockerHub 대체
시크릿 관리 Vault를 이용한 인증정보 및 환경변수 안전 저장
모니터링 Prometheus + Grafana로 메트릭 수집 및 시각화
로그 수집 Loki + Promtail로 시스템 로그 수집 및 분석
스토리지 Rook-Ceph 기반 PVC 및 Amazon S3 활용
고가용성 구성 2개 AZ 기반 Master/Worker 분산 배치
네트워크 보안 Bastion 서버, Public/Private 서브넷 분리 및 접근 제어
도메인 관리 Route 53을 통한 도메인 라우팅 설정





3. 기술 스택


< 인프라 >

인프라 기술스택

< 백엔드 >

인프라 기술스택

< 프론트엔드 >

인프라 기술스택

< DB >

DB 기술스택





4. 아키텍처


1) 온프레미스 - 클라우드 연동형 k8s 인프라 구조

인프라 아키텍처


[ 온프레미스 노드 구성 및 사양 ]

온프레 테이블


[ 클라우드 노드 구성 및 사양 ]

온프레 테이블


Tip

프로젝트 초기에는 AWS 비용을 절감하기 위해 온프레미스 자원을 우선적으로 활용해 인프라를 구성했습니다.
이후 트래픽 증가와 서비스 안정성 확보를 위해 클라우드 기반 리소스를 구성했습니다.

온프레미스는 1대의 Master와 5대의 일반 Worker, 1대의 고사양 Worker 노드로 구성되었으며
클라우드 환경은 2개의 AZ를 활용해 Master/Worker 노드를 고가용성 구조로 분산 배치했습니다.
또한 각 AZ에는 Bastion 서버를 별도로 두어 보안성과 접근 통제를 강화했습니다.



2) 전체 인프라 아키텍처


인프라 아키텍처


1️⃣ 개발자 → GitHub

인프라 아키텍처


2️⃣ 온프레미스 구성

인프라 아키텍처


3️⃣ AWS 클라우드 배포

인프라 아키텍처


4️⃣ 온프레 ↔ 클라우드 연계

인프라 아키텍처


Important

Nebula는 Slack에서 개발한 경량 오버레이 네트워크 솔루션으로, 멀리 떨어진 서버 간에 VPN을 구성해주는 오픈소스 도구입니다.
이를 통해 K8s 클러스터, CI/CD 서버, 데이터베이스 등이 서로 다른 환경에 있어도 IP를 인식하고 통신할 수 있는 네트워크 경로를 제공합니다.

Argo CD는 GitOps 방식으로 K8s 애플리케이션을 자동 배포 및 동기화할 수 있도록 해주는 오픈소스 도구입니다.
온프레미스 환경에 설치된 ArgoCD 인스턴스가 AWS 클라우드 상의 K8s 클러스터와 연결되어, 원격으로 배포를 제어할 수 있습니다.



3) 애플리케이션 아키텍처


< 3-Tier 아키텍처 >

앱 아키텍처

• Presentation Tier 
  사용자와 직접 상호작용하는 웹 UI 구성, 요청을 백엔드로 전달하고 응답 결과를 화면에 표시

• Application Tier 
  비즈니스 로직 처리, 인증 및 데이터 접근 수행
  
• Data Tier 
  세션 캐싱(Redis), 파일 저장(S3), 관계형 데이터 관리(PostgreSQL) 등 각종 데이터를 저장하고 관리하는 역할 담당

< MVC 모델 >

mvc 모델

• View
  기능별 UI 구조(pages) + 컴포넌트 단위 구성(components)으로 나뉨. 라우팅과 마운트는 App.tsx, main.tsx에서 처리
  
• Controller
  요청을 받아 각 도메인의 서비스로 위임, 응답을 적절한 DTO로 변환해 반환
  
• Model
  서비스 로직(service), DB 처리(repository), 엔티티(entity), 요청/응답 DTO(dto) 분리





5. 프론트엔드


< 메뉴 흐름 요약도 >

메뉴 흐름 요약도



① 메인 화면 : 플랫폼의 핵심 가치와 방향성을 전달


프론트0 프론트00

📌 기능 목록

•  상단 내비게이션 바(Navbar) : 로그인 버튼 / 워게임 / 랭킹 / 커뮤니티 / 커리어 / 대시보드 (로그인 시)

•  플랫폼 소개 영역 : 플랫폼명(가디언즈) 및 핵심 슬로건 소개

•  이용자 공감 문구

•  이모지 & 캐릭터 삽화 : 사용자의 고민을 시각적으로 전달

•  하단 후기 영역 (슬라이드 형태)

•  CTA(Call To Action) 버튼 : '회원가입하고 시작하기' 버튼 (로그인한 경우 '대시보드로 이동'으로 변경됨)




② 로그인 및 회원가입 : 사용자 인증 및 신규 사용자 등록


프론트1 프론트2

📌 기능 목록

•  로그인 폼 : 이메일 + 비밀번호 입력 → 로그인 버튼 클릭 시 인증

•  회원가입 진입 버튼 : 로그인 화면 하단 이메일 회원가입 버튼을 통해 회원가입 화면으로 이동

•  비밀번호 찾기 : 로그인 화면 하단 링크로 비밀번호 재설정 페이지로 이동

•  회원가입 폼 : 이메일 인증, 닉네임 입력, 비밀번호 2회 입력

•  이용약관 동의 : 전체 동의 / 이용약관 동의 / 개인정보 수집 및 이용 동의 체크박스

•  회원가입 완료 버튼 : 모든 항목 입력 및 동의 시 버튼 활성화됨 




③ 워게임 : 해킹 실습 기반의 문제 풀이 플랫폼


프론트3 프론트4

📌 기능 목록

•  워게임 검색 필터 : 카테고리 선택 / 난이도 선택 / 해결 여부 선택 / 즐겨찾기한 문제만 보기 토글 (내 북마크)

•  인기 워게임 추천 영역 : 사용자가 많이 푼 인기 워게임이 카드 형태로 좌우 슬라이드

•  워게임 목록 테이블 : 컬럼 - 제목, 카테고리, 난이도, 배점 (클릭 시 상세 페이지로 이동)

•  사용자 정보 카드 (우측) : 유저 정보 표시



프론트5 프론트6

📌 기능 목록

•  워게임 정보 카드 : 제목 / 카테고리 / 난이도 / 배점 / 북마크 및 좋아요 버튼 (클릭 가능)

•  문제 파일 다운로드 : 문제 관련 .zip, .py, Dockerfile 등 분석 파일을 내려받을 수 있는 기능

•  해킹 실습 환경 : 웹 기반으로 접속 가능한 칼리 리눅스 GUI 환경 실행 (워게임 Pod와는 별개로, 문제해결을 위한 분석 및 테스트 도구가 내장됨)

•  워게임 인스턴스 : 시작 버튼 클릭 시 Pod의 URL을 자동 할당하여 사용자에게 접속 환경 제공

•  플래그 제출 영역 : 문제를 풀고 얻은 flag를 입력 / 정답 여부에 따라 메시지 출력

•  Q&A 영역 : 사용자들이 남긴 질문들을 확인 가능 / 질문 등록 버튼




④ 랭킹 : 전체 사용자 순위 조회 및 검색


프론트7 프론트8

📌 기능 목록

•  상위 TOP 3 프로필 카드 : 닉네임, 프로필 사진, 총 점수, 푼 문제 수 표시

•  닉네임 검색 기능 : 검색창을 통해 특정 사용자의 닉네임을 입력

•  전체 유저 순위 테이블 : 표 형태로 나열




⑤ 커뮤니티 : 사용자 간 정보 공유를 위한 공간


프론트9 프론트10

📌 기능 목록

•  좌측 카테고리 메뉴 : 전체 게시판 / 핫 게시판 / 워게임 Q&A / 자유 게시판 / 스터디 모집 / 문의 게시판

•  각 카드에는 최신 글 몇 개가 리스트로 표시되며 “더보기” 버튼으로 특정 게시판 전체 보기로 이동 가능

•  상단 입력창 : 제목 및 내용으로 빠르게 검색 가능

•  질문하기 버튼 : 버튼 클릭 시, 새 질문 작성 페이지로 이동 (게시글 작성)




⑥ 커리어 : 보안 관련 채용 정보 제공 페이지


프론트11 프론트12

📌 기능 목록

•  채용공고 필터 기능 : 회사명 키워드로 검색 가능 (지원 유형 선택 / 근로기간 선택 / 지역 선택 필터링)

•  채용 카드 리스트 : 클릭 시 해당 공고의 상세 페이지로 이동

•  채용 상세 페이지 : 채용 포지션 및 업무 소개




⑦ 대시보드 : 내가 푼 워게임 기반의 시각화된 피드백 제공


프론트13 프론트14

📌 기능 목록

•  유저 활동 개요 영역 : 내 정보 및 뱃지 획득 현황

•  종합 활동 리포트 영역 : 역량 진단표 (Radar Chart) / 내가 푼 문제 수 (요일별 그래프) / 일별 점수 기록 (막대 그래프) / 풀이 타임라인




⑧ 관리자 전용 페이지 : 사용자 관리 및 워게임/채용공고 등록 및 삭제


프론트15 프론트16

📌 기능 목록

•  DevOps 관리 현황 모니터링 : 배포 및 인프라 관리 도구의 페이지로 접근 기능 

•  관리자 메뉴 : 대시보드 / 워게임 관리 / 커리어 관리 / 회원 관리

•  회원 관리 기능 : 관리자 그룹과 일반 사용자 그룹을 나눠서 표시 (권한, 삭제 버튼 포함)





6. 백엔드 및 DB


< 패키지 다이어그램 >


패키지 다이어그램

Note

이 패키지 다이어그램은 백엔드 전체 구조의 의존 관계를 시각화한 것입니다.

요청은 controller → service → domain.repository → domain.entity 흐름으로 전달되며
dto는 계층 간 데이터 전달을, exception은 공통 예외 처리를 담당합니다.
config는 전역 설정, 보안, CORS 등의 환경 구성을 포함합니다.

전체 애플리케이션의 계층적 책임 분리를 통해 유지보수성과 확장성을 확보했습니다.


🔗 Guardians Backend 바로가기

📂 main 소스코드 바로가기



< 주요 기능별 클래스 흐름 >


기능별 클래스 흐름



< ERD >

ERD

  • users 테이블 : 사용자 기반의 모든 기능과 연동되는 플랫폼의 중심 테이블

  • wargames 테이블 : 워게임 실습 환경의 Docker URL을 담고 있는 콘텐츠 중심 테이블

  • 위 두 테이블을 중심으로, 사용자 활동과 워게임 콘텐츠를 둘러싼 대부분의 기능 테이블이 유기적으로 확장되며 ERD가 전개됨





7. 인프라

인프라 구성도


🟡 CI / CD


< Jenkins 기반 CI/CD 파이프라인 Overview >

cicd-1-jenkins

Jenkins가 코드 변경을 감지해 Kaniko로 Docker 이미지를 빌드하고, 
Harbor에 푸시한 뒤 배포 YAML을 자동으로 갱신하는 파이프라인 실행



< Harbor 내 이미지 저장소 상태 >

cicd-2-harbor

Jenkins에서 빌드된 이미지가 Harbor의 guardians 프로젝트에 푸시되며 
프론트엔드/백엔드 레포지토리로 구분돼 관리되는 화면



< Vault를 이용한 민감 정보(Secrets) 중앙 관리 >

cicd-3-vault

AWS 키 / DB 접속 정보 / 메일 인증 정보 등 민감 데이터를
HashiCorp Vault의 Secrets 엔진에 저장



< Argo CD를 통한 애플리케이션 배포 및 동기화 현황 >

cicd-4-argo

Git 리포지토리와 Kubernetes 클러스터를 동기화하여
지정된 Git 경로(cloud-cluster/*, onpremise-cluster/*)의 상태를 자동으로 반영



< GitHub Actions를 활용한 자동 배포 >

cicd-5-github-action

워게임 문제 추가 시, GitHub에 push만 하면
deploy.yaml 워크플로우가 자동 실행되어 병렬 배포가 이뤄짐



< Amazon ECR에 워게임 Docker 이미지 저장 >

cicd-6-ECR

각 워게임 문제를 Docker 이미지로 패키징해 
Amazon ECR Public Gallery에 업로드



< Amazon S3에 워게임 ZIP 파일 저장 >

cicd-7-S3

각 워게임 문제를 .zip 형식으로 패키징하여
wargame_zips/ S3 버킷에 업로드



🟡 분산 스토리지


< Rook-Ceph 기반 스토리지 구성 >

분산 스토리지

• Harbor, Vault, Grafana Loki, Jenkins, PostgreSQL :
  컨테이너화된 각종 서비스가 Ceph 기반의 영속 볼륨을 사용

• Rook-Ceph PVC (Persistent Volume Claim) :
  K8s의 PVC 요청을 처리하며 내부적으로 Ceph 클러스터를 구성

• Ceph OSDs (Object Storage Daemons) :
  guardians 1~7 노드의 /dev/sdb 디스크를 OSD로 구성해 Ceph가 실제 물리 디스크에 데이터를 분산 저장함

Important

Rook은 K8s 환경에서 Ceph과 같은 스토리지를 자동으로 설치하고 관리하는 스토리지 오케스트레이터입니다.
Ceph은 고가용성과 확장성을 갖춘 오픈소스 분산 스토리지 시스템으로, Rook과 함께 사용하면 설치·구성·확장까지 자동화할 수 있습니다.
이러한 Rook-Ceph 구조를 통해 K8s는 PVC 형태로 안정적인 저장소를 활용할 수 있습니다.



🟡 모니터링 / 로깅


< 모니터링 & 로그 수집 알림 흐름 >

모니터링

• Metrics 수집:
  Pod 및 Node에서 수집한 메트릭 데이터를 Prometheus가 저장하고, 이를 Grafana로 전달하여 시각화
  
• 로그 수집:
  Promtail이 K8s 로그를 수집해 Grafana Loki로 전달하고, Grafana에서 분석 가능하도록 제공

• 알림 전송:
  Grafana에서 설정된 경고(Alert)가 조건 충족 시, Slack 채널로 실시간 알림을 전송하여 관리자에게 전달



< Prometheus + Grafana 기반 모니터링 >

monitoring-1

- 노드 리소스 실시간 수집
- Grafana 대시보드 시각화
- 리소스 상세 정보 제공
- 문제 감지 및 리소스 과부하 추적 가능



< SpringBoot Pod 상태 모니터링 >

monitoring-2

- Non-Heap 기반 메모리 사용률
- 기동 시간
- 실시간 로그 
- HTTP 요청 통계
- CPU 및 Load 상태 시각화



< Slack 알림을 통한 실시간 모니터링 경고 >

monitoring-3

Grafana와 연동해 워게임 인프라 상태 이상을
Slack 채널로 실시간 알림 전송



🟡 AWS Cloud


< 고가용성(HA)을 고려한 K8s 클러스터 구성 >

cloud

• 이중 AZ 구성:
  클러스터를 분산 배치해 장애 대응과 고가용성 확보

• Public Subnet → Bastion Server:
  Private Subnet의 노드들은 외부 직접 접근 불가, Bastion을 통해서만 SSH 가능

• Private Subnet → Master/Worker Node 구성:
  Master는 클러스터 제어, Worker는 Pod 실행 담당

• IGW(인터넷 게이트웨이) + 라우팅 구성: 
  외부 통신을 위한 IGW 및 라우팅 테이블 연동

• Route 53 + ELB(로드밸런서) 연동:
  외부에서 접근 시, Route 53 도메인을 통해 ELB로 유입 → 트래픽 분산

• S3, ECR 등 외부 연동 서비스 사용: 
  클러스터 내에서 이미지(Pod) 실행 시 S3에서 파일 다운로드 → ECR에서 Docker 이미지 pull 수행





8. 서비스 평가 및 기대효과


< 회고 및 평가 >

서비스 평가


< 향후 확장성 및 기대효과 >

기대효과

Pinned Loading

  1. Guardians-QA Guardians-QA Public

  2. Guardians-frontend Guardians-frontend Public

    TypeScript 1 1

  3. Guardians-Infra Guardians-Infra Public

    Mustache

  4. Guardians-backend Guardians-backend Public

    Java 1

  5. .github .github Public

Repositories

Showing 7 of 7 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…