포트폴리오 ↗
루키즈 5기 · 일지›기획 · 팀 세팅Day 2 / 46

프로젝트 명 확정 및 상세 서브 도메인 분할

·읽는 시간 약 8분
#vulnerability-assessment#argus
목차 7개 단원
  1. ·서론
  2. 01초기 가칭: Argus
  3. 02서브 도메인 분할 및 역할 분담
  4. 03인프라 트랙 역할 분담 및 아키텍처 설계
  5. 04전체 프로젝트 스케줄
  6. 05오늘의 주요 성과
  7. 06다음 단계: 기능별 요구사항 구체화 및 멘토링 준비

서론

"방향이 정해져 프로젝트 이름과 역할을 구체적으로 정하고 개발을 시작했습니다."

오늘은 자동화 스캔 쪽으로 쓸 가칭 Argus를 잡고, Full-Stack / Infra 트랙의 서브 도메인을 나눠 담당 범위를 구체화했습니다. 또한 주요정보통신기반시설 가이드와 SK클라우드 가이드를 분석해 스캔 엔진의 기준을 잡았고, Spring Boot · Vite 초기 프로젝트 세팅까지 마쳤습니다.

1. 초기 가칭: Argus (아르고스)

팀원 의견을 모아 자동화·스캔 쪽 작업 이름으로 Argus(아르고스)를 초기에 쓰기로 했습니다.

아르고스는 그리스 신화에 등장하는 100개의 눈을 가진 거인입니다. 잠들 때도 몇 개의 눈은 항상 뜨고 있어 계속 살피는 존재처럼, 시스템의 보안 취약점을 꾸준히 스캔하고 찾아내겠다는 의미를 담았습니다.

플랫폼의 핵심 뼈대는 주요정보통신기반시설 가이드와 SK클라우드 가이드 분석을 기반으로 잡았습니다. 이 표준 가이드라인을 기준으로 취약점 스캔 엔진의 기초 설계와 진단 로직을 구현하고, 이를 자동화 스캔 프로세스로 연결하는 방향을 조율했습니다.

2. 서브 도메인 분할 및 역할 분담 (Full-Stack & DB)

효율적인 병렬 개발을 위해 서비스 영역을 5개의 서브 도메인으로 나누고, 프론트엔드 UI부터 백엔드 비즈니스 로직까지 End-to-End로 책임지도록 역할을 나눴습니다.

풀스택 1 — 자산 및 권한 관리 (Asset & Auth Domain)

사용자 계정과 스캔 대상을 등록·검증하는 플랫폼의 출입구를 담당합니다.

  • Frontend (React): 로그인/회원가입 UI, 타겟 자산(URL/IP) 등록 화면, 마이페이지(API 키 발급)
  • Backend (Spring Boot): Spring Security 기반 JWT 인증, 회원/자산 CRUD API, 도메인 소유권 인증(DNS TXT / 파일 업로드 / 이메일) 핵심 로직

풀스택 2 — 스캔 제어 및 모니터링 (Scan Pipeline Domain)

스캔 요청과 진행 상황을 실시간으로 확인하는 조종석을 담당합니다.

  • Frontend (React): 스캔 시작/옵션 선택 화면, 진행률(프로그레스 바) 실시간 업데이트 UI
  • Backend (Spring Boot): AWS SQS로 스캔 명령을 보내는 API, Polling/WebSocket 기반 상태 업데이트 API 및 DB 상태 반영

풀스택 3 — 취약점 가공 및 컴플라이언스 매핑 (Mapping Domain)

스캐너가 가져온 원시 데이터를 분석하고 가이드라인에 맞추는 부분을 담당합니다.

  • Frontend (React): 상세 진단 결과 리스트, 취약점별 KISA/SK 가이드라인 매핑 및 조치 안내 UI
  • Backend (Spring Boot): 원시 데이터를 KISA/SK 기준과 조인해 가공하는 비즈니스 로직, 파싱 알고리즘 구현

풀스택 4 — 대시보드 시각화 및 리포트 엔진 (Reporting Domain)

분석 결과를 한눈에 볼 수 있게 정리하는 결과물을 담당합니다.

  • Frontend (React): Chart.js 기반 통계 대시보드, 취약점 요약 UI, PDF 다운로드/뷰어
  • Backend (Spring Boot): 취약점 통계 집계 API, iText 기반 공식 PDF 리포트 렌더링 로직

풀스택 5 — 이행 점검 및 사후 관리 (Remediation Domain)

조치 이후 재점검과 이력을 관리하는 유지보수 사이클을 담당합니다.

  • Frontend (React): 조치 완료 상태 변경 UI, 재스캔 요청 화면, Before & After 비교 화면
  • Backend (Spring Boot): 조치 이력 관리 API, 재스캔 데이터 병합/비교 로직, 이행 점검 리포트 데이터 추출 API

3. 인프라 트랙 역할 분담 및 아키텍처 설계

풀스택 영역을 받쳐줄 인프라와 보안 엔진 파이프라인도 역할을 나눴습니다.

인프라 1 — 클라우드 아키텍트 (AWS & CI/CD)

  • 전체 AWS 인프라(VPC, EC2, S3, RDS) 세팅 및 네트워크 보안 관리
  • React · Spring Boot 배포 환경 구성
  • GitHub Actions 기반 자동 배포(CI/CD) 파이프라인 구축
  • 서비스 흐름도 설계 완료

인프라 2 — 보안 엔진 및 비동기 워커 (Python & SQS)

  • AWS SQS 메시지 큐 구축
  • Python 기반 백그라운드 스캐너 워커 프로세스 작성
  • Nuclei / Nmap 오픈소스 스캐너 CLI 실행 및 결과 JSON 파싱 모듈 개발

4. 전체 프로젝트 스케줄 (5/25 ~ 7/31)

약 9주 일정을 5개 Phase로 나눴습니다. 초반은 문서·환경, 중반은 스캔 파이프라인, 후반은 리포팅·통합·발표에 무게를 둡니다.

Phase 1. 기반 설계 및 인프라 구축 (Week 1~2)

기초 공사를 튼튼히 하는 기간입니다. 코딩보다는 문서화와 환경 셋업에 집중합니다.

1주 차 (5/25 ~ 5/31) — 아키텍처 확정 및 CI/CD 셋업

  • 전체: 기능 정의서 리뷰, ERD 테이블 최종 확정, API 명세서(Postman) 초안 작성.
  • 인프라 파트: AWS VPC/서브넷 구성, DB(RDS) 생성, GitHub Repo 생성 및 CI/CD(자동 배포) 기초 연동.
  • 풀스택 파트: Spring Boot 및 React 프로젝트 초기 세팅, 폴더 구조 잡기, Figma 기반 화면 와이어프레임 작성.

2주 차 (6/1 ~ 6/7) — 문지기 도메인 완성 (자산 및 권한)

  • 목표: 사용자가 가입하고 타겟 URL의 소유권을 인증하는 플랫폼의 입구를 완성합니다.
  • 풀스택 1 (권한): JWT 로그인 API, 타겟 자산 등록 CRUD, DNS/Meta 기반 소유권 인증 로직 구현.
  • 나머지 풀스택: 각자 맡은 도메인의 UI/UX 화면(React) 퍼블리싱 시작.

Phase 2. 스캔 파이프라인 관통 (Week 3~4)

가장 난이도가 높은 구간입니다. 프론트엔드, 백엔드, 워커 서버 간 비동기 통신을 연결합니다.

3주 차 (6/8 ~ 6/14) — SQS 메시지 큐 및 워커 연동

  • 목표: 스캔 명령을 내리고, 백그라운드에서 이를 수신하는지 확인합니다.
  • 인프라 2 (워커): 파이썬 워커 환경 구축, AWS SQS에서 메시지를 읽어오는(Pull) 스크립트 작성.
  • 풀스택 2 (제어): Spring Boot에서 SQS로 스캔 지시서(JSON)를 전송하는 API, 실시간 진행률 Polling 상태 반환 API 개발.

4주 차 (6/15 ~ 6/21) — 해킹 엔진 결합 및 원시 데이터 적재

  • 목표: 타겟 서버를 실제 스캔하고, 그 결과물을 DB에 안전하게 밀어 넣습니다.
  • 인프라 2 (워커): 파이썬 코드 내에서 오픈소스(Nuclei/Nmap) 실행 명령 결합, 결과물(JSON) 파싱 후 DB의 원본 결과 테이블에 Insert.
  • 풀스택 4, 5 (프론트 집중): 스캔 진행 상태 프로그레스 바 UI 구현 및 테스트.

Phase 3. 컴플라이언스 분석 및 리포팅 (Week 5~6)

원시 데이터를 KISA 가이드라인에 맞게 정리하고 보고서로 만드는 기간입니다.

5주 차 (6/22 ~ 6/28) — 데이터 맵핑 및 가공 로직

  • 목표: 수집된 취약점(CVE)을 KISA/SK 표준 조치 가이드와 조인(Join)합니다.
  • 풀스택 3 (맵핑): 스캐너 결과를 DB 내 가이드라인 마스터 테이블과 매칭하는 알고리즘 구현, 프론트엔드용 상세 결과 API 제공.
  • 풀스택 5 (이행 점검): 과거 스캔 이력과 최신 이력을 비교(Diff)하는 알고리즘 초안 작성.

6주 차 (6/29 ~ 7/5) — 시각화 대시보드 및 PDF 렌더링

  • 목표: 경영진 제출용 차트와 보고서를 렌더링합니다.
  • 풀스택 4 (리포팅): React Chart.js 대시보드 완성, 백엔드 서버(Spring Boot)에서 iText/JasperReports 등을 활용한 PDF 문서 템플릿 생성 및 다운로드 API 연동.

Phase 4. 통합 테스트 및 개선 (Week 7~8)

각자 만든 기능을 하나로 합치고, 버그를 잡는 기간입니다.

7주 차 (7/6 ~ 7/12) — A/S 도메인 및 E2E(End-to-End) 테스트

  • 목표: 전체 파이프라인(가입 → 스캔 → 맵핑 → 리포트 다운로드 → 재스캔)을 관통하는 테스트를 진행합니다.
  • 풀스택 5 (이행 점검): 조치 완료 상태 변경, 재스캔 요청 및 Before/After 비교 화면 마무리.
  • 전체: 각자 만든 API를 연동하여 모의 진단(웹 고트, DVWA 등 테스트용 더미 서버 대상)을 수행하고 버그 리포트 작성.

8주 차 (7/13 ~ 7/19) — 버그 픽스 및 예외 처리 (QA 주간)

  • 목표: 시스템이 터지지 않도록 예외 상황(타임아웃, 대량 트래픽 등)을 방어합니다.
  • 전체: SQS 대기열 한도 초과 시 처리, 존재하지 않는 타겟 스캔 시 에러 반환 등 엣지 케이스(Edge Case) 방어 코드 작성 및 코드 리팩토링. UI 디자인(CSS) 최종 다듬기.

Phase 5. 최종 산출물 및 발표 준비 (Week 9 ~ D-Day)

개발을 마무리하고 포트폴리오와 발표를 준비합니다.

9주 차 (7/20 ~ 7/26) — 최종 배포 및 문서화

  • 개발 마감: 7월 24일(금)부터 코드 프리즈(Code Freeze, 기능 추가 금지).
  • 문서 작업: GitHub README 작성, 서비스 소개서 및 API 명세서 캡처.
  • 미디어 작업: 가장 에러가 없는 버전을 기준으로 서비스 시연 영상(프로모션 비디오) 녹화.

발표 주간 (7/27 ~ 7/31) — 리허설 및 D-Day

  • 7/27 ~ 7/29: 발표 PPT 제작, 가상 페르소나(김준혁 CTO)를 활용한 스토리텔링 대본 작성.
  • 7/30 (목): 스톱워치를 활용한 실전 발표 리허설.
  • 7/31 (금): 최종 발표 및 프로젝트 종료.

5. 오늘의 주요 성과

기획·분석과 함께, 실제 빌드를 위한 기반 작업도 진행했습니다.

  • 프로젝트 이름 정리: Argus 가칭·슬로건 의미 정리 (초기 브레인스토밍)
  • 역할 분담 확정: Full-Stack 5개 서브 도메인 + Infra 2개 트랙 R&R 세부 확정
  • 전체 일정 정리: 위 §4 스케줄(5/25 ~ 7/31) 기준으로 Phase·주차별 계획 정리
  • 가이드 분석: 주요정보통신기반시설 · SK클라우드 가이드 분석 자료 및 발표 준비
  • 스캔 엔진 방향 정리: 취약점 스캔 엔진 설계 및 진단 로직 학습
  • 서비스 흐름도 작성 완료: 인프라 파트에서 서비스 흐름도 설계 완료
  • 초기 프로젝트 세팅: Spring Boot 프로젝트 생성, Vite + React 초기 프로젝트 생성
  • 멘토링 준비: 멘토링 자기소개서 및 질문지 작성 완료

6. 다음 단계: 기능별 요구사항 구체화 및 멘토링 준비

진행 중인 업무

  • 요구사항 정의서(명세서) 작성: 기능별 세부 API 스펙 및 데이터 흐름 구체화
  • 서비스 구상도 / 시나리오 작성: 클라우드 인프라 레이어 공격·스캔 시나리오 설계
  • 프로젝트 계획서(애자일 방법론) 보완: 인프라 파트에서 작성 및 보완 진행
  • 시스템 아키텍처 정의서 보완: 인프라 파트에서 작성 및 보완 진행

대기 중인 업무

  • 도메인별 설계서 보완: 각자 맡은 서브 도메인의 DB 테이블 설계 및 컴포넌트 구조도 작성
  • 멘토링 질문 전체 리뷰: 기술 스택 검증 및 아키텍처 방향성 피드백 질의 정리
기획 · 팀 세팅단계 1 · Day 1–5 · 2 / 5일지 전체 →
  1. Day 01개발 프로세스 및 UI/UX 아키텍처
  2. Day 02프로젝트 명 확정 및 상세 서브 도메인 분할
  3. Day 03진짜 애자일을 위한 첫걸음 및 팀 협업 표준화 세팅
  4. Day 04첫번째 멘토링
  5. Day 05프로젝트 명칭 확정 및 본격 개발 시작