
이 포스트를 작성하면서 RestTemplate과 트랜잭션, 캐싱의 복잡한 상호작용을 이해하게 되었습니다. RestTemplate을 사용할 때의 타임아웃 설정과 캐싱의 문제를 미리 고민하고 해결책을 마련하는 것이 얼마나 중요한지 실감했습니다.

스프링의 @ControllerAdvice를 활용해 전역 예외 처리와 공통 설정을 관리하는 방법을 소개합니다. 애플리케이션 전역에서 일관된 예외 처리를 구현하여 코드의 유지보수를 용이하게 할 수 있습니다.

Spring에서 WebSocket을 이용한 실시간 통신 구현 방법을 다룹니다. STOMP 프로토콜과 SockJS 라이브러리를 사용하여 효율적인 실시간 데이터를 전송하는 방법을 소개합니다.

Spring 6와 Jakarta EE의 변화는 엔터프라이즈 자바 개발에 큰 전환점을 가져왔습니다. 새로운 기술 스택과 과제를 이해하고 준비하는 방법을 소개합니다.

RestTemplate을 활용한 크롤링에서 타임아웃 설정의 중요성과 캐싱 전략에 대한 고민을 다뤘습니다. 성능 문제를 예방하고 안정적인 서비스를 구축하기 위한 실용적인 팁을 확인해보세요

프로젝트는 간략하게 이런식으로 생겼다. 나는 주황 박스안을 구현했다. 들어온 CLIENT요청을 가공해서 (1) DB와 (2) 외부서버에 같은 내용을 뿌려야한다. 뿌리더라도 외부 서버의 로직에서 에러가 발생하여 누락될 수 도있고 이런저런 염려로 DB와 외부서버의

우리는 Job을 알고, Job 안에 Step이 있으며, Step 안에 ItemReader, ItemProcessor, ItemWriter가 있다는 사실을 알았습니다. 이제 이를 구현해 보겠습니다. Job, Step 간단 코드 JOB Job 별거 없습니다. Jo

@JobScope와 @StepScope의 활용 배치를 사용하다 보면 다양한 스코프를 사용하게 됩니다. 예를 들어, 아래와 같이 step에 @JobScope를 붙일 수 있습니다. Spring Batch의 스코프를 알기 전, 간단히 Spring 스코프에 대해 언급하겠습

ChunkOrientedTasklet이 무한 루프를 도는 문제를 분석합니다. ItemReader, ItemProcessor, ItemWriter의 역할과 ChunkOrientedTasklet의 동작 원리를 살펴보며 문제 해결의 힌트를 정리하였습니다.

ChunkOrientedTasklet을 사용할 때 무한 루프 문제를 해결했습니다. MyBatisPagingItemReader의 페이징 설정이 부족해 발생한 문제였으며, 적절한 페이징 처리를 통해 해결했습니다. 디버깅 과정과 해결 방법을 공유합니다.

이번 포스팅에서는 Spring Data JPA의 CrudRepository와 JpaRepository의 차이점과 각자의 사용 사례를 살펴보고, Redis와 Kafka를 활용한 대용량 데이터 처리 전략을 학습하였습니다.

Spring Security의 @PreAuthorize를 사용하여 메소드 접근을 제어하는 방법을 포스팅하였습니다. 역할 기반 및 인증 상태에 따른 접근 권한 설정을 통해 애플리케이션 보안을 강화 학습에 도움이 되었습니다.

소프트웨어 설계 원칙을 깊이 이해하고 실무에 적용하기 위한 포스팅입니다. 관심사의 분리, 오브젝트 팩토리 패턴, DI와 디자인 패턴, 의존성 역전 원칙 등을 살펴보며 코드 설계의 중요성을 재조명합니다.

테스트와 의존성 주입(DI)에서의 접근 방법, @Autowired와 빈 팩토리의 관계, 그리고 시간 테스트에 대한 현대적인 접근 방법에 대해 알아보세요. getter 사용, @Autowired의 이해, Clock과 LocalDateTime의 차이점 등 중요한 개념을 정

BigDecimal소수점 사용 시 Double 및 Float 과 같은 '부동소수점' 클래스를 사용할 경우0.00000001 과 같은 의도치 않은 오차가 발생할 여지가 있다.(값의 비교엔 isEqualTo 보다는 isEqualByComparingTo 메서드를 쓴다.)따라

1. @ContextConfigure @ContextConfiguration은 스프링 테스트 컨텍스트 프레임워크에서 사용되는 어노테이션으로, 테스트가 실행될 때 필요한 스프링 애플리케이션 컨텍스트를 로드하여 테스트 환경을 설정합니다. 이 어노테이션을 사용하면, 테스

JPA는 자바 애플리케이션에서 객체와 관계형 데이터베이스 간의 매핑을 자동으로 처리하는 강력한 라이브러리입니다. 그러나 JPA에 의존하지 않고 더 유연한 설계를 추구할 필요가 있을 때가 있습니다. 이 포스팅에서는 기존 JPA 엔티티 코드에서 Jakarta 패키지와...

리액티브 프로그래밍의 기본 개념부터 리액터, 코틀린 플로우, 서스펜드 및 웹플러스 리액터의 개조 과정을 포스팅하였습니다.

JUnit 테스트에서 반복되는 데이터 셋업을 @Sql로 간편하게 처리하는 방법을 소개합니다. SQL 파일로 데이터 준비하고, @Transactional로 롤백까지 자동화하세요!

Reactive Streams를 이용한 Publisher, Subscriber, Subscription의 역할을 이해하고, 백프레셔 관리 기법을 활용하여 데이터 스트림을 효율적으로 처리하는 방법을 포스팅하였습니다.

기본적인 Filter를 사용하여 요청에 대해 text/plain 응답을 출력하는 예입니다. 하지만 설명에서 언급된 내용에 대해 좀 더 명확히 하고, 실질적인 예제로 개선할 수 있습니다. 또한, 예제에서 발생하는 문제를 해결하기 위해 SSE (Server-Sent

Spring WebFlux를 활용하여 실시간 데이터 스트리밍을 구현하는 방법을 소개합니다. SSE(Server-Sent Events)를 사용한 비동기 스트리밍 처리와 효율적인 데이터 전송 방식을 다룹니다.

Spring WebFlux와 리액티브 프로그래밍을 통해 비동기 데이터를 처리하는 방법을 소개합니다. Mono, Flux, R2DBC 등을 활용한 효율적인 비동기 시스템 구축법!

Spring WebFlux를 이용한 리액티브 프로그래밍의 핵심 개념과 비동기, 논블로킹 I/O, Flux, Mono, 백프레셔 등을 예제와 함께 소개합니다.

JPA 상속 관계에서 발생한 OptimisticLockingFailureException의 원인과 해결 방법을 분석합니다. 상속 관계에서의 데이터 처리 및 삭제 시 발생할 수 있는 문제를 해결한 경험을 공유합니다.

Spring AI와 Olma를 활용해 대규모 언어 모델(LLM)을 Spring Boot 애플리케이션에 통합하는 방법을 소개합니다. AI 모델 설치부터 API 호출까지, 포스팅하였습니다.

📈 초당 3000건의 주문을 처리하는 이커머스 시스템에서 겪었던 예외 처리 성능 문제와 해결 과정을 공유합니다. 800ms에서 150ms까지 응답속도를 개선한 실제 사례와 함께, 로깅 최적화, 캐싱 도입, 모니터링 구축 방법을 상세히 다룹니다.

Kafka와 Spring Batch를 활용한 대규모 로그 처리 시스템의 성능 최적화 사례를 소개합니다. 병목 지점 분석과 개선 방법, 성능 테스트 결과를 공유합니다.

Redis를 활용한 성능 최적화 사례를 소개합니다. 반복적인 DB 조회로 발생한 성능 문제를 캐시 설계 개선을 통해 해결한 실제 사례를 다루고 있습니다. 성능 측정, 개선 전후 비교와 코드 예시도 포함되었습니다.

스프링의 @Transactional 어노테이션 사용 시 발생할 수 있는 예상치 못한 롤백 동작에 대해 알아봅니다. Checked/Unchecked Exception의 차이, 프록시 구조에 따른 영향, 그리고 실무에서 마주칠 수 있는 다양한 상황들을 실제 코드와 함께 살

HTTP Only 쿠키는 웹 보안의 핵심 요소로, XSS 공격 방어 및 세션 보호에 필수적입니다. Spring Boot와 JWT를 활용한 고급 구현 전략과 보안 강화를 위 해 학습한내용을 포스팅하였습니다.

사이드프로젝트에서 채팅기능때문에 Spring 멀티모듈 프로젝트에서 환경변수를 효율적으로 설정하는 방법을 포스팅하였습니다. @Profile과 @PropertySource로 프로필별 환경 설정을 어떻게 적용했는지 학습한결과를 정리하였습니다.

중복 콘텐츠 검사는 검색, 게시판 관리, 데이터 검증 등 다양한 분야에서 필수적입니다. 스프링(Spring)과 라빈-카프(Rabin-Karp) 알고리즘을 활용하여 효율적인 중복 콘텐츠 검사 서비스를 구현하는 방법을 자세히 다룹니다.

Netty 프레임워크로 구현하는 WebSocket 실시간 채팅 서비스! 서버 구축부터 메시지 처리까지 핵심 코드와 함께 알아봅니다. 다중 세션 지원으로 한 계정의 여러 기기 동시 접속까지 가능한 채팅 서비스를 직접 만들어보세요.

트래픽 급증 시에도 안정적인 서비스를 유지하는 비결, 로드 밸런싱! 스프링 부트를 활용해 직접 구현해보는 것을 학습하였습니다.

ForkJoinPool과 WorkerThreadPool의 차이점, 반제어 동시성 모델, CPS(Continuation Passing Style)의 개념을 정리했습니다. 동시성 처리 및 쓰레드 관리에 대한 이해를 높여보세요!

Spring Boot 애플리케이션의 성능을 획기적으로 개선하는 멀티스레딩 구현 방법을 포스팅하였습니다. @Async, CompletableFuture부터 Thread Pool 설정까지, 실무에 바로 적용 가능한 다양한 비동기 처리 기법과 실전 예제를 통해 성능 최적화

Redisson의 분산 ReadWriteLock으로 동시성과 일관성을 동시에 잡는 방법을 알아보세요. 읽기-쓰기 시나리오에 최적화된 Redisson ReadWriteLock의 동작 원리와 실제 적용 사례를 깊이 있게 다룹니다. Redis와 Lua 스크립트를 활용한 강력

Spring Boot 환경에서 ExecutorService를 활용해 안정적인 멀티스레딩 구조를 도입하는 방법을 정리했습니다. 자원 낭비 없이 효율적인 스레드 관리와 실무에서의 적용 포인트까지 알려드립니다. URL 링크 설정

단일 서버의 한계를 뛰어넘다! 수백만 동시 접속자도 처리 가능한 고성능 실시간 메시징 서비스를 직접 구축해보세요. ZooKeeper + RabbitMQ + Redis를 활용한 완벽한 분산 아키텍처 설계부터 실제 구현까지, 대기업 수준의 채팅 시스템을 만드는 모든 과정을

Spring Boot 3.x로 마이그레이션하며 겪었던 멀티모듈 프로젝트의 복잡한 의존성 문제를 해결한 경험을 공유합니다. 버전 충돌, Jakarta EE 전환 등 다양한 빌드 오류의 원인을 분석하고, 체계적인 해결 과정을 담았습니다. 이 글을 통해 여러분의 개발 트러블

DDD는 복잡한 비즈니스 규칙을 코드에 녹여내고, 도메인 전문가와 개발자의 공통 언어로 소통을 촉진하는 핵심 설계 철학입니다. 복잡도를 줄이고 유연성을 높이는 실제 적용 기준과 실전 팁을 지금 확인해보세요!

"비밀번호 없는 시대"가 코앞입니다! Google, Apple이 미는 차세대 인증 표준 **Passkeys(WebAuthn)**를 Spring Security에 우아하고 빠르게 적용하는 방법을 소개합니다. 복잡한 설정 없이, 더 안전하고 편리한 생체 인증 로그인을 구현

밀번호 없이 안전하게! Spring Security와 WebAuthn4J로 Passkeys 인증 시스템을 구축하는 방법을 공개합니다. FIDO2 표준 기반의 등록/인증 로직부터 Challenge-Response, Sign Counter 검증까지, 실무에서 바로 적용 가

Windows 데스크탑에서 Spring Security 패스키를 사용할 때 발생하는 두 가지 핵심 문제를 해결하는 가이드입니다. 얼굴/지문 인식 장치 없이 패스키를 쓰는 PIN 등록 방법과, 로컬 개발 환경에서 패스키 충돌이 발생했을 때 이를 깔끔하

Spring Boot에서 JPA 엔티티 클래스가 메인 애플리케이션 패키지 외부에 있을 때 발생하는 인식 문제를 해결하는 방법을 알아봅니다. @EntityScan 어노테이션을 사용하여 엔티티가 위치한 정확한 패키지 경로를 지정하고 데이터베이스 연동을 성공적으로 설정하는

스프링 부트 4.0과 함께 출시된 스프링 시큐리티 7.0의 핵심 변경 사항을 총정리했습니다. 람다 DSL 강제화, 설정 모듈화, MFA 워크플로우 지원 등 달라진 보안 설정 방식과 실무 마이그레이션 체크리스트를 확인하세요. JDK 25 기반의 성능 최적화 팁까지 담았습