본문 바로가기

전체 글117

[AI] 프롬프트 캐싱 - 순서를 정하는 일이 비용을 정한다 캐시는 프롬프트의 접두어를 통째로 해시해 재사용하므로, 앞쪽에 매번 바뀌는 값이 하나만 섞여도 그 뒤가 전부 다시 계산된다. 고정된 것을 앞에 모으고 중단점을 마지막 고정 지점에 두는 배치가 곧 비용 설계다.시스템 프롬프트와 참고 문서를 그대로 두고 질문만 바꿔 가며 여러 번 호출했는데 비용이 줄지 않습니다. 프롬프트 캐싱은 켜 두었고 표시는 요청 맨 끝 블록에 달았으며, 앞부분은 한 글자도 바꾸지 않았습니다.재사용의 단위, 접두어프롬프트 캐싱은 요청의 앞부분을 저장해 두었다가 다음 요청에서 계산을 건너뛰는 장치입니다. 여기서 앞부분은 정해진 순서로 이어 붙인 접두어를 가리킵니다. 도구 정의, 시스템 프롬프트, 메시지 순으로 이어지고, 그중 지정한 지점까지가 한 덩어리로 묶입니다. 캐시가 보관하는 것은 .. 2026. 9. 27.
메시지 큐 - 생산자와 소비자를 떼어놓기 메시지 큐는 생산자와 소비자를 떼어 비동기·버퍼링·낮은 결합도를 얻는다. 큐는 메시지를 한 소비자에게, 토픽은 구독자 모두에게 준다. 적어도 한 번 전달을 택하면 중복이 오므로 소비자가 멱등해야 한다.서비스 A가 B를 직접 호출하면, B가 느리거나 죽었을 때 A도 같이 막힙니다. 사이에 메시지 큐를 두면, A는 메시지를 큐에 넣고 자기 일을 계속하고 B는 형편껏 꺼내 처리합니다. 생산자와 소비자를 떼어놓는 것 — 그게 메시지 큐의 핵심입니다.얻는 것 - 결합도·비동기·버퍼결합도↓ — 생산자는 소비자가 누구인지·살았는지 몰라도 된다.비동기 — 넣고 바로 돌아온다. 처리는 나중에.버퍼링 — 갑자기 몰린 요청을 큐가 받아두고 소비자가 자기 속도로 처리한다(부하 평탄화).두 가지 전달 모양큐는 한 메시지를 하나.. 2026. 9. 26.
[sql] 서브쿼리와 EXISTS - 부정 조건에서만 갈린다 IN·EXISTS·JOIN은 긍정 조건에서 같은 답을 준다. 갈리는 곳은 부정 조건이고, NOT IN은 NULL 하나에 결과가 통째로 빈다.같은 결과를 서브쿼리로도, 조인으로도 쓸 수 있다고 하는데 무엇을 골라야 할지 모르겠습니다. IN과 EXISTS도 비슷해 보입니다. NOT IN으로 "주문 안 한 고객"을 찾았더니 아무것도 안 나왔는데 이유를 모르겠습니다.긍정 조건에서는 다 같다"주문한 적 있는 고객" 을 세 가지로 쓸 수 있습니다. IN 서브쿼리, EXISTS, 그리고 JOIN 뒤 DISTINCT. 실행해 보면 셋 다 3명으로 같습니다.그러니 긍정 조건에서는 읽기 쉬운 것을 고르면 됩니다. 옛날에는 IN 이 느리다는 말이 많았지만, 요즘 옵티마이저는 셋을 비슷한 계획으로 바꿔 실행하는 경우가 많습니.. 2026. 9. 26.
[java/spring] 헬스체크 - liveness 와 readiness 는 다른 질문이다 liveness는 프로세스를 재시작할지, readiness는 트래픽을 보낼지를 정한다. 둘을 같은 검사로 두면 외부 의존이 흔들릴 때 전 인스턴스가 재시작된다.DB가 몇 초 흔들렸을 뿐인데 모든 파드가 재시작됐습니다. 재시작된 파드가 다시 DB에 붙으려다 또 실패하고, 그 사이 정상으로 돌아온 DB에는 아무도 붙어 있지 않았습니다. 헬스체크는 분명히 잘 걸어 뒀습니다.두 질문은 다르다헬스체크라고 뭉뚱그려 부르지만, 컨테이너 오케스트레이터가 애플리케이션에 묻는 질문은 둘입니다. "이 프로세스를 죽이고 다시 띄워야 하나"와 "지금 이 인스턴스에 요청을 보내도 되나"입니다. 앞이 liveness, 뒤가 readiness입니다.조치가 완전히 다릅니다. liveness 실패는 재시작으로 이어지고, readines.. 2026. 9. 26.
[sql] SQL vs NoSQL - 정형·트랜잭션과 유연·확장 관계형(SQL)은 고정 스키마·JOIN·강한 일관성으로 정형·트랜잭션에 강하고, NoSQL은 유연한 스키마·수평 확장으로 대규모·유동 데이터에 강하되 대개 결과적 일관성이다.데이터 저장소를 고를 때 가장 큰 갈림길이 관계형(SQL)이냐 NoSQL이냐입니다. 스키마의 유연성, 일관성, 확장 방식에서 성격이 갈립니다.관계형(SQL)데이터를 표(테이블)의 행으로 저장하고, 미리 정한 스키마를 따릅니다. 테이블 간 관계를 JOIN으로 잇고, 트랜잭션으로 강한 일관성(ACID)을 보장합니다. 정형 데이터와 정확성이 중요한 업무(주문·결제)에 강합니다. MySQL·PostgreSQL이 대표적입니다.NoSQL의 갈래NoSQL은 관계형이 아닌 저장소를 뭉뚱그린 말로, 갈래가 여럿입니다.문서(document) — JSO.. 2026. 9. 26.