비관적 락, 낙관적 락, 분산 락을 다 써보고 나서야 정리했다지난 글 마지막에 커넥션 풀 데드락 얘기를 했다. 한 스레드가 커넥션 두 개를 잡으려다 서로 물려서 멈추는 상황이었다. 그걸 정리하다 보니 다음 질문이 자연스럽게 따라왔다. 애초에 락은 왜 걸고, 어떤 락을 골라야 하는 걸까.마침 내가 한 프로젝트들에 서로 다른 락이 들어가 있었다. 짠팟에서는 중복 챌린지를 막으려고 DB 비관적 락을 걸었고, Keepit에서는 AI 요약이 중복 실행되는 걸 막으려고 Redis 분산 락을 썼다. 당시엔 "이게 맞는 것 같아서" 골랐는데, 왜 그게 맞았는지 설명해보라고 하면 말이 막혔다. 그래서 이번에 제대로 정리했다.락은 왜 필요한가동시성 문제의 본질은 대부분 갱신 손실(Lost Update) 이다.스레드 A: ..
HTTP vs HTTPS 환경에서의 쿠키 보안 설정 Spring Boot로 인증 시스템을 구현하다 보면, 로컬 개발 환경과 배포 환경에서 쿠키 설정을 다르게 해야 하는 상황을 마주하게 됩니다.이번 글에서는 왜 그래야 하는지, 그리고 쿠키 보안의 전반적인 개념을 정리해보겠습니다.1. 문제 상황: 왜 환경마다 쿠키 설정이 다를까?Spring Boot에서 Refresh Token을 쿠키로 관리할 때, 보통 이런 식으로 환경별 설정을 분리합니다.# application-local.yml (로컬 개발)security: cookie: refresh: secure: false same-site: Lax# application-prod.yml (배포)security: cookie: re..
이 글은 유튜브 개발자 유미 영상을 바탕으로 개인적인 정리를 위해 작성한 글입니다.https://www.youtube.com/watch?v=-g6goXtCilM&list=PLJkjrxxiBSFCgcsP_pzuntmqC3AlTMWFx 스프링 AI 란?스프링 AI는 LLM API를 활용한 여러 웹 시스템 (챗봇, 멀티모달, RAG)을 쉽게 구축하도록 도와주는 스프링 기반의 모듈 현재 AI 진영에서는 LangChain/LangGraph와 같은 파이썬 모듈의 편의성으로 자바/스프링 기반의 구현이 줄어들고 있다.이 문제를 해결하기 위해 2024년 스프링은 스프링 AI라는 모듈을 출시하게 된다. AI와 연관된 도구들을 쉽게 통합하도록 하는 프레임워크LLM API 호출챗모델 : 앤트로픽, 애저, OpenAI, ..