
Shopify는 왜 재고 예약을 Redis에서 MySQL로 옮겼을까 - SKIP LOCKED로 다시 설계한 Oversell Protection
Shopify가 2026년 5월 12일 공개한 글을 바탕으로, 재고 예약 시스템의 문제 정의부터 Redis의 한계, MySQL SKIP LOCKED 기반 재설계, connection 병목 발견 과정까지 해설형으로 정리

Shopify가 2026년 5월 12일 공개한 글을 바탕으로, 재고 예약 시스템의 문제 정의부터 Redis의 한계, MySQL SKIP LOCKED 기반 재설계, connection 병목 발견 과정까지 해설형으로 정리

Hash는 유지하고 field마다 TTL은 다르게 두고 싶을 때 왜 늘 애매했는지, Redis 7.4의 HEXPIRE가 왜 반가운 기능인지 정리

Caddy의 자동 HTTPS, Caddyfile, reverse proxy, static file server, Docker 구성, Nginx와 Apache 비교 정리

버그를 발견하고 GitHub Issue를 작성한 뒤 리뷰 피드백을 반영해 PR을 머지하기까지의 과정

EmbeddingModel과 VectorStore의 기초부터 ETL 파이프라인, QuestionAnswerAdvisor, RetrievalAugmentationAdvisor, Query Transformer/Expander까지 모듈러 RAG를 한 흐름으로 정리

ChatClient의 Vision 입력, ImageModel로 이미지 생성, TextToSpeechModel과 TranscriptionModel로 TTS/STT 구성까지, Spring AI에서 멀티모달을 한 흐름으로 묶기

Tool Calling과 MCP가 무엇이 다른지, ToolContext와 MCP RequestContext, Stateful/Stateless 서버, MCP Client/Server 설정값까지 한 흐름으로 정리

Spring AI 시리즈 2편. Advisor 추상화의 의미, 순서 설계, advisor-context, ChatMemory.CONVERSATION_ID 같은 런타임 파라미터, CallAdvisor/BaseAdvisor를 직접 구현해 가드·프롬프트 보강·로깅을 다루는 패턴까지

Spring AI 시리즈 1편. ChatClient의 가장 단순한 호출부터 PromptTemplate, Structured Output Converter, 그리고 기본 연결/모델/재시도 설정값까지

@MockBean, @MockBeans의 deprecation 이유와 @MockitoBean으로의 전환, 그리고 Spring 테스트가 나아가는 방향