전체 글89 분산 환경에서의 스프링 스케줄러 사용 개요 스케줄러를 사용할 때, 서버가 하나뿐인 환경에서는 동시에 같은 스케줄링 작업이 중복해서 실행되는 것을 고려할 필요가 없습니다. 그러나 둘 이상의 서버를 사용하는 분산 환경에서는 클러스터링이 필요합니다. 세션 기반 로그인을 분산 환경에서 사용해보았다면 레디스나 JDBC를 이용해서 세션 클러스터링을 고민해보거나 시도해본 경험이 있을 것입니다. 스케줄러도 동일합니다. 분산 환경에서 스케줄링한 작업이 동시에 한 번만 실행하는 것을 보장해주기 위해 클러스터링이 필요합니다. 이에 대한 해결방법은 두 가지입니다. 첫째, 스케줄러 락을 제공하는 라이브러리인 shedlock을 사용하는 것 둘째, 스프링이 제공하는 스케줄러 대신 quartz를 사용하여 스케줄러 클러스터링을 하는 것 저는 전자의 방법인 shedlock.. 2023. 9. 10. 데브코스 백엔드 중간 회고 중간 회고 데브코스 시작 후 3개월이 되었습니다. 후반기로 접어들면서 본격적인 프로젝트에 들어가기 앞서 지금까지 배운 것들, 느낀 것들을 정리해볼 필요성을 느꼈습니다. 코드리뷰 항상 제게 필요하다고 느꼈던 부분이었고 과제를 수행하면서 부족한 점들을 많이 찾고 고칠 수 있는 기회였다고 생각합니다. 멘토님들께 코드 리뷰를 받고 질의응답을 하면서 느낀 점은 객체지향, 스프링, JPA, 계층형 아키텍처 등 그동안 구현하면서 잘 쓰고 있다고 생각했던 것들이 사실은 그렇지 않다는 것이었습니다. 첫 번째 계산기 과제에서 어떤 객체에 책임을 할당해야할지 알지 못했습니다. 책임을 할당한다. 라는 말은 알고 있었지만 말 그대로 알고만 있었습니다. 객체지향에 대한 제대로 된 학습이 필요하다 느꼈습니다. 다행히 객체지향 스터.. 2023. 8. 27. 스프링 시큐리티 인증 프로세스와 데이터베이스 인증 처리 복습 AbstractAuthenticationProcessingFilter는 사용자의 인증을 위한 정보를 모아서 미완성의 Authentication 객체를 만듭니다. 구현체를 기준으로 다시 정리해봅시다. UsernamePasswordAuthenticationFilter는 HTTP 요청으로부터 인증을 위한 파라미터를 뽑아냅니다. 이를 토대로 인증되지 않았고 권한도 없는 UsernamePasswordAuthenticationToken 객체를 만듭니다. 생성된 Authentication 객체는 AuthenticationManager로 전달되어 인증 프로세스를 수행합니다. 다시 한 번 구현체를 기준으로 정리해봅시다. 생성된 UsernamePasswordAuthenticationToken 객체는 Pro.. 2023. 8. 12. [TIL] 스프링 시큐리티 인증 아키텍처와 프로세스 1. 스프링 시큐리티 인증 아키텍처 SecurityContextHolder SecurityContextHolder는 스프링 시큐리티 인증 모델의 핵심입니다. 이것은 인증된 사용자에 대한 세부 정보(details)를 저장하는 곳입니다. 어떤 값이 포함되어 있든 간에 값이 포함되어 있기만 하면 인증된 사용자로 간주됩니다. SecurityContextHolder는 전략 패턴을 사용합니다. SecurityContextHolderStrategy를 클래스 변수로 가지며 ThreadLocal을 사용하여 세부 정보를 저장하는 ThreadLocalSecurityContextHolderStrategy을 기본 전략으로 사용합니다. final class ThreadLocalSecurityContextHolderStrategy.. 2023. 8. 6. [TIL] 스프링 시큐리티 아키텍처 1. 스프링 시큐리티 아키텍처 FilterChain 스프링 시큐리티는 서블릿 필터를 기반으로 동작합니다. 사용자가 애플리케이션에 요청을 보내면 서블릿 컨테이너는 요청 URI를 기반으로 HttpServletRequest를 처리하는 FilterChain을 생성합니다. 각 필터는 순차적으로 요청과 응답에 대한 여러 작업을 수행하게 됩니다. 스프링 웹 애플리케이션이라면 마지막에 오는 Servlet은 DispatcherServlet이 될겁니다. DelegatingFilterProxy 스프링은 서블릿 컨테이너의 라이프사이클과 스프링의 ApplicationContext 사이를 연결할 수 있는 DelegatingFilterProxy라는 필터 구현체를 제공합니다. 이 녀석이 모든 작업을 Filter를 구현하는 스프링 b.. 2023. 8. 5. [TIL] 스프링 시큐리티 Quick Start 1. 스프링 시큐리티 스프링 시큐리티는 인증, 권한 부여, 악의적인 공격으로부터 보호하기 위한 포괄적 지원을 제공하는 프레임워크입니다. 공식 문서에서는 스프링 기반 애플리케이션에서 보안을 위한 사실상(de-facto) 표준이라고 표현하고 있습니다. 스프링 시큐리티가 제공하는 기능은 다음 세 가지로 요약할 수 있습니다. 1) 인증(Authentication) 스프링 시큐리티는 사용자 인증을 위한 지원을 제공합니다. 가장 일반적인 방법은 사용자의 아이디와 패스워드를 입력하도록 요청하는 것입니다. 인증이 완료되면 신원을 파악하고 권한 부여를 수행할 수 있습니다. 2) 악의적인 공격으로부터 보호(Protection Against Exploits) 일반적으로 알려진 악의적 공격으로부터 보호 기능을 제공합니다. 3.. 2023. 8. 5. 이전 1 ··· 3 4 5 6 7 8 9 ··· 15 다음