목록study/spring (3)
킴의 레포지토리
WAS를 구현해보면서 스프링부트의 내장 WAS인 톰캣은 어떻게 동시 요청을 처리하는지 알아보았다. 1. 스레드 풀1-1. 스레드 풀은 왜 사용하는가?WAS는 동시에 들어오는 요청을 처리하기 위해서 멀티 스레드로 동작한다. 동시에 들어오는 요청만큼 쓰레드를 계속 생성한다면 다음과 같은 문제가 발생한다. 1. 스레드를 생성하기 위해서는 시스템 콜을 통해 OS 커널 모드로 진입해 OS 스레드를 생성하는데 이 동안 요청은 대기하게 된다. 2. 스레드가 많으면 하나의 CPU에서 여러 스레드를 동시에 작업하기 위해서 스레드간의 컨텍스트 스위칭이 많이 발생해서 CPU 오버헤드가 커진다. 3. 스레드는 고유한 실행 컨텍스트를 가지며, 호출 스택을 저장하기 위해서 스택 메모리를 할당받는데 스레드가 너무 많아지면 Stac..
이 글은 프로젝트에서 스프링 시큐리티를 사용해서 OAuth 2.0 로그인을 구현한 과정을 담았다. 먼저 OAuth 2.0 프로토콜에 대해서 이해하기 위해서 관련 개념을 정리하고, 검사 도구를 사용해 네이버 OAuth2.0 로그인이 진행되는 과정에서 일어나는 네트워크 통신을 살펴보았다. 그 후, 스프링 시큐리티에서 어떻게 OAuth 2.0 로그인을 지원하는지 관련 클래스 코드들을 분석했다. 마지막으로 프로젝트에 적용하였다.1. OAuth 2.0 프로토콜1-1. OAuth 란?OAuth란 third-party 앱이 접근 제한된 서비스 자원(protected resource)를 사용하기 위해 리소스 소유자(사용자)의 허락을 받아 자원을 사용할 수 있도록 하는 프로토콜이다. 즉, 클라이언트 어플리케이션이 사용자..
이전 프로젝트에서 JWT로 사용자 인증 및 인가 로직을 구현할때 인터셉터를 활용했다. 이 경험을 바탕으로, 필터와 인터셉터의 사용 목적과 차이점을 다시 한번 고민해보기로 했다. 우선, 필터와 인터셉터가 왜 사용되는지 살펴본다. 이어서, 서블릿 컨텍스트와 어플리케이션 컨텍스트이 차이점 그로 인한 필터와 인터셉터의 주요 차이점에 대해 알아본다. JWT 토큰 검증 로직을 인터셉터에 구현한 이유를 분석하고, 이 로직을 필터에 적용할 경우의 방법과 장점을 분석해본다. 1. 필터와 인터셉터는 공통 관심사를 분리하기 위해 사용된다. 공통관심사는 비지니스 로직으로부터 분리되어야한다. 인증 및 인가, 로깅, 인코딩 등 어플리케이션의 다양한 로직에서 걸쳐 공통으로 적용되는 로직을 공통 관심사라고 한다. 공통 관심사를 위해..