Programmers

[79일차]웹 기반 문서 편집기 제작 프로젝트: 설계 및 개발 계획

PARKpatchnotes 2026. 1. 12. 00:01

1. 응용 구조 설계 (Application Architecture)

본 프로젝트는 효율적인 문서 편집 및 관리를 위해 프론트엔드와 백엔드가 분리된 티어 구조를 채택한다.

1.1. 프론트엔드 (Front-end)

  • 기술 스택: React.js
  • 역할: 사용자 인터페이스(UI) 및 클라이언트 사이드 로직을 담당한다.
  • 통신: 브라우저에서 JavaScript를 실행하여 백엔드 API를 호출한다. 이를 위해 백엔드 서버의 엔드포인트 URL을 내부적으로 관리한다.

1.2. 백엔드 (Back-end)

  • 기술 스택: Node.js (Express Framework)
  • 역할: 비즈니스 로직 처리 및 데이터 모델 서비스를 제공한다.
  • 인증 및 보안:
    • JWT (JSON Web Token): 사용자 인증을 수행하고 데이터 접근 권한을 보호한다.
    • CORS (Cross-Origin Resource Sharing): 허용된 프론트엔드 URL로부터의 접근만 허용하여 악의적인 외부 요청을 방지한다.

1.3. 데이터베이스 (Database)

  • 기술 스택: MariaDB
  • 구조: prgms_notes라는 데이터베이스 명칭을 사용하며, 요구사항에 따라 최소 2개 이상의 테이블(예: 사용자 정보, 문서 정보)로 구성한다.

2. 개발 및 배포 환경 전략

개발의 효율성과 서비스의 안정성을 위해 환경을 이원화하여 운영한다.

2.1. 개발 환경 (Development Environment)

  • 구성: MariaDB, FE, BE를 로컬 클러스터 내부에 구축한다.
  • 특징: 개발 중 발생하는 코드 변화를 즉각적으로 확인하고 디버깅할 수 있도록 설정을 간소화한다. 웹 브라우저를 통해 직접 접근이 가능한 구조이다.

2.2. 배포 환경 (Production Environment)

  • 인프라: AWS EC2 인스턴스를 활용한다.
  • 컨테이너 오케스트레이션: Kubernetes(Minikube) 클러스터 내부에 FE와 BE 서비스를 배치한다.
  • 보안 및 프록시: Nginx를 Reverse Proxy로 설정하여 외부 접근을 통제하고 보안을 강화한다.

2.3. 데이터베이스 격리 정책

  • 개발 환경과 배포 환경은 반드시 서로 다른 데이터베이스 인스턴스를 사용해야 한다. 이는 개발 중의 실수(데이터 삭제, 테스트 데이터 혼입 등)가 실제 운영 중인 서비스 데이터에 영향을 주는 치명적인 문제를 방지하기 위함이다.

3. 소프트웨어 요구사항 명세 (SRS)

프로젝트의 핵심 기능과 시스템의 제약 사항을 정의한다.

3.1. 기능적 요구사항

  • 사용자 관리: 회원가입, 로그인(JWT 기반) 및 로그아웃 기능을 제공한다.
  • 문서 편집: 웹 브라우저 상에서 텍스트 기반의 문서 생성이 가능해야 한다.
  • 데이터 관리: 사용자가 작성한 문서를 저장, 조회, 수정, 삭제(CRUD)할 수 있어야 한다.

3.2. 비기능적 요구사항

  • 보안성: 인증되지 않은 사용자는 타인의 문서에 접근할 수 없다.
  • 응답성: 사용자 인터페이스는 반응형으로 설계되어 다양한 기기 환경을 지원한다.

4. 개발 계획 및 운영 전략

프로젝트의 성공적인 완수를 위해 체계적인 로드맵과 품질 관리 방안을 수립한다.

4.1. 개발 프로세스 및 규약

  • 방법론: 목표 확인 및 일정 관리를 위한 개발 프로세스 모델을 설정한다.
  • 코드 컨벤션: 팀 내 일관된 코딩 스타일 규약을 정하여 코드 가독성을 높인다.
  • 코드 리뷰: 정기적인 코드 리뷰를 통해 품질을 확보하고, 통합 주기와 방법을 명확히 정의한다.

4.2. 테스트 계획

서비스의 신뢰도를 높이기 위해 단계별 테스트를 수행한다.

  • 단위 테스트(UT): 개별 함수 및 컴포넌트 기능 검증
  • 통합 테스트(IT): 모듈 간 상호작용 및 API 연결 검증
  • 인수 테스트(AT): 사용자 요구사항 충족 여부 최종 확인
  • 스모크 테스트(ST): 주요 기능의 정상 작동 여부 간이 확인

4.3. 문서화의 중요성

문서화는 개발만큼 중요한 핵심 업무이다.

  • 협업 효율: 진행 상황과 작업 범위를 공유하여 커뮤니케이션 비용을 절감한다.
  • 유지보수: 시간이 흐른 뒤에도 코드의 의도를 파악할 수 있게 하여 유지보수성을 높인다.
  • 운영 가이드: 서비스 운영 및 장애 대응 시 길잡이 역할을 한다.

4.4. 운영 및 모니터링

  • CI/CD: 빌드 및 통합 환경 자동화를 통해 릴리스 주기를 단축한다.
  • 모니터링: 서비스 상태를 지속적으로 모니터링하여 가용성을 확보한다.