비관적 락, 낙관적 락, 분산 락을 다 써보고 나서야 정리했다지난 글 마지막에 커넥션 풀 데드락 얘기를 했다. 한 스레드가 커넥션 두 개를 잡으려다 서로 물려서 멈추는 상황이었다. 그걸 정리하다 보니 다음 질문이 자연스럽게 따라왔다. 애초에 락은 왜 걸고, 어떤 락을 골라야 하는 걸까.마침 내가 한 프로젝트들에 서로 다른 락이 들어가 있었다. 짠팟에서는 중복 챌린지를 막으려고 DB 비관적 락을 걸었고, Keepit에서는 AI 요약이 중복 실행되는 걸 막으려고 Redis 분산 락을 썼다. 당시엔 "이게 맞는 것 같아서" 골랐는데, 왜 그게 맞았는지 설명해보라고 하면 말이 막혔다. 그래서 이번에 제대로 정리했다.락은 왜 필요한가동시성 문제의 본질은 대부분 갱신 손실(Lost Update) 이다.스레드 A: ..
이 글은 유튜브 개발자 유미 영상을 바탕으로 개인적인 정리를 위해 작성한 글입니다.https://www.youtube.com/watch?v=-g6goXtCilM&list=PLJkjrxxiBSFCgcsP_pzuntmqC3AlTMWFx 스프링 AI 란?스프링 AI는 LLM API를 활용한 여러 웹 시스템 (챗봇, 멀티모달, RAG)을 쉽게 구축하도록 도와주는 스프링 기반의 모듈 현재 AI 진영에서는 LangChain/LangGraph와 같은 파이썬 모듈의 편의성으로 자바/스프링 기반의 구현이 줄어들고 있다.이 문제를 해결하기 위해 2024년 스프링은 스프링 AI라는 모듈을 출시하게 된다. AI와 연관된 도구들을 쉽게 통합하도록 하는 프레임워크LLM API 호출챗모델 : 앤트로픽, 애저, OpenAI, ..
커넥션 풀이랑 스레드 풀, 면접 준비하다가 제대로 정리했다면접 스터디에서 이런 질문을 받았다."톰캣 스레드가 200개인데 커넥션 풀이 10개예요. 요청 200개가 동시에 들어오면 어떻게 되나요?" 커넥션 풀이 뭔지, 스레드 풀이 뭔지는 당연히 안다고 생각했는데 이 질문 앞에서 멈칫했다. 둘을 각각은 알고 있었지만 같이 놓고 생각해본 적이 없었다. 그래서 이참에 제대로 정리했다.풀이 왜 필요한가부터커넥션 풀과 스레드 풀은 이름만 비슷한 게 아니라 해결하려는 문제가 똑같았다.만드는 비용이 비싼 자원을 매번 새로 만들지 말고, 미리 만들어두고 빌려 쓰자는 것이다.DB 커넥션 하나를 새로 만들 때 실제로 뭐가 일어나는지 보면 왜 비싼지 감이 온다.TCP 3-way 핸드셰이크를 하고, DB 프로토콜 핸드셰이크를 ..