시스템 동작과 장애 원리를 애니메이션으로 설명하는 사례가 공개됐다. 실제 Postgres 16과 etcd의 테스트 환경에서 수집한 추적 데이터를 바탕으로, 부하 급증 뒤 메타안정성 장애가 어떻게 이어지는지 보여준다.

시스템 이해를 돕는 방법으로 애니메이션을 활용할 수 있다. 예를 들어 Raft 클러스터에서는 구성원 중 하나의 저장 계층이 fsync() 성공 여부를 거짓으로 보고하면 쓰기가 유실될 수 있다.

Stability Sim을 만든 목적은 엔지니어가 메타안정성 장애를 더 잘 이해하도록 돕는 것이었다. 추상적인 사례에서는 재시도와 큐가 메타안정성을 쉽게 촉발하는 모습을 보여주지만, 이런 현상이 실제 시스템에서도 일어나는지 의문을 제기하는 사람들도 있었다.

Postgres 사례는 실제 MicroVM에서 실행한 Postgres 16의 추적 데이터를 바탕으로 한다. 부하가 급증하기 전에는 작업 집합이 페이지 캐시에 있어 초당 20개 쿼리를 무리 없이 처리한다. 하지만 부하 급증 뒤에는 쿼리 실행에 쓰이는 메모리가 크게 늘어난다. 각 쿼리는 12MB를 사용하며, 메모리 사용이 늘면서 쿼리는 페이지 캐시 대신 디스크에서 데이터를 읽어 더 느리게 실행된다. 이 사례는 분산되지 않은 단순한 시스템에서도 이런 현상이 나타날 수 있음을 보여준다.

etcd 사례에서는 쓰기 부하 급증이 메타안정 상태를 촉발한다. 과부하에 걸린 피어가 사용할 수 없는 것처럼 보이면 애플리케이션 수준의 재전송이 폭증한다. 널리 쓰이는 품질 좋은 소프트웨어에서도 운영 경험만으로 이런 문제가 드러나지 않을 수 있다는 설명이다.

또 다른 etcd 사례에서는 읽기 부하가 초당 500회에서 1,000회로 늘어난다. 읽기 급증으로 가비지 컬렉션(GC)에 쓰는 시간이 길어지고 평균 객체 수명이 늘면서 읽기 작업에 쓸 수 있는 CPU가 줄어든다. 이는 서로를 강화하는 순환을 만들어 시스템이 외부 개입 없이는 회복하지 못한다. GC가 없는 런타임에서도 할당기 작업량이 늘어 비슷한 일이 생길 수 있다고 보지만, 아직 재현하지는 못했다고 밝혔다.

애니메이션은 Kiro와 KiroCrew로 생성했으며, 대부분 Opus 5.5를 사용했다. 애니메이션의 바탕이 된 결과는 실제 테스트 환경에서 추적 데이터를 수집해 얻었다.