개발/Java|Spring 13

Spring Security Authentication(인증)

Authentication은 인증된 결과만 저장하는 게 아니라 인증을 하기 위한 정보와 인증을 받기 위한 정보가 하나의 객체에 동시에 들어있다. AuthenticationProvider가 어떤 인증에 대해서 허가를 할 것인지 판단하기 위해 직접 입력된 인증을 보고 허가된 인증을 내주는 방식이기 때문이다. Authentication Mechanism Username and Password 사용자 이름/비밀번호로 인증하는 방법 OAuth 2.0 Login 소셜 로그인. OpenID Connect 및 비표준 OAuth 2.0 로그인 SAML 2.0 Login SAML 2.0 로그인 Central Authentication Server(CAS) 중앙인증서버(CAS) 지원 Remember Me 세션이 만료된 사용..

개발/Java|Spring 2023.01.18

distinct 로 중복 제거 시 속도 저하 문제

요구사항 : 결과값에서 중복 제거 구현된 기능 중 약 100만 건 가량의 데이터가 조회되는 기능이 있었다. left join 문이지만 단순 조회라서 위 이미지에서 보는 것처럼 시간 성능은 126ms 근처를 오가는 수준. 중복 결과를 제거해야 될 요구사항이 생겨 distinct를 이용해 간단히 해결하려고 했다. 하지만, 문제 발생 속도 저하라는 더 큰 문제에 직면했다. (0.1초에서 14초로 늘어나다니...😱) 참고로 중복 제거 결과 데이터의 양은 약 31만건. 문제 원인 DB 조회 후 응답 객체로 도메인 객체를 바로 사용하고 있었다. 도메인은 건드릴 수 없는 상황이고, 기존의 도메인 객체는 이미 컬럼이 엄청 많은 상태다. 그래서 인덱스를 태워도 Distinct 사용 시 압도적으로 높은 cost가 발생할 ..

개발/Java|Spring 2023.01.18

Spring Security 개념, 아키텍처, 필터 순서, 예제

[목차] 1. Spring Security 개념 2. 아키텍처 3. 필터 순서 4. 샘플예제 스프링 시큐리티는 한 번에 이해가 쉽지 않다. 지금도 마찬가지지만, 공부하는 마음으로 조금씩 정리해 본다. 참고로 문서는 Spring Security 5.7.6 버전 기준이며, Java 8 이상의 런타임 환경이 필요하다. Spring Boot with Gradle 환경이다. 스프링 부트는 스프링 시큐리티 관련 의존성을 모두 묶어 'spring-boot-starter-security' 라는 스타터를 제공한다. 스타터는 스프링 이니셜라이저를 사용하면 쉽고 간단히 만들 수 있고, 아래처럼 수동으로 gradle 설정을 추가할 수도 있다. dependencies { compile "org.springframework.bo..

개발/Java|Spring 2023.01.17
728x90
반응형