1. 프로젝트 개요
- 제목: 덕후감
- 부제: 도서 이미지 OCR 및 ISBN 매칭 서비스
- 소개: 책 읽는 즐거움을 공유하고, 지식과 감상을 나누는 책 덕후들의 커뮤니티 서비스
- 프로젝트 기술 스택
- Java
- Spring Boot
- Spring Data JPA
- PostgreSQL
- Springdoc-openapi
- MapStruct
- AWS
- QueryDSL
- H2 Database
- Naver API
2. 담당한 작업
사용자 관리
- 사용자의 가입부터 로그인, 수정, 탈퇴까지의 전체적인 유저에 대한 기본 기능을 구현하였습니다.
1. 계정 생성 및 인증 보안
- 데이터 무결성 보장: 이메일과 닉네임에 대한 DB Unique 제약 조건 및
비즈니스 로직 검증을 통해 중복을 원천 차단하였습니다.
- 비밀번호 암호화:
BCryptPasswordEncoder를 사용하여 단방향 해시 암호화를 적용하였습니다.
평문 비밀번호 노출을 방지하고, 솔팅 기술을 통해 무작위하고,
반복적인 레인보우 테이블 공격에 대비하였습니다.
- 검증 절차: 가입 시 비밀번호 확인 로직을 포함하여 사용자 입력 실수를 방지하고,
로그인 시에는 해시 값 비교(
matches)를 통해 안전한 인증 프로세스를 구축하였습니다.
2. 회원 정보 관리 및 수정
- 계정의 핵심 식별자인 이메일 대신에 사용자의 닉네임과 비밀번호에 한해서만
수정을 허용하여 데이터 관리의 안정성을 높였습니다.
3. 실제 운영 환경과 동일한 삭제 프로세스
- 논리 삭제(Soft Delete) 도입: 서비스 운영 중 발생할 수 있는 데이터 오삭제 복구와
연관 데이터(리뷰, 댓글 등)의 참조 무결성을 유지하기 위해
deleted_at 필드를 활용한 논리 삭제를 기본 원칙으로 채택했습니다.
- 물리 삭제(Hard Delete) 및 클리닝
- 연쇄 삭제(Cascade): 물리 삭제 시 사용자와 연결된 모든 리뷰 및 댓글을 함께 삭제하여
고립된 데이터(Orphan Data) 발생을 방지했습니다.
- 삭제 자동화: 수동 API 삭제 외에도 Spring Batch/Scheduler를 활용하여
일정 기간이 경과한 탈퇴 계정을 자동 정리함으로써
DB 용량 최적화와 개인정보 보호를 동시에 챙겼습니다.
| 구분 |
적용 기술 및 전략 |
내용 |
| 보안 |
BCrypt Encryption |
비밀번호 유출 시에도 |
| 원문 복구가 불가능한 표준 보안 적용 |
|
|
| 무결성 |
Unique Constraint |
애플리케이션과 DB 계층에서의 |
| 이중 검증으로 데이터 신뢰성 확보 |
|
|
| 유연성 |
Soft Delete |
사용자 복구 요청 대응 및 서비스 |
| 통계 데이터의 연속성 보장 |
|
|
| 효율성 |
Spring Batch/API |
대량의 만료 데이터 정리를 통한 |
| 시스템 성능 및 저장 공간 최적화 |
|
|