Spring
인 메모리가 빠른데 어떻게 활용해야하나요
2026.03.14
Topic (오늘의 주제)Redis(Remote Dictionary Server) 는 인메모리(In-Memory) 에 데이터를 저장하는 키-값(Key-Value) 저장소이다. 디스크 I/O 없이 메모리에서만 동작해 응답 속도가 매우 빠르며, 캐시, 세션 스토어, 실시간 랭킹, 메시지 브로커 등 다양한 용도로 쓰인다.Why (왜 사용하는가? 왜 중요한가?)문제점: DB(MySQL, PostgreSQL 등)는 디스크 기반이라 조회·갱신이 상대적으로 느리고, 트래픽이 몰리면 DB 부하와 응답 지연이 발생한다. 세션을 애플리케이션 메모리에만 두면 서버를 여러 대 쓰는 환경에서 공유가 어렵다.해결책: 자주 쓰는 데이터를 Redis에 두어 캐시로 활용하면 DB 부하를 줄이고 응답 속도를 높일 수 있다. 세션을 Re..
Spring
Spring_30) 관점에 따라 다르게... 보이지만은 않을수도
2026.02.23
Topic (오늘의 주제)AOP(Aspect-Oriented Programming, 관점 지향 프로그래밍) 는 핵심 비즈니스 로직과 애플리케이션 전반에 걸쳐 반복되는 횡단 관심사(부가 기능) 를 분리하여 모듈화하는 프로그래밍 기법이다. Spring AOP는 프록시(Proxy) 패턴을 활용해 런타임에 부가 기능을 적용하며, @Transactional, 로깅, 권한 검사 등이 이 방식으로 동작한다.Why (왜 사용하는가? 왜 중요한가?)문제점: 로깅, 권한 검사, 성능 측정(시간 측정) 같은 코드가 여러 서비스·컨트롤러에 반복되면 비즈니스 로직과 섞여 가독성과 유지보수가 어려워진다.해결책: 핵심 로직과 부가 기능(횡단 관심사)을 분리해, 한 곳에서 부가 기능을 정의하고 필요한 메서드에만 적용할 수 있게 한다..
Spring
Spring_29) Bean 그냥 다 해줬잖아
2026.01.20
Application ContexApplication Context는 스프링 IoC 컨테이너의 핵심 인터페이스로, 빈(Bean)의 생성, 의존성 주입, 생명주기 관리를 담당한다. 애플리케이션의 모든 빈을 중앙에서 관리하여 개발자가 비즈니스 로직에만 집중할 수 있게 한다.Why (왜 사용하는가? 왜 중요한가?)Application Context 없이 객체를 직접 생성하면 의존 관계가 복잡한 애플리케이션에서 구현체 변경 시 코드를 수정해야 하고, 객체의 생성 순서와 주입 관계를 일일이 파악해야 하며, 테스트 시 Mock 객체를 주입하기 어렵습니다.Application Context를 사용하면 스프링이 빈의 생성, 의존성 주입, 생명주기를 자동으로 관리하여 개발자는 비즈니스 로직에만 집중할 수 있습니다. 빈을..
Spring
Spring_27) 쿼리가... 무한히 증식(N+1)하고 있어!
2026.01.14
Topic (오늘의 주제)JPA에서 발생하는 N+1 문제의 원인을 이해하고, 패치 조인(Fetch Join)을 통한 해결 방법과 페이징 시 주의사항을 학습한다.Why (왜 사용하는가? 왜 중요한가?)N+1 문제는 JPA를 사용하는 애플리케이션에서 가장 흔히 발생하는 성능 문제 중 하나로, 하나의 요청이 예상보다 훨씬 많은 쿼리를 발생시켜 데이터베이스 부하를 증가시키고 응답 시간을 지연시킵니다.특히 일대다(One-to-Many, 1:N) 연관관계에서 발생하며, 지연 로딩(Lazy Loading)과 즉시 로딩(Eager Loading) 모두에서 발생할 수 있어 개발자가 반드시 이해하고 해결해야 하는 문제입니다.패치 조인(Fetch Join)을 통해 N+1 문제를 해결할 수 있지만, 페이징과 함께 사용할 경우..
Spring
Spring_26) 한 계단씩 올라가야 이해하는 Spring 동작 및 구조
2026.01.13
Topic (오늘의 주제)Spring MVC(Model-View-Controller)는 스프링 프레임워크의 웹 계층을 담당하는 모듈로, 웹 요청을 처리하고 응답을 생성하는 구조화된 아키텍처를 제공한다. Dispatcher Servlet을 중심으로 모든 요청을 중앙에서 관리하여 개발자가 비즈니스 로직에만 집중할 수 있게 한다.Why (왜 사용하는가? 왜 중요한가?)Spring MVC 없이 순수 서블릿을 사용하면 요청마다 각각의 서블릿을 만들어야 하며, 파라미터 파싱, 객체 생성, 응답 생성 등 반복적인 코드를 직접 작성해야 합니다. 이는 코드 중복을 증가시키고 유지보수를 어렵게 만듭니다.Spring MVC는 Dispatcher Servlet이라는 단일 진입점을 통해 모든 요청을 중앙에서 관리하고, Hand..