김도현

사용자 인증/인가 관심사 분리 (Thread Local)

사용자 인증/인가 관심사 분리 문제 해결 과정 왜 이런 과정이 필요했는지? 기존 코드에는 특정 API 컨트롤러마다 사용자 인증 정보를 가져오는 로직이 반복되고있었다. 컨트롤러에서 이에 대한 관심사를 해결하는 것 보다는 이를 분리하는게 더 역할에 맞다고 생각해서 이를 분리하기로 했다. 구체적으로 어떻게 구현한건지? HTTP Connectio...

스프링은 왜 프록시를 짝사랑하는가... (리플렉션, 다이나믹 프록시, CGLIB, AOP)

프록시 패턴에 대한 궁금증 스프링에서 AOP를 공부하려다 보면 그 개념의 근원은 프록시부터 시작한다. AOP가 적용된 로직은 프록시 패턴을 적용하여 요구사항을 해결한다고 알려져있는데 도대체 프록시 패턴이 무엇이고 왜 쓰이고, 스프링은 왜 프록시 패턴으로 AOP를 구성하게 되었는지 알아보려고한다. 프록시 패턴? 디자인 패턴 중 구조 패턴으로 ...

토비의 스프링 8장

0. 스프링이란? 스프링은 자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크 이라고 한다. 이 정의를 조금씩 분해해서 살펴보자 애플리케이션 프레임워크 애플리케이션 프레임워크는 특정 계층/기술/분야에 관계없이 애플리케이션 전 영역을 다루는 범용 프레임워크이다. 이게 일반 프레임워크랑 무슨 차이냐면, 일반적으로 프레임...

커서기반 페이징 및 MySQL 최적화 톺아보기와 적용

흔하디 흔한 오프셋 기반 페이징 offset 쿼리를 사용해서 조회할 데이터를 분할해서 가져온다. 문제점 1. 데이터 중복/유실 페이징 중 데이터 추가/삭제 시 중복된 혹은 유실된 데이터 반환 이 내용은 아직 시나리오가 정확히 이해가 가지 않아서 나중에 자세한 시나리오를 작성하기로한다. 문제점 2. 성능 일단 Limit, Offest 문법은 ...

트랜잭션과 잠금 톺아보기

트랜잭션과 락 트랜잭션은 작업의 완전성을 보장해주는 것이다. 작업을 모두 완벽하게 처리하거나, 처리하지 않고 원 상태로 복구하거나 락과 트랜잭션은 유사해 보이지만 다르다. 락은 동시성을 제어하기 위한 기능이고, 트랜잭션은 데이터의 정합성을 보장하기 위한 기능이다. 락이 없다면 어떻게 되는걸까? 하나의 회원 정보 레코드를 여러 커넥션에서 동시...