블로그
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
Kubernetes v1.36의 Workload/PodGroup API — 갱 스케줄링이 kube-scheduler 안으로 들어오는 중
AI 학습·배치 워크로드의 갱 스케줄링은 지금까지 Volcano나 Kueue 같은 외부 스케줄러의 몫이었지만, Kubernetes가 이 기능을 코어로 가져오기 시작했습니다. v1.35가 Workload API와 첫 갱 스케줄링 구현을 알파로 내놨고, 2026년 4월 22일 나온 v1.36은 구조를 갈아엎어 Workload를 정적 템플릿으로, 새 PodGroup을 런타임 객체로 분리하고 그룹
2026-07-16 · 34 분 읽기 #kubernetes#scheduling#gang-scheduling#distributed-training#draeBPF Verifier는 멈춘 곳만 알려준다 — 거부 235건을 재현해 측정한 진단 격차
eBPF를 써 본 사람이라면 누구나 겪는 일이 있습니다. Verifier가 프로그램을 거부하는데, 에러 메시지는 아무 잘못도 없어 보이는 줄을 가리킵니다. 2026년 7월에 나온 논문 하나가 이 답답함을 처음으로 수치화했습니다. 저자들은 Stack Overflow, GitHub 이슈, 수정 커밋, 커널 셀프테스트에서 후보 936건을 모아 커널 6.15.11 + clang 18이라는 고정 툴체
2026-07-16 · 33 분 읽기 #ebpf#linux#kernel#debugging#developer-experienceKafka Diskless Topics(KIP-1150) — 크로스 AZ 비용과 맞바꾸는 지연 시간, 그리고 아직 배송되지 않은 기능
2026년 3월 2일, Apache Kafka 커뮤니티가 KIP-1150 Diskless Topics를 승인했습니다. 브로커 디스크 대신 오브젝트 스토리지를 데이터의 원본으로 삼아, 하이퍼스케일러에서 Kafka 비용의 큰 축인 크로스 AZ 복제 트래픽을 없애겠다는 제안입니다. 다만 승인된 것은 방향이지 구현이 아니고 — KIP 본문이 "이 KIP는 승인되더라도 코드 변경을 요구하지 않는다"고
2026-07-16 · 32 분 읽기 #kafka#streaming#distributed-systems#cloud-nativeFerrocene의 인증된 core — 컴파일러는 ASIL D인데 라이브러리는 왜 ASIL B에서 멈추나
"ASIL D 인증받은 Rust 컴파일러"라는 문장은 사실이지만, 거기서 흔히 유추하는 결론은 사실이 아닙니다. Ferrocene은 컴파일러를 ISO 26262 ASIL D / TCL 3 도구로 자격심사받았고, 이건 "이 도구를 쓰면서 ASIL D 소프트웨어를 개발해도 된다"는 뜻이지 "결과물이 ASIL D"라는 뜻이 아닙니다. 정작 당신 코드가 매 줄 호출하는 core 라이브러리는 별개의
2026-07-16 · 44 분 읽기 #embedded#rust#ferrocene#safety#systemsambient로 옮기면 EnvoyFilter는 조용히 무시된다 — Istio 1.30 TrafficExtension이 메운 구멍과 남은 구멍
ambient 모드 이전을 막는 진짜 장애물은 리소스가 아니라 확장성입니다. Istio 공식 마이그레이션 문서는 EnvoyFilter가 waypoint에서 지원되지 않으며 이전 후 "조용히 무시된다"고, 대안이 없으면 "마이그레이션 블로커"라고 직접 적어 두었습니다. 2026년 5월 18일 나온 Istio 1.30은 이 구멍을 겨냥해 TrafficExtension API를 냈습니다 — Was
2026-07-16 · 26 분 읽기 #kubernetes#istio#service-mesh#envoy#ambient-meshElixir 1.20의 점진 타입 시스템 — 어노테이션 없이 "검증된 버그"를 찾는다는 것의 실제
2026년 6월 3일 나온 Elixir v1.20은 2022년에 시작한 집합론적 타입 시스템의 첫 번째 마일스톤을 끝냈습니다. 이제 모든 Elixir 프로그램이 타입 어노테이션 한 줄 없이 점진적으로 타입 체크되고, 컴파일러가 가드·함수 본문·절 사이에서 타입을 추론해 "실행되면 반드시 런타임에 터지는" 위반과 죽은 코드를 찾아냅니다. 핵심은 dynamic() 타입인데, 다른 언어의 any(
2026-07-16 · 31 분 읽기 #elixir#type-system#beam#compiler#static-analysis.NET 11 runtime-async — async 상태 머신을 컴파일러에서 런타임으로 옮기는 중간 보고
C의 async/await는 2012년부터 줄곧 컴파일러 기능이었습니다. Roslyn이 메서드 본문을 상태 머신 클래스로 재작성하고, 런타임은 그게 async인지도 모른 채 실행했죠. .NET 11의 runtime-async는 그 재작성을 런타임 안으로 옮깁니다 — 메서드에 MethodImplOptions.Async 플래그가 붙고, 중단과 재개는 JIT과 VM이 직접 처리합니다. 눈에 보이는
2026-07-16 · 33 분 읽기 #dotnet#csharp#async#jit#performance결정론적 시뮬레이션 테스트가 찾은 버그 — KAFKA-19880, 그리고 "버그 0건"을 읽는 법
결정론적 시뮬레이션 테스트(DST)는 클럭, 스레드 인터리빙, 난수처럼 비결정성이 흘러 들어오는 출처를 시뮬레이터 안에 가두어, 재현이 안 되던 heisenbug를 시드 하나로 다시 불러올 수 있게 만드는 기법입니다. 2026년 3월 Aiven은 Kafka의 Diskless Topics 구현체를 Antithesis에 넣고 약 2,200 논리 시간을 돌렸고, 결과는 버그 0건이었습니다. 정작
2026-07-16 · 32 분 읽기 #testing#deterministic-simulation-testing#distributed-systems#kafka#antithesisgit history — Git이 rebase 옆에 놓은 실험적 history 재작성 명령어
Git 2.54(2026-04-20)에 git history라는 새 명령어가 실험적으로 들어왔고, 2.55(2026-06-29)에서 fixup 서브커맨드가 추가됐습니다. reword/split/fixup 세 가지 흔한 history 재작성 작업을 인터랙티브 rebase 없이 명령 한 줄로 처리하고, 대상 커밋의 자손 브랜치들을 원자적 ref 트랜잭션으로 한꺼번에 갱신합니다. 메인테이너 Pat
2026-07-16 · 28 분 읽기 #git#version-control#jujutsu#rebase벡터 인덱스의 기본값이 HNSW에서 디스크로 바뀐 이유 — Elasticsearch bbq_disk의 트레이드오프
Elasticsearch 9.4(2026-05-05)부터 float 벡터의 기본 인덱스 타입이 bbqdisk, 즉 디스크 기반 IVF로 바뀌었습니다. 1년 사이에 기본값이 int8hnsw에서 bbqhnsw로, 다시 그래프가 아닌 디스크 인덱스로 옮겨간 것인데, 이 이동은 벡터 검색의 진짜 비용이 계산이 아니라 RAM에 있다는 판단을 담고 있습니다. 이 글은 HNSW의 메모리 절벽이 벤더 벤치
2026-07-16 · 41 분 읽기 #vector-database#elasticsearch#ann-index#quantization#hnswClang 22의 MSVC ABI 변경 — vector deleting destructor와 아직 22.1.x에 남아 있는 delete[] 힙 손상
Clang 22.1.0(2026-02-24)은 MSVC ABI를 타깃할 때의 소멸자 코드 생성을 두 군데 바꿨습니다. 하나는 ::delete 처리를 MSVC와 맞춘 것이고, 다른 하나는 2014년에 열린 이슈를 11년 7개월 만에 닫은 vector deleting destructor 지원입니다. 둘 다 진짜 버그를 고치는 변경이지만, vftable 슬롯에 들어가는 심볼이 바뀌는 ABI 변경이
2026-07-16 · 29 분 읽기 #llvm#clang#cpp#compilerDuckDB에 클라이언트-서버 프로토콜이 생겼다 — Quack이 바꾸는 것과 바꾸지 않는 것
2026년 5월 12일 DuckDB 팀이 Quack을 발표했습니다. HTTP 위에 얹은 클라이언트-서버 프로토콜로, DuckDB 인스턴스 두 개가 서로 클라이언트와 서버가 되어 같은 데이터베이스를 여러 프로세스에서 동시에 읽고 쓸 수 있게 합니다. 7년 동안 "인프로세스"를 정체성으로 내세운 프로젝트가 스스로 서버를 붙인 셈이라, 무엇이 바뀌었는지보다 무엇이 안 바뀌었는지가 더 중요합니다.
2026-07-16 · 31 분 읽기 #database#duckdb#olap#analytics#data-engineeringC++26 계약(Contracts) — 114 대 12로 통과된 기능, 그리고 GCC 16.1이라는 유일한 구현
2026년 3월 28일 WG21은 C++26의 기술 작업을 끝냈습니다. 표결은 만장일치가 아니었고(찬성 114, 반대 12, 기권 3), 비만장일치의 주된 이유는 계약(contracts)이었습니다. 계약은 pre·post·contractassert로 사전조건과 사후조건을 언어 차원에서 적는 기능이지만, 그 검사가 실제로 실행될지는 소스 코드가 아니라 빌드 설정이 정합니다 — 표준 문구 그대로
2026-07-16 · 31 분 읽기 #cpp#cpp26#contracts#wg21#gccTypeScript 7이 GA됐다 — 8~12배는 진짜지만, 오늘 못 옮기는 사람들이 있다
2026년 7월 8일, TypeScript 7.0이 GA됐습니다. Go로 다시 쓴 네이티브 포트가 더 이상 별도 바이너리가 아니라 그냥 tsc입니다 — npm install -D typescript을 하면 그게 들어옵니다. Microsoft가 보고한 전체 빌드 속도 향상은 8~12배이고, VS Code 코드베이스 기준 125.7초에서 10.6초로 떨어졌습니다. 하지만 헤드라인이 가리는 두 가
2026-07-16 · 32 분 읽기 #typescript#compiler#tooling#build-systems#compile-timescontainerd 2.3의 EROFS 네이티브 레이어 — 언팩을 없애는 대신 무엇을 냈나
2026년 4월 30일 나온 containerd 2.3은 레지스트리에서 EROFS 파일시스템 이미지를 그대로 받아 마운트하는 경로를 열었습니다. tar를 풀지 않으니 언팩 단계가 통째로 사라지고, 그 자리에 blob 복사 한 번만 남습니다. 다만 이건 다들 기다리는 지연 로딩(lazy pull)이 아닙니다 — containerd 자신의 seekable-erofs PR이 "청크 테이블은 쓰지만
2026-07-16 · 32 분 읽기 #container#containerd#oci#storage#linuxDebian이 재현 불가능한 패키지의 testing 이행을 막기 시작했다 — 게이트가 실제로 막는 것과 막지 않는 것
2026년 5월 9일, Debian 릴리스 팀은 이행 소프트웨어 britney를 재현 가능성 검사와 연결했습니다. 다음 날 메일링 리스트에 올라온 문장은 "Debian must ship reproducible packages"였지만, 실제로 막히는 것은 재현되지 않는 신규 패키지와 재현되던 패키지의 회귀 두 가지뿐입니다. 이 글은 그 게이트를 뜯어봅니다 — buildd가 남긴 .buildin
2026-07-16 · 37 분 읽기 #devops#reproducible-builds#debian#supply-chain#ci-cdROV가 막아낸 것, ASPA가 아직 못 막는 것 — 2026년 6월 텔레그램 하이재킹과 라우팅 보안의 다음 층
2026년 6월 16일 인도 Rcom(AS18101)이 텔레그램 프리픽스를 하이재킹했고, Kentik 측정으로 그 경로는 자사 BGP 소스의 1.6%에만 도달했습니다. RPKI ROV가 실제로 작동한 사례입니다. 하지만 이건 origin을 위조하지 않은 서투른 하이재킹이었기 때문이고, ROV의 구조적 천장은 route leak — origin이 정당한 채로 잘못된 경로를 타는 경우 — 을 전
2026-07-16 · 39 분 읽기 #network#bgp#rpki#routing#securityRedis 8.8의 Array 타입 — 스트림 이후 처음 늘어난 코어 자료구조, 그리고 Valkey에는 없는 것
2026년 5월, Redis 8.8과 Valkey 9.1이 엿새 간격으로 나왔습니다. Redis 8.8에는 antirez가 직접 만든 새 코어 자료구조 Array가 들어갔습니다 — 인덱스 자체가 의미를 갖는 데이터(센서의 분 단위 슬롯, 예약 시스템의 칸 번호, 파일의 줄 번호)를 위한 희소 인덱스 컨테이너로, 명령어 18개와 슬라이스 기반 희소 인코딩, 서버 사이드 집계와 정규식 grep까
2026-07-16 · 27 분 읽기 #redis#valkey#data-structures#performance#open-source5노드 Raft에서 3노드가 한꺼번에 죽은 이유 — Coinbase 2026년 5월 7일 장애 읽기
2026년 5월 7일 저녁 AWS us-east-1의 가용 영역 use1-az4에서 데이터 홀 한 곳의 냉각 장치가 동시에 고장 났고, Coinbase는 거래와 입출금을 포함한 대부분의 서비스가 약 8시간 중단되는 장애를 겪었습니다. 6월 1일 공개된 Coinbase의 포스트모템은 5노드 Raft 체결 엔진 중 3노드가 동시에 죽어 쿼럼을 잃은 과정과, AWS 관리형 Kafka인 MSK의 컨
2026-07-16 · 35 분 읽기 #distributed-systems#postmortem#consensus#aws#resiliencebcachefs가 이레이저 코딩의 experimental 딱지를 뗀 이야기 — 그리고 그게 무슨 뜻인지
2025년 9월 29일 리누스 토발즈는 커밋 하나로 커널에서 bcachefs 코드 117,483줄을 지웠고, bcachefs는 ZFS처럼 DKMS 모듈로 배포되는 파일시스템이 됐습니다. 드라마는 그것으로 끝났고, 2026년의 진짜 뉴스는 따로 있습니다 — bcachefs의 이레이저 코딩(RAID5/6에 해당하는 기능)이 experimental 딱지를 뗐습니다. 그런데 이 사실을 옮긴 문장 하
2026-07-16 · 29 분 읽기 #linux#kernel#filesystem#bcachefs#storage