JWT vs Opaque Token Notes 두 토큰의 차이 JWT는 토큰 자체 안에 클레임이 들어 있는 self-contained token이다. 반면 Opaque Token은 의미를 해석할 수 없는 식별자에 가깝고, 서버가 별도 저장소나 인증 서버를 통해 조회해야 한다. 예를 들어: JWT: 토큰만 보고도 사용자 ID, 만료 시간, 권한 정보를 읽을 수 있다. Opaque To... 2024/09/07 Notes, Web
GraphQL Notes GraphQL이 해결하려는 문제 GraphQL은 클라이언트가 필요한 데이터 구조를 직접 지정할 수 있게 만든 API 질의 방식이다. REST처럼 엔드포인트별로 정해진 응답을 받는 대신, 하나의 스키마를 기준으로 필요한 필드만 요청한다. 이 방식이 주목받는 이유는 다음과 같다. 필요한 필드만 가져와 over-fetching을 줄일 수 있다. ... 2024/09/07 Notes, Web
GraphQL with Spring Boot Notes Spring Boot에서 GraphQL을 붙인다는 것 Spring Boot에서 GraphQL을 도입한다는 것은 REST 컨트롤러를 하나 더 만드는 일이 아니라, 스키마와 리졸버 중심으로 API 레이어를 다시 구성하는 일에 가깝다. 중심 요소는 다음과 같다. GraphQL 스키마 Query/Mutation 리졸버 타입별 필드 리졸버 ... 2024/09/07 Notes, Web
Connection Pool Notes Connection Pool이 필요한 이유 애플리케이션이 요청마다 새 DB 연결을 만들고 닫으면 비용이 크다. TCP 연결, 인증, 세션 초기화가 반복되기 때문이다. 요청 수가 많아지면 연결 생성 비용만으로도 응답 시간이 흔들린다. Connection Pool은 미리 만들어 둔 연결을 재사용해서 이 비용을 줄인다. 동작 방식 대략적인 흐름은 다... 2024/09/07 Notes, Web
Microservice Architecture Notes 왜 마이크로서비스를 선택하는가 마이크로서비스 아키텍처는 하나의 큰 애플리케이션을 여러 개의 작은 서비스로 나누는 방식이다. 각 서비스는 독립적으로 배포되고, 자신의 데이터와 책임을 가진다. 이 구조를 쓰는 이유는 보통 다음과 같다. 팀 단위로 소유권을 나누기 쉽다. 특정 기능만 독립적으로 배포할 수 있다. 트래픽 특성에 맞춰 서비스별... 2024/09/07 Notes, Web
Querydsl을 사용하는 이유와 기본 패턴 Notes Querydsl이 필요한 순간 조회 조건이 조금만 복잡해져도 메서드 이름 쿼리나 문자열 JPQL은 금방 읽기 어려워진다. Querydsl은 이 문제를 “타입 안전한 쿼리 빌더”로 해결한다. 장점 컴파일 타임에 필드 변경 오류를 발견할 수 있다. IDE 자동완성이 잘 된다. 조건 조합이 명확하다. Repository 구현을 읽기 좋... 2024/09/07 Notes, Spring
Spring 애플리케이션에서 페이지네이션을 설계하는 방법 Notes 페이지네이션은 단순히 잘라서 보여주는 문제가 아니다 목록 조회를 만들 때 페이지네이션은 거의 필수다. 하지만 단순히 Pageable을 받는 것만으로 끝나지 않는다. 성능, 정렬 안정성, 카운트 쿼리 비용까지 함께 봐야 한다. 가장 흔한 방식 두 가지 Offset Pagination limit, offset 기반 방식이다. 장점: 구현이 ... 2024/09/07 Notes, Spring
Spring의 IoC와 DI를 어떻게 이해할 것인가 Notes IoC와 DI는 왜 중요한가 스프링을 배울 때 가장 먼저 듣는 개념이 IoC와 DI다. 그런데 용어만 외우면 실전에서 감이 잘 오지 않는다. 핵심은 “객체가 스스로 의존 대상을 만들고 실행 흐름을 통제하지 않는다”는 점이다. DI 먼저 이해하는 편이 쉽다 의존이란 한 클래스가 다른 클래스의 기능에 기대고 있으면 의존 관계가 있다고 본다. 문제는... 2024/09/07 Notes, Spring
Spring과 JPA에서 Race Condition을 다루는 방법 Notes Race Condition이란 여러 요청이 동시에 같은 자원을 읽고 수정할 때, 의도하지 않은 순서로 처리되어 데이터 정합성이 깨지는 상황을 말한다. 대표 예시는 다음과 같다. 재고 차감 중복 결제 방지 쿠폰 선착순 발급 좌석 예약 조회와 갱신이 분리된 흐름에서는 특히 쉽게 발생한다. 왜 JPA에서 자주 문제가 되는가 JP... 2024/09/07 Notes, Spring
Filter, Interceptor, AOP의 차이와 선택 기준 Notes 세 가지가 모두 필요한 이유 웹 애플리케이션에서 공통 처리를 넣는 지점은 하나가 아니다. 요청이 서블릿 컨테이너에 들어온 직후 처리할 일도 있고, 컨트롤러 직전에 처리할 일도 있고, 서비스 메서드 호출 주변에서 처리할 일도 있다. 그래서 Filter, Interceptor, AOP는 서로 대체재라기보다 적용 지점이 다른 도구에 가깝다. Filte... 2024/09/07 Notes, Spring