본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
https://fastcampus.info/4n8ztzq
안녕하세요 :)
오늘은 "50일의 기적 AI 환급반_ 대규모 채팅 플랫폼으로 한 번에 끝내는 실전 대용량 트래픽 커버 완전판 " 챌린지에 도전하는 서른 여섯번째 날입니다.
서른 다섯번째 날에는 채팅 프로젝트에 인증 기능 추가에 대해 배웠었는데요. 오늘은 과연 어떤 내용들을 배울 수 있을지 공부하고 포스팅 하도록 하겠습니다.
오늘 학습할 내용의 제목은,
Part 3. 채팅 서비스 핵심 기능 개발 > Ch 3. 채팅 프로젝트에 다이렉트 메시지와 그룹 메시지 추가 >
02-1. 채팅 프로젝트에 연결 요청, 수락, 거부, 삭제 처리 추가
입니다.
🔐 채팅 프로젝트에 인증 기능 연동하기
- 이번 포스팅에서는 지금까지 별도로 구현해온 사용자 인증 기능을 채팅 프로젝트에 통합하는 과정을 다뤄보겠습니다.
- 이제 단순 채팅 기능을 넘어서, 실제 사용자 기반의 인증 체계를 갖춘 실전형 시스템으로 발전시킬 단계입니다.
🛠️ 사용된 두 개의 프로젝트 구조
- 채팅 프로젝트: 메시지 테이블까지 연동되어 있는 메인 프로젝트
- 인증 프로젝트: Redis 기반 세션 관리 및 Spring Security 기반 인증 구현
- 이번 작업은 인증 프로젝트의 기능을 채팅 프로젝트에 통합하는 과정입니다. 먼저 인증 관련 코드와 설정들을 채팅 프로젝트로 복사하고, 실행까지 완료하는 것이 1단계입니다.
📦 의존성 및 프로젝트 세팅
- 먼저 Gradle에서 필요한 의존성을 추가했습니다:
- spring-boot-starter-security
- spring-boot-starter-web
- spring-boot-starter-data-redis
- spring-boot-starter-websocket
- 이후 도커 컴포즈 설정도 Redis 및 Redis Insight 설정을 기존 인증 프로젝트에서 가져와서 채팅 프로젝트에 추가하였습니다.
- docker-compose up으로 컨테이너 실행까지 확인 완료 ✅
🧱 코드 통합 작업
📁 패키지 구성 통일
- 프로젝트 이름 변경: using-db → session 으로 일관성 부여
- Redis 접속 정보 복사
- User 관련 테이블, DTO, Repository, Entity 클래스 전부 통합
🔄 중복 제거 - BaseEntity
- createdAt, updatedAt 필드와 관련된 중복 로직을 BaseEntity라는 상위 추상 클래스로 분리해 공통 로직으로 정리.
- 💡 이로써 유지보수성과 확장성이 크게 향상!
🔒 인증 기능 정상 동작 확인
- 기존 인증 API 기능들을 채팅 프로젝트에서 실행한 결과, 서버는 정상 실행되었지만 인증은 실패했습니다.
- 🔎 이유: 아직 user 테이블에 데이터가 없기 때문. 인증 로직 자체는 문제 없으며, 다음 단계에서 회원가입 기능을 추가해 해결할 예정입니다.
🧪 테스트 준비
- 다음 작업은 사용자 등록(Register), 로그인(Login), 로그아웃(Logout) 기능 구현
- 채팅 클라이언트에도 이 기능들 추가 필요
- WebSocket 접속 시, 로그인된 세션만 연결 허용하도록 필터링 적용 예정
- Redis Insight, MySQL Workbench, 클라이언트를 통해 전체 흐름 테스트 예정
- 기능을 따로 개발해 통합하는 접근은 협업이나 모듈화 측면에서 매우 효과적입니다. 이 과정에서 발생하는 의존성 문제나 설정 충돌을 조율하는 능력은 실무에서 반드시 필요합니다.
- 중복 제거를 위한 공통 모듈화는 단순한 코드 정리를 넘어서 유지보수의 생명선이 됩니다. 특히 BaseEntity처럼 자주 반복되는 필드는 초기에 구조를 잘 잡아두면 이후 개발이 훨씬 수월합니다.
- 실무적으로 시스템을 점진적으로 고도화하는 방법론을 연습할 수 있는 좋은 예시였습니다. 한 번에 완성된 시스템이 아니라, 인증 → 클라이언트 통합 → 보안 강화 등의 단계별 접근이 더 현실적이고 안정적입니다.