Tag
#spring
27개의 글이 있습니다.
-
모듈러 모놀리스와 Spring Modulith 학습 기록
Spring Boot 기반 WAS에서 모듈러 모놀리스를 선택하는 이유와 Spring Modulith로 모듈 경계, public API/internal 규칙, 이벤트, 검증 테스트를 어떻게 다룰지 정리합니다.
-
Spring Boot 4 Java WAS 서버 학습 정리
Java 기반 Greenfield WAS 서버를 Spring Boot 4로 구축할 때 우선 확인할 starter 구성, MVC API 설계, HTTP Service Clients, API Versioning, 관측성, RestTestClient, Jackson 3, Virtual Threads를 정리합니다.
-
PeekCart 학습 기록 19: "조건부 UPDATE 한 방"이면 분산 락이 필요 없을까
단일 행 재고 차감에서 조건부 UPDATE, Redis 분산 락, JPA 낙관적 락의 적정 구간을 비교하고 PeekCart에 남길 ADR 판단 기준을 정리합니다.
-
PeekCart 학습 기록 13: "내 머신에선 되는데"를 닫는다 - CI와 Docker 이미지 빌드
PeekCart의 GitHub Actions CI, Testcontainers 통합 테스트, 멀티스테이지 Docker 이미지 빌드, GHCR 발행 흐름과 검증 공백을 정리합니다.
-
PeekCart 학습 기록 12: Pod이 셋이면 스케줄러도 셋이 돈다 - ShedLock
여러 Pod에서 중복 실행되는 Spring 스케줄러를 ShedLock과 MySQL 락 레코드로 조율하는 원리, 설정, SQL, 한계를 정리합니다.
-
PeekCart 학습 기록 11: 같은 이벤트가 두 번 왔다 - Consumer 멱등성과 DLQ
Kafka의 at-least-once 전달에서 생기는 중복을 Consumer 멱등성으로 흡수하고, 재시도해도 처리할 수 없는 메시지를 DLQ로 격리하는 흐름을 정리합니다.
-
PeekCart 학습 기록 10: DB는 커밋됐는데 이벤트가 사라진다면 - Kafka와 Transactional Outbox
Kafka 발행과 DB 저장 사이의 dual-write 문제를 Transactional Outbox로 줄이고, polling, at-least-once, Debezium CDC의 트레이드오프를 정리합니다.
-
PeekCart 학습 기록 9: 오버셀링을 두 겹으로 막기 - 분산 락과 낙관적 락
Redis 분산 락과 JPA 낙관적 락을 함께 사용해 재고 오버셀링을 막는 이유, 트랜잭션 경계의 한계와 테스트 범위를 정리합니다.
-
PeekCart 학습 기록 8: 상품 조회를 캐시 뒤로 옮기기
PeekCart의 상품 목록과 상세 조회를 Redis Cache Aside로 옮기며 재고 제외, self-invocation 회피, 목록 캐시 무효화, CachedPage 래퍼를 정리합니다.
-
PeekCart 학습 기록 7: 15분 후에 돌아와서 주문을 취소하는 일
PeekCart의 결제 타임아웃 스케줄러, REQUIRES_NEW 건별 트랜잭션, 상태 경합 격리, ShedLock 도입 이유를 정리합니다.
-
PeekCart 학습 기록 6: 알림 발송이 실패해도 주문은 살아남아야 한다
PeekCart Notification 도메인의 Kafka Consumer 전환, SlackPort 위치, 멱등성, Slack Webhook 실패 격리, Phase 4 MSA 분리를 정리합니다.
-
PeekCart 학습 기록 5: 결제 승인이 실패하면 누가 주문을 취소하는가
PeekCart의 Payment 생성, Toss 결제 승인 실패 처리, Outbox 이벤트, 웹훅 멱등성, Order 상태 연결을 정리합니다.
-
PeekCart 학습 기록 4: 주문 생성 트랜잭션 안에서는 어떤 일이 일어나는가
PeekCart의 장바구니부터 주문 생성, 가격 스냅샷, 주문 상태 전이, 취소와 보상 트랜잭션 흐름을 정리합니다.
-
PeekCart 학습 기록 3: 상품과 재고는 왜 따로 관리해야 할까
PeekCart의 Product와 Inventory 분리를 재고 동시성, 낙관적 락, Redis 분산 락, 캐싱 전략 관점에서 정리합니다.
-
PeekCart 학습 기록 2: 인증, 인가의 갈림길에서 무엇을 선택할 수 있을까
PeekCart의 인증과 인가 설계를 비밀번호 저장, JWT, 토큰 회수, 재발급 전략, 서비스 간 신뢰 관점에서 정리합니다.
-
PeekCart 학습 기록 1: 4-Layered + DDD 구조를 어떻게 읽어야 할까
PeekCart의 단일 Spring Boot 모놀리스 구조를 4-Layered Architecture, DDD, Hexagonal, Clean Architecture와 비교하며 읽어봅니다.
-
Spring Boot에서 MDC 로깅 필터는 어떻게 동작할까?
트래픽이 많은 Spring Boot 서버에서 요청별 로그를 추적하기 위해 MDC와 Servlet Filter가 어떻게 연결되는지 정리합니다.
-
Spring AI + pgvector RAG 검색 품질 개선기: 쿼리 리라이팅부터 Re-ranking까지
이전 글에서 MessageChatMemoryAdvisor를 적용해 멀티 턴 대화까지 구현했다. 그런데 실제로 다양한 질문을 던져보니, 검색 자체가 잘 안 되는 문제가 있었다. 이 글에서는 기존 QuestionAnswerAdvisor를 커스텀 Advisor 체인으로 교체하여
-
Spring AI가 제공하는 주요 기능 정리
Spring AI는 Java/Spring 생태계에서 AI 애플리케이션을 구축하기 위한 프레임워크다. LLM 호출, 문서 임베딩, 벡터 검색, 대화 이력 관리 등 AI 앱에 필요한 기능들을 Spring 스타일의 추상화로 제공한다. 이 글에서는 Spring AI가 제공하는 주요
-
Spring AI로 멀티 턴 대화(Conversation Memory) 구현하기
이 프로젝트는 Spring AI를 학습하기 위한 프로젝트다. 고객센터 같은 상황에서 문서 기반으로 질문에 답변하면서, 동시에 이전 대화 맥락도 이어갈 수 있는 챗봇을 만드는 것이 목표다. 즉, 멀티 턴 대화와 RAG 기능을 모두 갖춘 프로그램을 완성하는 것이다. 이전 글에서
-
SpringBoot 애플리케이션에 .env 통합하는 방법 세가지
안녕하세요. 저는 요즘에 합세랑 솦커톤, 과제로 인해서 프로젝트를 새로 세팅해야 하는 상황이 많았는데요! 특히 환경 설정을 하면서 환경 변수를 분리하게 되는데 저는 분리하는 방법이 다양하다고만 알고 있지 어떤 장단점이 있는지 모르고 그냥 익숙한 방법을 쓰고 있었습니다.
-
Spring WebSocket + Google STT 구조 설계: 실시간 음성 인식 피드백 시스템 만들기 (1)
실시간 음성 인식 서비스를 만든다고 했을 때, 가장 먼저 떠오르는 건 "STT API"일지도 모른다.하지만 정말 중요한 건 API를 언제 어떻게 호출하고,사용자 음성을 실시간으로 전달하고,그 결과를 사용자에게 다시 어떻게 돌려주는가 하는 데이터 흐름의 구조다. 이 글은 내가
-
Spring WebSocket + Google STT 구조 설계: 실시간 음성 인식 피드백 시스템 만들기 (2)
이전 글 요약:1편에서는 WebSocket 기반 구조 설계, SttSessionContext, SttSessionManager를 통해사용자 세션을 어떻게 분리하고 안전하게 유지할 수 있는지에 대해 다뤘다. 이번 글에서는 **Google Cloud Speech-to-Text
-
Spring Boot SSR 환경에서 JWT 사용의 적절성에 대한 고찰
Spring Boot 기반의 SSR(Server-Side Rendering) 웹 애플리케이션에서 인증 및 인가 기능을 구현할 때, JWT(Json Web Token)를 사용할 것인지, 혹은 세션(Session) 기반 인증을 사용할 것인지에 대한 선택은 매우 중요하다. 최근
-
Spring Boot로 로그인을 구현해보기 1
스프링 공부를 시작한지 어언 1달 지금 나는 그동안 따로 유튜브 강의를 보거나 선배님들의 대면 세션 및 과제를 수행하면서 자신감과 스프링에 대한 애정이 오를대로 오른 상태이다. 그래서 이번에 스프링 프로젝트의 첫 걸음으로 스프링 로그인 기능을 만들어보기로 했다. 그 여정을
-
Spring Boot 프로젝트에 Redis를 도입하며
현재 Spring Boot를 기반으로 웹 애플리케이션을 개발하고 있는 학생으로서, 이번 프로젝트를 진행하면서 Redis를 처음으로 도입하게 되었다. 그간 이름만 익숙했을 뿐, 실제로 사용해 본 경험은 없었기에 Redis가 무엇인지, 왜 필요한지, 그리고 Spring
-
[Spring] MVC와 REST API 차이
MVC와 REST API에 대해 알아보려고 한다. 개념 공통점 1. 역할 분리 (Separation of Concerns) 두 아키텍처 모두 기능별로 역할을 나누어 구조화한다. 2. 클라이언트-서버 구조 MVC든 REST API든 기본적으로 클라이언트-서버 구조이다. 3.