한컴인스페이스
어드민 페이지 고도화
2024.04 ~ 2024.12
인증·권한 시스템 설계 및 개발
Spring BootSpring Cloud GatewayRedisPostgreSQLJWT
사용자 로그인 정보 조회 시 응답 속도 저하와, 특정 사용자의 권한 수정이 일부 서비스에 반영되지 않는 문제를 해결했습니다. Redis에 저장된 전체 세션을 풀스캔해야 하는 구조와, 재귀적 트리 구조 메뉴에서 N+1 쿼리가 원인이었습니다.
역할별 수행 내용
세션 관리 최적화
- Redis 역인덱스 구축으로 풀스캔 제거 — userId → sessionId 목록 구조로 저장하여 권한 변경 시 해당 유저의 세션만 즉시 조회 및 갱신
- Redis DB 3개로 용도 분리 (세션 / 방문자 통계 / 로그인 실패 추적)
- IP + userId 단위 실패 횟수 카운트하여 4회 초과 시 10분간 인증 차단으로 브루트포스 방지
권한 조회 N+1 제거
- 재귀적 트리 구조 메뉴에서 건별 조회 → WITH RECURSIVE CTE + 단일 쿼리 전환
- 인증 필터에서 전체 권한 정보를 한 번에 로드 후 메모리에서 매핑하는 방식으로 변경
Gateway 도입
- Spring Cloud Gateway 도입으로 인증·라우팅·로깅 공통 처리 일원화
- 각 서비스별 세션 유지 불필요해져 유지보수성 확보
주요 성과
- 역인덱스 기반 세션 조회 및 N+1 제거로 응답 속도 개선 및 권한 변경 실시간 반영 보장
- Spring Cloud Gateway 도입으로 인증·라우팅·로깅 공통 처리 일원화, 각 서비스별 세션 유지 불필요