개요

이 문서는 시스템의 성능, 안정성, 보안, 확장성, 유지보수성과 관련된 비기능적 요구사항을 정의한다. 해당 프로젝트는 개인용으로 시작되며, 예상 사용자 수는 약 100명이다.


1. 성능 (Performance)

항목 내용
예상 사용자 수 약 100명
평균 응답 속도 조회 및 검색 API는 평균 500ms 이내
외부 API 사용 여부 외부 API는 직접 호출하지 않음. 최초 검색 시에만 사용하고 이후는 캐시 및 RDB 활용
캐시 전략 Redis 캐시 사용, TTL 5분 설정. 캐시 존재 시 외부 API 호출 생략
검색 처리 흐름 Redis → (캐시 미스 시) RDB → (데이터 없을 시) 외부 API

2. 안정성 (Stability)

항목 내용
검색 실패 대응 Redis, RDB 순으로 조회 후 외부 API 호출. 외부 API 실패 시 명시적 에러 응답 반환
데이터 영속화 일정 주기 또는 조건에 따라 Redis 데이터를 RDB에 저장
예외 처리 및 로깅 예외 발생 시 로그 기록. 정상 요청은 필요에 따라 선택적으로 기록

3. 보안 (Security)

항목 내용
API Key 보관 방식 .env 파일에 저장 후 환경 변수로 로드. Git에는 포함되지 않도록 .gitignore 처리
Swagger 접근 제한 개발환경(dev)에서만 접근 가능. 운영 환경에서는 비공개 또는 인증 필요 설정 적용 예정
개인정보 보호 현재는 개인정보는 저장하지 않음

4. 확장성 (Scalability)

항목 내용
외부 API 확장성 네이버 외에도 카카오 등 타 플랫폼 연동이 가능하도록 전략 패턴 기반으로 설계함

5. 유지보수성 (Maintainability)

항목 내용
API 문서화 Swagger 기반 자동 문서화 적용. 개발 환경에서만 공개
예외 응답 포맷 ErrorResponse DTO를 통해 모든 예외 응답을 일관된 형식으로 제공
코드 구조 도메인 중심 구조를 유지하며, 바운디드 컨텍스트 및 애그리거트 단위로 패키지 분리하여 테스트 및 유지보수가 용이함

요약