본문 바로가기

분류 전체보기47

JWT 설정 yml 클래스 관리 JWT(JSON Web Token)는 인증과 인가를 구현할 때 가장 많이 사용되는 방식 중 하나다.하지만 JWT 자체보다 더 중요한 것은토큰을 생성할 때 필요한 설정 정보를 어떻게 관리하느냐다.발급자(issuer), 비밀키(secret), 만료 시간(expired) 같은 값들은코드에 하드코딩되면 안 되고,환경별로 분리되어야 하며,무엇보다 외부에 노출되지 않아야 한다.이 글에서는JWT 생성에 필요한 정보들을yml 설정 파일과 ConfigurationProperties 클래스를 통해안전하고 명확하게 관리하는 방법을 정리한다.JWT 설정 ConfigurationProperties 설계JWT 토큰을 생성할 때 필요한 값은 많지 않다.대표적으로 발급자, 비밀키, 만료 시간 정도면 충분하다.이 값들을 하나의 설정 .. 2026. 2. 23.
Spring 예외 처리 흔한 실수 Spring 기반 애플리케이션을 개발하다 보면예외 처리는 반드시 마주치게 되는 주제다.처음에는 try~catch로 빠르게 해결할 수 있어 보이지만,규모가 커질수록 잘못된 예외 처리 방식은유지보수성과 안정성을 급격히 떨어뜨린다.특히 Spring에서는트랜잭션, AOP, 컨트롤러 레이어가 분리되어 있기 때문에예외를 어디서 던지고 어디서 잡을지에 대한 기준이 없다면코드는 빠르게 복잡해진다.이 글에서는Spring 예외 처리에서 실무에서 자주 발생하는대표적인 실수들을 정리하고,왜 문제가 되는지 차분히 살펴본다.Spring 예외 처리 try catch 남용가장 흔한 실수는모든 로직을 try~catch로 감싸는 것이다.서비스 메서드마다 try~catch가 등장하고,예외가 발생하면 로그를 찍고 null을 반환하거나임의의.. 2026. 2. 23.
[Spring] ExceptionHandler 통합 vs 도메인별 분리 Spring 애플리케이션에서 예외 처리를 구조화하다 보면반드시 한 번은 고민하게 되는 지점이 있다.ExceptionHandler를 하나로 통합할 것인가,아니면 도메인별로 분리할 것인가 하는 문제다.둘 다 정답이 될 수 있다.중요한 것은 “어느 쪽이 더 좋다”가 아니라현재 시스템의 규모와 도메인 복잡도에어느 방식이 더 적합한지를 판단하는 것이다.이 글에서는ExceptionHandler 통합 방식과도메인별 분리 방식의 차이를 정리하고,실무에서 어떤 기준으로 선택하면 좋은지 살펴본다.ExceptionHandler 통합 전역 예외 처리ExceptionHandler 통합 방식은하나의 @RestControllerAdvice에서모든 예외를 처리하는 구조다.가장 단순하고 빠르게 적용할 수 있는 방식이며,소규모 프로젝트.. 2026. 2. 22.
[Spring] 예외 처리 CustomException 구조 개발을 하다 보면 예외는 반드시 발생한다. 문제는 예외 자체가 아니라, 그 예외를 어떻게 처리하느냐이다. try~catch를 곳곳에 흩뿌려두면 코드는 빠르게 지저분해지고 비즈니스 로직의 흐름도 한눈에 들어오지 않는다.특히 게시글 조회, 수정, 삭제 같은 도메인에서는 존재하지 않는 데이터, 권한이 없는 사용자 접근과 같은 예외 상황이 반복적으로 등장한다. 이런 경우를 try~catch로 매번 처리하는 대신, 한 곳에서 일관되게 관리하는 것이 훨씬 낫다.이 글에서는 CustomException과 ErrorCode, 그리고 ExceptionHandler를 활용해 예외를 도메인 중심으로 정리하고 컨트롤러를 깔끔하게 유지하는 방법을 살펴본다.예외 처리 CustomException과 ErrorCode가장 먼저 해야.. 2026. 2. 22.
분산 락 Zookeeper Redisson 서버 한 대에서만 동작하는 애플리케이션이라면 synchronized, ReentrantLock, 데이터베이스 락만으로도 동시성 문제를 해결할 수 있다. 하지만 서버가 여러 대로 늘어나고, 각 인스턴스가 동일한 자원을 수정하게 되는 순간 기존 방식은 더 이상 안전하지 않다.이때 등장하는 개념이 분산 락이다. 분산 락은 여러 서버 인스턴스가 하나의 공유 자원에 접근할 때 “지금 누가 작업 중인지”를 중앙에서 일관되게 관리하기 위한 장치다. 대표적인 구현체로 Zookeeper와 Redisson이 있다. 이 글에서는 분산 락이 언제 필요한지, 그리고 두 도구를 언제 선택해야 하는지 정리한다.분산 락이 필요한 상황분산 락은 모든 시스템에 필요한 것은 아니다. 오히려 대부분의 경우에는 필요 없는 기술이다. 문제가 .. 2026. 2. 21.
동시성 문제의 원인과 비관적 락, 낙관적 락, 단일 스레드 방식으로 해결하는 방법 서버는 사람의 요청이든 시스템의 호출이든 동시에 여러 작업을 처리한다. 각 요청은 보통 하나의 스레드를 할당받아 실행되며, 이 과정에서 여러 스레드가 하나의 자원을 공유하게 된다. 공유 자원을 동시에 읽고 수정하는 순간, 우리가 예상하지 못한 결과가 발생할 수 있는데, 이를 동시성 문제라고 부른다.대표적인 질문은 다음과 같다. “재고가 100개일 때 100명이 동시에 요청하면, 재고는 반드시 0이 되는가?” 단일 스레드 환경에서는 당연한 결과지만, 멀티 스레드 환경에서는 전혀 그렇지 않다. 이 글에서는 동시성 문제가 왜 발생하는지, 그리고 어떤 방식으로 해결할 수 있는지를 비관적 락, 낙관적 락, 단일 스레드 처리 관점에서 정리한다.동시성 문제 발생 원인과 Race Condition동시성 문제의 핵심 원.. 2026. 2. 21.