
  <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
      <title>Chaos and Order</title>
      <link>https://www.youngju.dev/blog</link>
      <description>천천히 올바르게. AI Researcher &amp; DevOps Engineer Youngju&#39;s tech blog. GPU/CUDA, LLM, MLOps, Kubernetes AI workloads, distributed training, and data engineering.</description>
      <language>ko</language>
      <managingEditor>fjvbn2003@gmail.com (Youngju Kim)</managingEditor>
      <webMaster>fjvbn2003@gmail.com (Youngju Kim)</webMaster>
      <lastBuildDate>Thu, 16 Jul 2026 00:00:00 GMT</lastBuildDate>
      <atom:link href="https://www.youngju.dev/tags/antithesis/feed.xml" rel="self" type="application/rss+xml"/>
      
  <item>
    <guid>https://www.youngju.dev/blog/2026-07-16-deterministic-simulation-testing-kafka-19880</guid>
    <title>결정론적 시뮬레이션 테스트가 찾은 버그 — KAFKA-19880, 그리고 &quot;버그 0건&quot;을 읽는 법</title>
    <link>https://www.youngju.dev/blog/2026-07-16-deterministic-simulation-testing-kafka-19880</link>
    <description>결정론적 시뮬레이션 테스트(DST)는 클럭, 스레드 인터리빙, 난수처럼 비결정성이 흘러 들어오는 출처를 시뮬레이터 안에 가두어, 재현이 안 되던 heisenbug를 시드 하나로 다시 불러올 수 있게 만드는 기법입니다. 2026년 3월 Aiven은 Kafka의 Diskless Topics 구현체를 Antithesis에 넣고 약 2,200 논리 시간을 돌렸고, 결과는 버그 0건이었습니다. 정작 버그는 대조군에서 나왔습니다 — 검증 삼아 돌린 업스트림 Apache Kafka에서 KAFKA-19880, 즉 멱등 프로듀서를 켜도 프로듀서 에폭의 첫 배치가 순서를 어긴 채 수용될 수 있다는 이슈가 나왔고, 보고자는 그걸 결정론적 유닛 테스트로 축소해 냈습니다. 이 글은 DST가 실제로 무엇을 하는지, Aiven의 셋업과 불변식, 그 버그의 정확한 메커니즘, 그리고 정직한 한계 — 상태 공간 탐색이 멈추는 지점, 외부 의존성을 모킹해야 한다는 제약, 상용 제품이라는 점, 무엇보다 &quot;버그 0건&quot;이 무엇을 증명하고 무엇을 증명하지 않는지 — 를 정리합니다. 덤으로, 그 이슈가 8개월째 Open으로 남아 있는 이유가 왜 도구의 한계가 아니라 사람의 문제인지도 다룹니다.</description>
    <pubDate>Thu, 16 Jul 2026 00:00:00 GMT</pubDate>
    <author>fjvbn2003@gmail.com (Youngju Kim)</author>
    <category>testing</category><category>deterministic-simulation-testing</category><category>distributed-systems</category><category>kafka</category><category>antithesis</category>
  </item>

    </channel>
  </rss>
