개요

항목 내용
프로젝트 명 지출 메이트
목적 MZ세대의 구독 과소비 및 지출 관리 어려움을 해결하기 위한 지출관리 서비스
개발 환경 Spring Boot 4.x, Oracle 21c, JSP, CSS3, JavaScript, 템플릿 엔진, Chart.js, JDK 21
통합 개발 프로그램 IntelliJ IDEA 2025.03.xx, Docker 4.65, DBeaver 26
작성일 2026.04.08
작성자 김하영, 이은아, 강호영

제약 사항 상세

① 하드웨어 제약 사항

구분 내용
서버 환경 온프레미스(On-Premise) 로컬 서버 (Docker 4.x 컨테이너 환경 적용)
개발 PC 사양 Intel Core i5 / RAM 8GB — 대용량 데이터 처리 및 동시 서비스 구동 제한
스토리지 DB 저장 공간 최대 8GB 이내 (초과 시 아카이빙 및 파기 전략 적용)
백업 저장소 서버 내 물리적 분리 파티션 및 별도 로컬 백업 드라이브

② 소프트웨어 제약 사항

구분 내용
JDK 버전 Java 21
프레임워크 Spring Boot 4.x
데이터베이스 Oracle 21c (ORM: JPA/Hibernate)
화면 구성 JSP, CSS3, JavaScript, 템플릿 엔진 (SSR 방식, /api/v1 REST 분리 구조)
빌드 도구 Gradle
컨테이너 Docker 4.65 기반 애플리케이션 실행 환경
CI/CD GitHub Actions 기반 자동 빌드 및 배포
차트 라이브러리 Chart.js
DB 관리 도구 DBeaver 26
통합 개발 환경 IntelliJ IDEA 2025.03.xx

③ 네트워크 제약 사항

항목 내용
서비스 형태 웹 브라우저 기반 서비스 (별도 앱 미지원)
통신 프로토콜 HTTPS 전용 (데이터 전송 암호화 필수)
외부 API타임아웃 외부 API 응답 대기 최대 3초 초과 시 실패 처리
이메일 발송 Google SMTP (Port 587, TLS) 사용, 일일 발송 쿼터 제한 준수
카카오 OAuth Redirect URI 환경별(Dev/Stage/Prod) 분리 운용

④ 보안 제약 사항

구분 내용
인증 방식 JWT 인증 — 토큰 탈취 대응을 위해 Access Token(1시간) / Refresh Token(7일) 분리 발급, RTR(Rotation) 전략 적용
토큰 저장 브라우저 HttpOnly Cookie에 저장 (XSS 탈취 방지)
비밀번호 암호화 BCrypt 암호화 필수 적용
SQL 인젝션 방어 PreparedStatement 또는 JPA 사용 필수
민감 정보 관리 DB 계정, API Key 등은 환경 변수 또는 외부 설정 파일로 분리 (코드 직접 포함 금지)
권한 접근 제어 ROLE별(ADMIN, USER) 기능 접근 제어 적용, 인가 실패 시 403 반환

1. 프로젝트 개요

항목 내용
프로젝트 명 지출메이트
목적 지출 관리에 어려움을 겪는 사람들을 위한 지출관리 서비스
범위 회원가입, 로그인, 마이페이지, 지출등록/수정/삭제,
게시판(10, 20, 30, 40, 50이상), 비밀 게시판, 구독관리
주요 사용자 회원 : 지출관리 하려는 고객 / 관리자 : 게시판 관리
플랫폼 웹 브라우저 기반

2. 시스템 구성도

[사용자 브라우저] │ HTTPS ▼ [로컬 서버 - Docker 컨테이너] └── Spring Boot 4.x 애플리케이션 ├── JSP / 템플릿 엔진 (SSR 화면 렌더링) ├── REST API (/api/v1, JSON) ├── Spring Security (JWT 인증/인가) └── Spring Scheduler (이메일 알림 자동 발송) │ ├──▶ [Oracle 21c DB] — 회원, 지출, 구독, 게시판 등 데이터 저장 ├──▶ [카카오 OAuth API] — 소셜 로그인 ├──▶ [Google SMTP] — 이메일 알림 발송 └──▶ [AI API] — 소비 분석 및 피드백 생성

시스템 구성도.png