Spring Boot
-
Spring Boot 3.x에서 @Async와 버추얼 스레드 조합하기Server/Spring Boot 2026. 1. 9. 15:57
기존 @Async는 플랫폼 스레드 풀을 사용한다. 동시 요청이 많아지면 스레드 고갈 문제가 발생하고, 풀 사이즈를 늘리면 메모리 부담이 커진다. Java 21의 버추얼 스레드를 @Async와 조합하면 이 문제를 해결할 수 있다.이 글에서는 설정 방법부터 실무 적용 시 주의점까지 정리한다.배경 지식@Async 기본 동작@Async를 붙이면 해당 메서드는 별도 스레드에서 실행된다. 기본적으로 SimpleAsyncTaskExecutor를 사용하며, 보통은 ThreadPoolTaskExecutor로 커스터마이징해서 쓴다.버추얼 스레드 특징경량 스레드 (수십만 개 생성 가능)I/O 블로킹 시 자동으로 캐리어 스레드 반환JDK 21부터 정식 지원버추얼 스레드 원리에 대한 자세한 내용은 이전 글을 참고하자.설정 방법..
-
🏦 Spring Boot 대용량 트래픽 환경에서의 계좌 API 구현Server/Spring Boot 2026. 1. 5. 16:55
동시성 제어와 락(Lock) 전략을 활용한 안전한 금융 트랜잭션 처리📌 목차개요락(Lock)의 종류와 특징프로젝트 구조Entity 설계Repository 구현Service 구현Controller 구현DTO 클래스예외 처리테스트 코드정리개요금융 서비스에서 가장 중요한 것은 데이터 정합성입니다. 동시에 수천 명의 사용자가 같은 계좌에 접근하더라도 잔액이 절대 틀리면 안 됩니다.문제 상황 예시[시나리오] 잔액: 10,000원Thread A: 5,000원 출금 시도Thread B: 3,000원 출금 시도 (동시에)❌ 잘못된 결과: 둘 다 10,000원에서 차감 → 잔액 5,000원 또는 7,000원✅ 올바른 결과: 순차 처리 → 잔액 2,000원이런 Race Condition을 방지하기 위해 Lock(락) 메..
-
💡 Java Spring에서 자주 사용하는 ObjectMapperServer/Spring Boot 2025. 4. 17. 14:11
Java로 웹 개발을 하다 보면 객체(Object)와 JSON 사이를 변환해야 하는 일이 굉장히 많습니다. 이때 유용하게 쓰이는 라이브러리가 바로 ObjectMapper입니다. 특히 Spring에서는 이 ObjectMapper를 이용해서 직렬화(Serialize)와 역직렬화(Deserialize)를 아주 손쉽게 처리할 수 있죠.이번 포스팅에서는 ObjectMapper의 기본 사용법부터 실무에서 자주 쓰는 옵션들, 그리고 실전 예제까지 깔끔하게 정리해드릴게요!📦 ObjectMapper란?ObjectMapper는 Jackson 라이브러리에서 제공하는 클래스입니다. JSON 데이터를 Java 객체로 변환하거나, Java 객체를 JSON 문자열로 변환할 때 사용합니다.Spring Boot에서는 기본적으로 Ja..
-
[Springboot] 외부 HTTP 호출 Retry와 재처리 전략Server/Spring Boot 2025. 4. 15. 14:28
외부 API를 호출할 때는 항상 실패 가능성을 염두에 두고 안정적인 Retry 정책을 세워야 합니다. 이 글에서는 Spring Boot 환경에서 Resilience4j를 활용한 Retry와 재시도 큐(DB + 스케줄러) 전략을 함께 설명합니다.✅ 1. 어떤 요청에 Retry를 적용해야 할까? Retry 가능한 요청 GET, HEAD, OPTIONS 같은 멱등한 요청 HTTP 5xx 또는 네트워크 예외 (timeout 등) Retry 피해야 할 요청 POST, PUT, DELETE 같은 멱등하지 않은 요청 비즈니스 오류나 중복 처리 위험이 있는 경우 ✅ 2. 어떤 예외/상태코드에 Retry를 걸어야 할까? Retry 권장: Sock..
-
Springboot Timezone(타임존) 에 대해 알아보자!Server/Spring Boot 2025. 4. 15. 00:01
시간은 모든 시스템에서 매우 중요한 요소입니다. 특히 서버와 클라이언트가 서로 다른 시간대를 사용할 경우, 정확한 시간 처리를 위해 타임존 개념과 변환 방법을 제대로 이해하는 것이 중요합니다. 이번 글에서는 KST(한국 표준시)와 UTC(세계 표준시)의 개념 비교부터 Spring Boot에서의 변환 예제까지 전부 정리해보겠습니다.🕒 KST vs UTC 구분 설명 UTC (Coordinated Universal Time) 전 세계 표준 시간. 한국 시간(KST)은 UTC보다 9시간 빠름 KST (Korea Standard Time) 한국 표준 시간 (UTC +09:00) 📌 예시:- UTC 기준: 2025-04-14 06:00:00- KST 기준: 2..