<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Jaden.log</title><description>공부한 개념부터 직접 부딪혀 본 문제까지, 개발하며 알게 된 것들을 기록하는 개발 블로그</description><link>https://jaden-log.jhg7856.workers.dev/</link><language>ko</language><item><title>DNS 동작 원리 — 파드에서 이름 하나에 질의가 8번 나간 이유</title><link>https://jaden-log.jhg7856.workers.dev/32/</link><guid isPermaLink="true">https://jaden-log.jhg7856.workers.dev/32/</guid><description>코드에서 http.Get을 부르면, 요청이 나가기 전에 이름을 IP 주소로 바꾸는 단계를 먼저 거친다. 이 일을 하는 게 DNS다. 받은 질의를 한 줄씩 찍는 작은 DNS 서버를 띄워 세어 보니, 쿠버네티스 파드와 같은 설정에서는 이름 하나에 질의가 8번 나가 있었다.</description><pubDate>Thu, 22 Oct 2026 11:00:00 GMT</pubDate><category>CS</category><category>기본기</category><category>DNS</category><category>resolv.conf</category><category>ndots</category><category>CoreDNS</category><category>TTL</category></item><item><title>Kubernetes On-Premise ErrImagePull — 이미지가 있는데 pull한다</title><link>https://jaden-log.jhg7856.workers.dev/31/</link><guid isPermaLink="true">https://jaden-log.jhg7856.workers.dev/31/</guid><description>고객사에 설치한 서비스가 뜨지 않는다는 연락이 오면, 파드 상태는 대부분 ErrImagePull이었고 가끔 ImagePullBackOff였다. 처음에는 이게 잘 이해되지 않았다.</description><pubDate>Wed, 21 Oct 2026 02:22:00 GMT</pubDate><category>Infra</category><category>Kubernetes</category><category>ErrImagePull</category><category>ImagePullBackOff</category><category>imagePullPolicy</category><category>containerd</category><category>온프레미스</category></item><item><title>Kubernetes requests·limits — OOMKilled·Evicted는 누가 죽였나</title><link>https://jaden-log.jhg7856.workers.dev/30/</link><guid isPermaLink="true">https://jaden-log.jhg7856.workers.dev/30/</guid><description>GOMEMLIMIT 글을 쓰면서 컨테이너 메모리 한도 얘기를 여러 번 했는데, 정작 그 한도를 정하는 쿠버네티스 쪽은 requests는 최소, limits는 최대 정도로만 알고 있었다.</description><pubDate>Mon, 19 Oct 2026 01:25:20 GMT</pubDate><category>Infra</category><category>Kubernetes</category><category>requests</category><category>limits</category><category>OOMKilled</category><category>Evicted</category><category>cgroup</category></item><item><title>AI 이력서·채용 공고 찾기 — Claude Code·Codex 스킬 jobhunt</title><link>https://jaden-log.jhg7856.workers.dev/29/</link><guid isPermaLink="true">https://jaden-log.jhg7856.workers.dev/29/</guid><description>이직을 준비하면서 매주 같은 일을 반복했다. 채용 사이트를 돌며 공고를 찾고, 하나씩 읽어 보며 나와 맞는지 따지고, 지원할 곳이 생기면 이력서를 고쳤다. 이걸 AI 에이전트에게 맡기면 금방 끝날 줄 알았는데, 막상 해 보니 제일 오래 고민한 건 AI에게 어디까지 맡겨야 하나였다.</description><pubDate>Thu, 08 Oct 2026 06:19:07 GMT</pubDate><category>AI</category><category>AI 도구 활용</category><category>Claude Code</category><category>Codex</category><category>AGENTS.md</category><category>LLM</category><category>이력서</category></item><item><title>Go 고루틴 누수와 pprof — 채널·뮤텍스, 그리고 종료 경로</title><link>https://jaden-log.jhg7856.workers.dev/25/</link><guid isPermaLink="true">https://jaden-log.jhg7856.workers.dev/25/</guid><description>고루틴을 만들기는 쉽다. 어려운 건 누가 데이터를 바꾸고, 누가 일을 끝내고, 언제 함수가 반환해도 되는지 정하는 일이었다. 채널을 잘못 쓰면 고루틴이 영원히 갇히는데, GC는 갇힌 고루틴을 치워 주지 않는다.</description><pubDate>Tue, 06 Oct 2026 02:21:59 GMT</pubDate><category>Go</category><category>개념 정리</category><category>고루틴</category><category>고루틴 누수</category><category>pprof</category><category>채널</category><category>뮤텍스</category></item><item><title>Go sync.Pool·버퍼 재사용 — Put 이후엔 Bytes()도 남의 것이다</title><link>https://jaden-log.jhg7856.workers.dev/24/</link><guid isPermaLink="true">https://jaden-log.jhg7856.workers.dev/24/</guid><description>앞 글에서 GOGC와 GOMEMLIMIT을 바꾸는 동안 할당 누계 256MiB는 그대로였다. 이 숫자를 줄이는 방법 중 하나가 짧게 쓰고 버리는 버퍼를 sync.Pool로 다시 쓰는 것이다.</description><pubDate>Tue, 29 Sep 2026 04:12:53 GMT</pubDate><category>Go</category><category>개념 정리</category><category>sync.Pool</category><category>bytes.Buffer</category><category>GC</category><category>메모리 할당</category></item><item><title>LLM 프롬프트·RAG·파인튜닝 선택 기준 — 가중치냐 입력이냐</title><link>https://jaden-log.jhg7856.workers.dev/23/</link><guid isPermaLink="true">https://jaden-log.jhg7856.workers.dev/23/</guid><description>요즘은 코드를 짤 때도, 글을 정리할 때도 하루의 상당 부분을 AI와 함께 보낸다. 그런데 정작 이 모델이 어떻게 만들어졌고, 내가 보낸 문장을 어떤 순서로 계산해서 답을 내는지는 설명하지 못했다.</description><pubDate>Thu, 24 Sep 2026 06:58:27 GMT</pubDate><category>AI</category><category>AI 단상</category><category>LLM</category><category>RAG</category><category>파인튜닝</category><category>어텐션</category><category>KV cache</category></item><item><title>Go GOMEMLIMIT·GOGC — 힙 800MB인데 OOMKilled가 나는 이유</title><link>https://jaden-log.jhg7856.workers.dev/22/</link><guid isPermaLink="true">https://jaden-log.jhg7856.workers.dev/22/</guid><description>컨테이너 limit이 1GB인데 힙 800MB에서 OOMKilled가 났다. GC가 있는 언어인데 왜 메모리가 넘쳤을까. GC는 살아 있는 힙의 비율로 돌고, 컨테이너는 절대값으로 프로세스를 죽인다.</description><pubDate>Mon, 21 Sep 2026 00:46:51 GMT</pubDate><category>Go</category><category>개념 정리</category><category>GOMEMLIMIT</category><category>GOGC</category><category>GC</category><category>escape analysis</category><category>OOMKilled</category></item><item><title>Go GMP·GOMAXPROCS — 컨테이너 CPU limit과 고루틴</title><link>https://jaden-log.jhg7856.workers.dev/21/</link><guid isPermaLink="true">https://jaden-log.jhg7856.workers.dev/21/</guid><description>go를 붙이면 함수가 동시에 진행된다. 그렇다면 고루틴을 10만 개 만들면 스레드도 10만 개가 생길까. GOMAXPROCS를 1로 두면 한 번에 한 작업만 처리할까.</description><pubDate>Fri, 18 Sep 2026 01:08:16 GMT</pubDate><category>Go</category><category>개념 정리</category><category>GOMAXPROCS</category><category>고루틴</category><category>스케줄러</category><category>cgroup</category></item><item><title>Go 구조체 복사 — 얕은 복사로 맵이 함께 바뀌는 이유</title><link>https://jaden-log.jhg7856.workers.dev/20/</link><guid isPermaLink="true">https://jaden-log.jhg7856.workers.dev/20/</guid><description>인터페이스, 슬라이스, defer, 임베딩, context — 다섯 편을 쓰고 돌아보니 함정이 대부분 두 개의 축에서 나오고 있었다. 하나는 &quot;모든 것은 복사된다&quot;, 다른 하나는 &quot;클래스 없이 객체지향을 한다&quot;.</description><pubDate>Mon, 14 Sep 2026 00:37:56 GMT</pubDate><category>Go</category><category>개념 정리</category><category>값 복사</category><category>얕은 복사</category><category>순수 함수</category><category>벤치마크</category></item><item><title>Go ResponseHeaderTimeout — 1시간 타임아웃이 30초에 끊긴 이유</title><link>https://jaden-log.jhg7856.workers.dev/19/</link><guid isPermaLink="true">https://jaden-log.jhg7856.workers.dev/19/</guid><description>context.WithTimeout으로 1시간을 걸면 그 요청은 1시간까지 기다린다고 생각했다. 그런데 30초에 죽었다. context는 끝까지 갔다. 다만 그게 유일한 타이머가 아니었다. 그리고 타이머를 고치고 나니, 진짜 문제는 따로 있었다.</description><pubDate>Mon, 07 Sep 2026 05:01:51 GMT</pubDate><category>Go</category><category>실전 · 트러블슈팅</category><category>HTTP 클라이언트</category><category>타임아웃</category><category>context</category><category>gRPC</category></item><item><title>CockroachDB 인덱스 — 걸었는데 20만 행을 다 읽은 이유</title><link>https://jaden-log.jhg7856.workers.dev/18/</link><guid isPermaLink="true">https://jaden-log.jhg7856.workers.dev/18/</guid><description>내부 테스트에서 클러스터 리소스 목록 조회가 느려서 인덱스를 걸었다. 실행시간이 233ms에서 104ms로 줄어서 처음엔 해결된 줄 알았다. 그런데 EXPLAIN ANALYZE에서 읽은 행 수를 보니 205,000에서 200,025로 거의 그대로였다. 숫자가 이상했다.</description><pubDate>Fri, 28 Aug 2026 07:57:03 GMT</pubDate><category>Database</category><category>실전 · 트러블슈팅</category><category>CockroachDB</category><category>인덱스</category><category>실행계획</category><category>EXPLAIN ANALYZE</category></item><item><title>AI를 쓸수록 커지던 회의감에 대해</title><link>https://jaden-log.jhg7856.workers.dev/17/</link><guid isPermaLink="true">https://jaden-log.jhg7856.workers.dev/17/</guid><description>좋아서 쓰는 도구인데, 쓰면 쓸수록 회의감이 커졌다. 그 감정이 어디서 오는지는 한 인터뷰를 보고 나서야 조금 알게 됐다.</description><pubDate>Tue, 25 Aug 2026 14:28:21 GMT</pubDate><category>AI</category><category>AI 단상</category><category>AI</category><category>에세이</category><category>동기부여</category><category>개발자 성장</category></item><item><title>Go context 완전 정리 — 취소 전파, 시간 예산, 그리고 4가지 함정</title><link>https://jaden-log.jhg7856.workers.dev/15/</link><guid isPermaLink="true">https://jaden-log.jhg7856.workers.dev/15/</guid><description>ctx를 첫 인자로 받아서 넘기는 것까지는 하고 있었다. 그런데 취소하면 고루틴이 정말 멈추는지는 확인해 본 적이 없었다. 면접에서 그 질문에 말이 막힌 뒤 context를 처음부터 다시 봤다.</description><pubDate>Tue, 18 Aug 2026 00:44:45 GMT</pubDate><category>Go</category><category>개념 정리</category><category>context</category><category>취소 전파</category><category>타임아웃</category><category>고루틴</category></item><item><title>호출 300번을 1번으로 — 최적화가 실패 모드를 바꾼다는 걸 배운 과정</title><link>https://jaden-log.jhg7856.workers.dev/16/</link><guid isPermaLink="true">https://jaden-log.jhg7856.workers.dev/16/</guid><description>검증 단계가 타임아웃으로 죽었다. 30분 만에 &quot;N+1이니까 배치로 묶자&quot;는 답이 나왔고, 그건 절반만 맞았다. 최종 설계에 도착하기까지 두 번 방향을 틀어야 했는데, 남은 게 코드보다 그 과정이라서 정리해둔다.</description><pubDate>Fri, 14 Aug 2026 00:30:19 GMT</pubDate><category>Go</category><category>실전 · 트러블슈팅</category><category>성능 최적화</category><category>N+1</category><category>트레이드오프</category><category>설계 회고</category></item><item><title>Go에는 왜 상속이 없을까 — 임베딩·인터페이스로 객체지향 다시 짜기</title><link>https://jaden-log.jhg7856.workers.dev/14/</link><guid isPermaLink="true">https://jaden-log.jhg7856.workers.dev/14/</guid><description>Go에는 클래스도 상속도 없다. 그런데 객체지향이 아니라고 하기도 어렵다. &quot;Go는 객체지향 언어인가&quot;에 대한 공식 FAQ의 답이 &quot;Yes and no&quot;인 이유를, 상속을 뺀 자리에 무엇을 넣었는지 따라가며 정리했다.</description><pubDate>Thu, 13 Aug 2026 04:32:33 GMT</pubDate><category>Go</category><category>개념 정리</category><category>임베딩</category><category>객체지향</category><category>인터페이스</category><category>제네릭</category></item><item><title>Go defer·error·클로저 완전 정리 — LIFO, 에러 래핑, 루프 변수 함정</title><link>https://jaden-log.jhg7856.workers.dev/13/</link><guid isPermaLink="true">https://jaden-log.jhg7856.workers.dev/13/</guid><description>Go는 예외를 뺐고, 그 자리를 defer와 값으로서의 error로 채웠다. 셋 다 문법은 금방 배우는데 함정은 몇 년째 나온다. 각각이 정확히 언제 무엇을 붙잡는지를 기준으로 다시 정리했다.</description><pubDate>Wed, 12 Aug 2026 06:15:15 GMT</pubDate><category>Go</category><category>개념 정리</category><category>defer</category><category>에러 처리</category><category>클로저</category><category>panic</category></item><item><title>Go append가 원본을 바꾸는 이유 — 슬라이스 · map · string 내부 구조</title><link>https://jaden-log.jhg7856.workers.dev/12/</link><guid isPermaLink="true">https://jaden-log.jhg7856.workers.dev/12/</guid><description>Go에서 자주 만나는 버그는 들고 있다고 생각한 것과 실제로 들고 있는 것이 다를 때 생긴다. 슬라이스는 데이터가 아니라 창이고, map은 주소를 보장하지 않고, string은 문자 배열이 아니다. 세 자료구조의 레이아웃을 하나씩 열어 본다.</description><pubDate>Tue, 11 Aug 2026 04:48:04 GMT</pubDate><category>Go</category><category>개념 정리</category><category>슬라이스</category><category>map</category><category>string</category><category>Go 런타임</category></item><item><title>Go 인터페이스 nil 함정 — err != nil이 참이 되는 이유</title><link>https://jaden-log.jhg7856.workers.dev/11/</link><guid isPermaLink="true">https://jaden-log.jhg7856.workers.dev/11/</guid><description>nil 포인터를 반환했는데 err != nil이 참이 되는 이유는 인터페이스 값이 타입과 데이터 두 칸으로 되어 있기 때문이다. 두 칸 구조에서 메서드셋, 인터페이스를 둘 위치, 동적 디스패치 비용까지 따라간다.</description><pubDate>Tue, 11 Aug 2026 04:35:40 GMT</pubDate><category>Go</category><category>개념 정리</category><category>인터페이스</category><category>nil</category><category>메서드셋</category><category>Go 런타임</category></item><item><title>정규화·반정규화와 ORM vs 프로시저 — DB 설계 정리 (DB 총정리 3/4)</title><link>https://jaden-log.jhg7856.workers.dev/10/</link><guid isPermaLink="true">https://jaden-log.jhg7856.workers.dev/10/</guid><description>DB 총정리 셋째 편, 설계 이야기. 중복이 만드는 이상 현상과 1·2·3정규형, 측정한 병목에만 쓰는 반정규화, 그리고 비즈니스 로직을 ORM에 둘지 Stored Procedure에 둘지.</description><pubDate>Mon, 03 Aug 2026 01:55:51 GMT</pubDate><category>Database</category><category>개념 정리</category><category>정규화</category><category>반정규화</category><category>ORM</category><category>스키마 설계</category></item><item><title>ACID, 격리 수준, Redo/Undo — DB 트랜잭션 정리 (DB 총정리 2/4)</title><link>https://jaden-log.jhg7856.workers.dev/9/</link><guid isPermaLink="true">https://jaden-log.jhg7856.workers.dev/9/</guid><description>DB 총정리 둘째 편. ACID는 트랜잭션의 약속이고, 격리 수준은 그중 격리성을 성능과 맞바꾸는 다이얼이며, Redo/Undo는 장애가 나도 원자성과 지속성을 지키는 장치다.</description><pubDate>Mon, 27 Jul 2026 08:27:59 GMT</pubDate><category>Database</category><category>개념 정리</category><category>트랜잭션</category><category>격리 수준</category><category>MVCC</category><category>WAL</category></item><item><title>정적 타입·컴파일 언어가 런타임 성능에 미치는 영향 (Go 기준 정리)</title><link>https://jaden-log.jhg7856.workers.dev/8/</link><guid isPermaLink="true">https://jaden-log.jhg7856.workers.dev/8/</guid><description>컴파일 언어와 정적 타입이 런타임에 어떤 이득으로 바뀌는지 Go를 기준으로 따라갔다. 메모리 레이아웃, 컴파일러 최적화, escape analysis, GC와 스케줄러까지 도구로 직접 확인한다.</description><pubDate>Thu, 23 Jul 2026 07:04:10 GMT</pubDate><category>Go</category><category>개념 정리</category><category>Go 런타임</category><category>GC</category><category>성능</category></item><item><title>낙관적 락 vs 비관적 락, 데드락 — DB 동시성 제어 정리 (DB 총정리 1/4)</title><link>https://jaden-log.jhg7856.workers.dev/7/</link><guid isPermaLink="true">https://jaden-log.jhg7856.workers.dev/7/</guid><description>DB 총정리 첫 편. 데드락과 라이브락, 비관적 락과 낙관적 락을 고르는 기준, 그리고 WHERE가 빠진 UPDATE 한 줄로 전체 유저가 로그아웃된 사고.</description><pubDate>Wed, 22 Jul 2026 00:28:14 GMT</pubDate><category>Database</category><category>개념 정리</category><category>동시성</category><category>락</category><category>MySQL</category></item><item><title>팀 CLAUDE.md를 git으로 통합·공유하는 방법 (Claude Code)</title><link>https://jaden-log.jhg7856.workers.dev/6/</link><guid isPermaLink="true">https://jaden-log.jhg7856.workers.dev/6/</guid><description>사람마다 local CLAUDE.md가 달라서 같은 코드베이스에서도 Claude가 다르게 움직였다. 팀 파일을 git 공유 하나로 합치고, 줄이고, PR마다 키우는 문서로 바꾼 과정.</description><pubDate>Sat, 18 Jul 2026 14:08:23 GMT</pubDate><category>AI</category><category>AI 도구 활용</category><category>Claude Code</category><category>CLAUDE.md</category></item><item><title>Claude Code 토큰 절약 도구 5종 — RTK·context-mode 비교</title><link>https://jaden-log.jhg7856.workers.dev/5/</link><guid isPermaLink="true">https://jaden-log.jhg7856.workers.dev/5/</guid><description>Superpowers, agentmemory, context-mode, codebase-memory-mcp, RTK를 직접 깔아 보고 역할별로 나눴다. 토큰을 줄이는 건 context-mode와 RTK이고, 둘은 줄이는 층이 다르다.</description><pubDate>Sat, 18 Jul 2026 14:07:44 GMT</pubDate><category>AI</category><category>AI 도구 활용</category><category>Claude Code</category><category>RTK</category><category>context-mode</category></item><item><title>Claude Code PreToolUse 훅이 등록 안 되는 문제 해결 (RTK)</title><link>https://jaden-log.jhg7856.workers.dev/4/</link><guid isPermaLink="true">https://jaden-log.jhg7856.workers.dev/4/</guid><description>rtk init -g가 성공 메시지를 냈는데도 PreToolUse 훅이 등록되지 않았다. 원인은 settings.json에 남은 쉼표 하나였다.</description><pubDate>Sat, 18 Jul 2026 14:03:09 GMT</pubDate><category>AI</category><category>AI 도구 활용</category><category>Claude Code</category><category>RTK</category></item><item><title>여러 Pod(replica) 환경 동시성 제어: 단일 SQL CAS 패턴</title><link>https://jaden-log.jhg7856.workers.dev/3/</link><guid isPermaLink="true">https://jaden-log.jhg7856.workers.dev/3/</guid><description>pod를 여러 개 띄우자 같은 job을 두 pod가 동시에 완료 처리하는 경합이 생겼다. 분산락 없이 조건부 UPDATE 한 문장, CAS 패턴으로 막은 과정.</description><pubDate>Sat, 18 Jul 2026 13:59:00 GMT</pubDate><category>Database</category><category>실전 · 트러블슈팅</category><category>동시성</category><category>CAS</category></item><item><title>Claude Fable 모델 특징 정리 — 단순히 더 똑똑한 게 아니다</title><link>https://jaden-log.jhg7856.workers.dev/1/</link><guid isPermaLink="true">https://jaden-log.jhg7856.workers.dev/1/</guid><description>Thariq Shihipar의 Field Guide to Fable 발표를 보고 정리했다. Fable에서 결과를 가르는 건 모델의 지능보다, 내가 모르는 것을 시작 전에 얼마나 드러내느냐였다.</description><pubDate>Tue, 14 Jul 2026 08:31:44 GMT</pubDate><category>AI</category><category>AI 단상</category><category>Claude</category><category>프롬프트</category></item></channel></rss>