블로그
GPU·LLM·MLOps·쿠버네티스, 그리고 마음가짐에 관한 글 · 3672 편
#2026-03 762#culture 283#deep-dive 275#kubernetes 260#career 233#ai 220#llm 216#devops 195#2026-04 158#security 147#observability 118#database 113#communication 108#history 107#architecture 101#productivity 98#performance 93#linux 90#networking 89#finance 87#economy 84#mindset 80#psychology 79#ai-papers 78#food 78#it 78#travel 78#japanese 76#deep-learning 75#english 74#gpu 74#ai-agent 69#business-travel 69#postgresql 66#cs-fundamentals 63#rag 63#systems 63#python 55#learning 54#self-improvement 53
Too many open files 완전 해결 — ulimit을 올려도 안 되는 이유
서버 로그에 accept4 failed (24: Too many open files)가 찍히고 ulimit -n을 올렸는데도 그대로입니다. 이 증상 뒤에는 서로 독립적인 세 가지 한계가 있습니다. 프로세스별 RLIMITNOFILE, 시스템 전역 fs.file-max, 그리고 systemd 서비스의 LimitNOFILE이 셸의 ulimit 설정을 완전히 무시한다는 사실입니다. /proc/PID
2026-07-26 · 22 분 읽기 #linux#systemd#file-descriptor#troubleshooting#containers외로움은 배고픔과 같습니다 — 결핍 신호를 읽는 법
외로움은 혼자 있는 상태가 아니라, 원하는 관계와 실제 관계 사이의 격차입니다. 존 카치오포는 이 감각을 배고픔이나 갈증과 같은 결핍 신호로 보았습니다. 아프도록 설계되었기 때문에 우리를 다시 사람 쪽으로 밀어내는 것이죠. 하버드 성인 발달 연구가 80년 넘게 추적해 발견한 것과 그 연구의 한계, 낯선 사람과의 짧은 대화가 기분을 올린다는 통근 열차 실험, 그리고 어른의 우정이 구조적으로 어
2026-07-26 · 23 분 읽기 #mindset#healing#loneliness#relationships#connectionRAG가 엉뚱한 답을 할 때 — 검색 실패와 생성 실패를 가르는 디버깅 절차
RAG가 틀린 답을 내면 대부분 프롬프트부터 고치는데, 실제 원인의 다수는 검색 단계에 있습니다. 정답 청크를 손으로 넣어 보는 한 번의 실험으로 검색 실패와 생성 실패를 가르는 절차부터 시작해, 청킹이 왜 가장 흔한 범인인지, 임베딩 유사도가 의미 유사도와 갈라지는 지점과 BM25 혼합이 자주 이기는 이유, 재순위화가 값을 하는 조건, 청크에 문서 제목과 메타데이터를 붙였을 때의 효과를 정
2026-07-26 · 22 분 읽기 #llm#rag#retrieval#chunking#evaluationKubernetes Pod Pending 상태 해결 — 스케줄러가 남긴 거절 사유 읽는 법
파드가 Pending에서 몇 분째 넘어가지 않을 때, 스케줄러는 이미 거절 사유를 이벤트에 남겨 두었습니다. 0/5 nodes are available로 시작하는 그 문장을 정확히 해독하는 법부터 시작해 아홉 갈래 원인을 하나씩 배제합니다. 리소스 부족은 실제 사용량이 아니라 requests 총합으로 판정된다는 점, taint와 톨러레이션, 노드 셀렉터와 어피니티 불일치, PVC 미바인딩과
2026-07-26 · 20 분 읽기 #kubernetes#scheduler#pending#troubleshooting#autoscalingKubernetes ImagePullBackOff와 ErrImagePull 완전 해부 — 원인 문자열 하나로 끝내기
파드가 ErrImagePull을 거쳐 ImagePullBackOff에 머무는 상황을 원인별로 분해합니다. 두 상태가 같은 사건의 다른 단계라는 점, 그리고 kubectl describe의 Events 마지막 한 줄에 이미 정답이 적혀 있다는 점에서 출발합니다. 태그 오타, 프라이빗 레지스트리 인증 실패, 서비스어카운트에 시크릿이 안 붙은 경우, Docker Hub 익명 풀 레이트 리밋, 프록
2026-07-26 · 19 분 읽기 #kubernetes#imagepullbackoff#container-registry#troubleshooting#containerdKubernetes 프로브 3종 제대로 쓰기 — liveness, readiness, startup의 정확한 경계
아무 문제 없는 파드가 주기적으로 재시작하거나, 배포 직후에만 502가 쏟아지거나, 느리게 뜨는 애플리케이션이 영원히 Ready에 도달하지 못하는 세 가지 사고는 모두 프로브 설계에서 나옵니다. 세 프로브가 각각 어떤 질문에 답하고 실패 시 무엇을 하는지 구분한 뒤, initialDelaySeconds부터 failureThreshold까지 파라미터가 실제로 몇 초 뒤에 컨테이너를 죽이는지 계
2026-07-26 · 27 분 읽기 #kubernetes#liveness-probe#readiness-probe#graceful-shutdown#sre나이 든다는 것에 대하여 — 통념과 데이터가 어긋나는 지점들
여러 나라의 자료에서 삶의 만족도가 가장 낮은 나이는 마흔일곱 언저리이고, 그 뒤로는 대체로 올라갑니다. 다만 이 U자 곡선에는 만만치 않은 반론도 있습니다. 유동성 지능과 결정성 지능이 갈라지는 방식, 남은 시간이 짧다고 느낄 때 관계가 정리된다는 카스텐슨의 이론, 노화에 대한 자기 인식과 수명의 상관을 보인 베카 레비의 연구와 그 한계, 창업과 수상 데이터가 말해 주는 늦었다는 감각의 오
2026-07-26 · 22 분 읽기 #mindset#aging#psychology#life#healthLLM 평가를 감으로 하지 않는 법 — 표본 크기, 심사자 편향, CI 회귀 테스트
프롬프트를 고치고 "좋아진 것 같다"로 배포하는 팀은 조용히 쌓이는 회귀를 볼 방법이 없습니다. 평가를 어서션, 골든 데이터셋, LLM 심사자, 사람 평가의 네 층위로 나눠 각각의 비용과 신뢰도를 정리하고, 심사자 모델의 위치 편향과 길이 선호를 어떻게 상쇄하는지 다룹니다. 예시 20개로 낸 결론의 신뢰구간이 실제로 얼마나 넓은지 계산하고, 짝지은 비교가 필요 표본을 몇 분의 일로 줄이는지
2026-07-26 · 19 분 읽기 #llm#evaluation#llm-as-judge#statistics#regression-testing뉴턴은 왜 세계를 다시 썼나 — 사과, 프린키피아, 그리고 예측이라는 시험대
사과는 뉴턴의 머리에 떨어지지 않았습니다. 그 일화의 출처는 1752년 윌리엄 스터클리의 회고록이고, 여든셋의 뉴턴이 직접 들려준 이야기입니다. 페스트로 케임브리지가 닫힌 1665년의 기적의 해는 사실 20년에 걸친 작업을 한 해로 압축한 서사이며, 프린키피아(1687)는 핼리가 사비로 출판비를 댄 책이었습니다. 라이프니츠와의 미적분 우선권 전쟁, 케인스가 1936년 경매에서 사들인 연금술
2026-07-26 · 26 분 읽기 #humanities#science#history-of-science#newton#physics용량이 남았는데 No space left on device — inode 고갈, 삭제된 열린 파일, 예약 블록
df는 여유 공간을 보여 주는데 파일 하나를 만들지 못하고 ENOSPC가 납니다. 원인은 거의 항상 다섯 가지 중 하나입니다. inode 고갈, 삭제됐지만 프로세스가 열고 있는 파일, ext4의 예약 블록, 다른 파일시스템이 겹쳐 마운트되어 보이지 않는 파일, 그리고 컨테이너의 오버레이 상한입니다. 각각을 df -i, lsof +L1, tune2fs, 바인드 마운트로 어떻게 확정하고 무엇으로
2026-07-26 · 25 분 읽기 #linux#filesystem#ext4#troubleshooting#storage재즈는 어떻게 태어났나 — 콩고 스퀘어에서 Kind of Blue까지
재즈의 첫 번째 전설 버디 볼든은 녹음을 한 장도 남기지 않았고, 1917년 세계 최초의 재즈 음반을 만든 것은 백인 밴드였습니다. 프랑스와 스페인이 번갈아 지배한 뉴올리언스, 일요일마다 아프리카의 북을 칠 수 있었던 콩고 스퀘어, 유럽 음악을 정식으로 배운 크레올 연주자들, 그리고 이들을 흑인 밴드로 밀어 넣은 1894년의 인종 법령까지 — 블루스와 래그타임이라는 두 뿌리에서 시작해 루이
2026-07-26 · 28 분 읽기 #humanities#music#jazz#music-history#culture후추 한 줌이 세계를 연결했다 — 향신료 무역과 세계화의 원형
408년 로마를 포위한 알라리크가 요구한 몸값 목록에는 금과 은과 함께 후추 1360킬로그램이 있었습니다. 지금은 마트에서 몇천 원이면 사는 그 열매가 왜 그토록 비쌌는지, 그리고 상한 고기 냄새를 감추려고 썼다는 흔한 설명이 왜 근거가 약한지부터 짚습니다. 1498년 바스쿠 다 가마의 캘리컷 도착, 1602년 세계 최초의 주식회사가 된 네덜란드 동인도회사와 1621년 반다 제도 학살, 16
2026-07-26 · 29 분 읽기 #humanities#history#trade#globalization#colonialism돈은 물물교환에서 태어나지 않았다 — 리디아의 주화에서 신용화폐까지, 화폐의 세계사
경제학 교과서의 첫 장은 물물교환의 불편에서 화폐가 태어났다고 가르치지만, 인류학자들은 그런 사회를 아직 한 곳도 찾지 못했습니다. 기원전 7세기 리디아의 일렉트럼 주화, 11세기 송나라 사천에서 태어난 세계 최초의 지폐 교자, 포토시 은이 일으킨 16세기 가격 혁명, 1971년 8월 닉슨이 금 창구를 닫은 밤까지 화폐가 실제로 걸어온 길을 따라갑니다. 마지막에는 태평양 야프 섬의 거대한 돌
2026-07-26 · 29 분 읽기 #humanities#history#money#economics#financeOOM Killer가 프로세스를 죽였을 때 — dmesg 로그 해독부터 cgroup OOM 구분까지
프로세스가 아무 로그도 남기지 않고 사라졌고 종료 코드는 137입니다. 커널 OOM Killer가 남긴 dmesg 리포트를 한 줄씩 읽는 법, badness 점수가 계산되는 방식과 가장 큰 프로세스가 아닌 다른 프로세스가 죽는 이유, 시스템 전역 OOM과 cgroup v2 memory.max에 의한 컨테이너 OOM을 로그만 보고 구분하는 법을 정리합니다. overcommitmemory 0/1
2026-07-26 · 27 분 읽기 #linux#memory#oom#cgroups#kubernetesGit 내부 구조로 이해하는 명령어 — 객체, 참조, 인덱스로 다시 읽는 reset과 rebase
Git 명령을 외우면 매번 검색하게 되지만, 데이터 모델을 알면 명령의 동작이 추론됩니다. 이 글은 blob과 tree와 commit과 tag라는 네 가지 객체, 같은 내용이 언제나 같은 해시를 갖는 콘텐츠 주소 지정, 브랜치가 41바이트짜리 파일에 불과하다는 사실, 그리고 인덱스가 실제로 무엇을 담고 있는지를 cat-file과 ls-files로 직접 열어 보며 확인합니다. 이 모델을 알면
2026-07-26 · 20 분 읽기 #git#internals#git-objects#fundamentals#version-controlKubernetes OOMKilled(137) 메모리 문제 해결 — 한도를 올리기 전에 확인할 것들
컨테이너가 Exit Code 137로 죽었는데 애플리케이션 로그에는 아무 예외도 남지 않는 상황을 다룹니다. 137이 128 더하기 9, 즉 SIGKILL이라는 사실만 말해 준다는 점에서 출발해 컨테이너 cgroup 한계에 의한 OOM과 노드 전역 OOM, kubelet 축출을 dmesg 한 줄로 구분하는 법을 정리했습니다. JVM과 Node.js와 파이썬이 컨테이너 한계를 어떻게 오해하는지
2026-07-26 · 23 분 읽기 #kubernetes#oomkilled#memory#jvm#cgroupgit이 느려질 때 — 대형 저장소를 빠르게 만드는 구조적 처방
저장소가 느려지는 이유는 하나가 아닙니다. 커밋 이력이 긴 것, 파일 수가 많은 것, 큰 바이너리가 들어 있는 것은 서로 다른 문제이고 처방도 다릅니다. 이 글은 먼저 원인을 구분하는 측정 명령부터 시작해, 얕은 클론과 부분 클론이 왜 대체재가 아니라 용도가 다른 도구인지, sparse-checkout과 파일 감시가 status를 어떻게 줄이는지, commit-graph가 로그와 병합 기준점
2026-07-26 · 20 분 읽기 #git#performance#monorepo#git-lfs#version-controlgit 되돌리기 — 상황별로 고르는 restore, reset, revert, reflog
되돌리기 명령을 외우면 매번 검색하게 되지만, 무엇을 되돌리려는지 먼저 분류하면 명령은 저절로 결정됩니다. 워킹 디렉터리, 스테이징, 마지막 커밋 메시지, 커밋 자체, 이미 푸시한 커밋, 삭제한 브랜치까지 여섯 가지 상황으로 나누고 각각의 정확한 명령과 위험도를 정리했습니다. reset의 soft와 mixed와 hard가 HEAD, 인덱스, 워킹 트리 중 무엇을 옮기는지 표로 보여 주고, 푸
2026-07-26 · 19 분 읽기 #git#undo#reset#reflog#version-controlKubernetes CrashLoopBackOff 원인별 진단과 해결 — 로그가 비어 있을 때 무엇을 봐야 하나
파드가 CrashLoopBackOff에 빠졌는데 kubectl logs는 아무것도 뱉지 않는 상황을 처음부터 끝까지 다룹니다. BackOff가 원인이 아니라 10초에서 5분까지 늘어나는 재시작 대기 시간이라는 정확한 의미부터, describe의 Last State와 Exit Code를 읽는 순서, 종료 코드 0/1/127/137/139/143이 각각 무엇을 뜻하는지 정리했습니다. 애플리케이션
2026-07-26 · 21 분 읽기 #kubernetes#crashloopbackoff#troubleshooting#kubectl#sre바우하우스, 14년이 100년을 바꾸다 — 사물의 형태를 읽는 법
1919년 바이마르에서 문을 열고 1933년 나치의 압력으로 닫힌 바우하우스는 딱 14년 존재했습니다. 학생 수는 늘 수백 명 규모였고, 건축과는 개교 8년이 지나서야 생겼으며, 가장 많이 팔린 제품은 유명한 강관 의자가 아니라 벽지였습니다. 예비과정과 공방 체계, "형태는 기능을 따른다"가 사실 루이스 설리번의 말이라는 점, 여성 학생들이 직조 공방으로 몰릴 수밖에 없었던 구조, 폐교가 만
2026-07-26 · 28 분 읽기 #humanities#design#architecture#design-history#modernism