kdmstj (58) 썸네일형 리스트형 [Spring Security] 로그인 예외 처리를 해보겠습니다. (feat. @ControllerAdvice) Spring Security 에서 인증(로그인)시에 예외가 발생할 수 있는데 이를 처리하는 과정을 정리해보고자 합니다. 📍 인증 과정에서 예외가 발생하는 이유Spring Security 에서 로그인 요청이 들어오면 AuthenticationManager 가 인증을 시도합니다. 이 과정에서 적절한 AuthenticationProvider 를 선택하여 인증을 수행하는데, 아이디나 비밀번호가 잘못된 경우, 계정이 잠긴 경우 등 다양한 이유로 인증이 실패할 수 있습니다. 인증이 실패하면 AuthenticationException 이 발생합니다. SpringSecurity 는 이를 상속하는 다양한 예외 클래스를 제공하여, 실패 원인에 따라 다른 예외가 발생하도록 합니다. 📍인증 과정에서 예외가 발생하는 흐름.. [항해 스킬업 Redis] 2주차 회고 항해 스킬업 Redis 2주차의 목표는 조회 페이지의 성능을 개선하는 것이었습니다. 다음과 같은 과정을 거쳐서 성능을 개선하는 것을 정리해보겠습니다. 1. QueryDSL 을 활용한 동적 영화 검색 기능 구현2. 인덱스 적용3. 로컬 캐싱 적용4. Redis 캐싱 적용5. 1-4 과정을 거치면서 각각 부하 테스트비즈니스 요구 사항영화 제목으로 검색 : 영화 제목을 입력받아 검색 결과를 반환영화 장르로 필터링 : 장르에 따라 영화를 필터링정렬 조건영화 개봉일 순서 : 내림차순 (release_at DESC)영화 상영 시간 순서 : 오름차순 (started_at ASC)다음과 같이 테이블이 구성되어 있습니다. 1. QueryDSL 을 활용한 동적 영화 검색 기능 구현@RequestParam 어노테이션을 사.. [Java] Synchronized 키워드를 알아보겠습니다. Synchronized 키워드Java 는 synchronized 키워드를 사용하여 멀티 스레드 환경에서 스레드 간 동기화와 상호 배제를 보장하기 위해 모니터 락(Monitor Lock)을 내부적으로 사용합니다. 이 락은 하나의 스레드만 임계 구역에 접근하도록 하여 데이터의 무결성을 보장합니다. 이 과정에서 JVM 은 다음 작업을 수행합니다.락을 얻기 위한 경쟁 처리락 상태 업데이트락 소유자가 해제될 때 다른 대기 중인 스레드에게 락을 전달synchronized 키워드는 다음과 같은 경우에 사용할 수 있습니다.synchronized methodstatic synchronized methodsynchronized block1. Synchronized methodSynchronized Method는 인스턴스 .. [OS] 동시성 이슈에 대해 알아보겠습니다. 동시성(Concurrency)이란?병행성이라고 불리기도 하는 동시성은 논리적으로 두 개 이상의 task 가 동시에 실행되는 것처럼 보이는 상태를 의미합니다. 이를 구현하기 위해 하나의 작업을 일정 부분만 수행한 후, 다음 작업으로 전환하며 실행합니다. 이 과정에서 문맥 교환이 필요합니다. 동시성 환경에서는 여러 스레드가 동시에 공유 자원(shared resource)을 수정하려 할 때 문제가 발생할 수 있습니다. 이를 동시성 이슈라고 합니다. 먼저, 공유 자원과 임계 영역에 대해 알아보겠습니다.공유 자원과 임계 영역이란?공유 자원은 여러 스레드나 프로세스가 동시에 접근할 수 있는 데이터를 의미합니다. 코드 측면에서는 Service 등에 전역 변수가 공유 자원이 될 수 있습니다.프로세스 메모리 영역은 크게.. [책 리뷰]혼자 공부하는 컴퓨터 구조와 운영체제 해당 책을 읽기 된 계기대학교 2학년 때 만난 멘토님께서 "개발자라면 컴퓨터 부품을 직접 해체해보는 경험을 가지는 것이 좋다" 라고 조언해주셨습니다. 하지만 부끄럽게도, 백엔드 개발자로 1년을 근무하면서도 제가 알고 있는 컴퓨터 구조라곤 학부 시절 교양 수업으로 들었던 "그림으로 배우는 컴퓨터 구조"가 전부였습니다. (저희 학부는 소프트웨어 융합 대학교 소속임에도 불구하고, 컴퓨터 구조와 운영체제를 체계적으로 학습할 기회는 없었습니다.) 개발자로 일하며 문제가 발생했을 때, 명확히 알 수 없는 답답함이 자주 느껴졌습니다. 그러던 중 멘토님의 조언이 떠올랐고, 이를 계기로 "혼자 공부하는 컴퓨터 구조와 운영체제" 책을 참고하여 컴퓨터 구조와 운영체제를 다시 학습하기로 결심했습니다. 어떻게 읽었는지공부를 시.. [OS] 멀티프로세스(multi-process)와 멀티스레드(multi-thread)를 비교해보겠습니다. 이번 글에서는 멀티 프로세스와 멀티 스레드를 비교해보록 하겠습니다. 두 개념 모두 "멀티(multi)"가 붙는다는 공통점이 있어 헷갈리는 개념이기도 합니다. "멀티(multi, 다수의)" 를 뗀 "프로세스(process)"와 "쓰레드(thread)"에 대해 먼저 정리해보겠습니다. 프로세스란 무엇일까요?실행중인 프로그램을 프로세스라고 합니다. 다시 말해 보조기억장치에 저장되어 있던 프로그램이 실행 되기 위해서 메모리에 적재되는 순간 프로세스가 됩니다. 이러한 과정을 프로세스가 생성된다라고 표현합니다. 프로세스는 나뉘어서 메모리에 적재됩니다. 메모리에는 커널 영역과 사용자 영역이 있습니다. 커널 영역에는 프로세스 생성시 PCB(Process Control Block)이라는 프로세스와 관련된 정보들이 담긴 .. JWT와 토큰 기반 인증 방식에 대해 알아보겠습니다. 정의JWT(Json Web Token) 는 RFC 7519 에 명세되어 있는 국제 표준으로써, 통신 양자간의 정보를 JSON 형식을 사용하여 안전하게 전송하기 위한 방법입니다. 이는 정보가 토큰 자체에 포함된 (Self-Contained) 토큰입니다.구성요소JWT는 '.' 구분자를 사용하여 Header, Payload, Signature 의 3부분으로 구분되며, 각 부분은 Base64 로 인코딩 되어 표현됩니다. (Base64 은 Binary Data 를 6 bit 씩 자른 뒤 6 bit 에 해당하는 문자를 색인표에서 찾아 Text 로 변경하는 인코딩 방법입니다. ) 1. 헤더(HEADER)는 해싱 알고리즘(alg) 과 토큰 타입 (typ) 의 정보를 지니고 있습니다.- alg : 기본적으로 HMAC, .. [Spring] 로그를 어떻게 남겨야 할까? 📍1단계 : HTTP Request / Response 로그를 어디에서 처리해야 할까?HTTP Request / Response 로그는 공통 처리가 필요한 영역입니다. 이를 처리하기 위한 방법으로 주로 사용되는 세가지가 있습니다. 1. Servlet FilterServlet Filter 는 Dispatcher Servlet 의 전 / 후에 동작하며, 사용자의 요청이나 응답을 가장 먼저 마주합니다. 필터는 스프링의 고유 기능이 아니라 자바 서블릿에서 제공하는 기능입니다. Filter 는 동일한 Servlet Container (e.g Tomcat) 내에서 필요한 자원들을 활용하여 동작합니다. 2. Handler InterceptorInterceptor 는 Dispatcher Servlet 이 실행된 후.. 이전 1 2 3 4 ··· 8 다음