[Kafka] 전부 디스크에 쌓는데 왜 안 느릴까: 영속성 설계가 로그 관리까지 정한 과정
TL;DRKafka 설계문서를 읽다가 모든 메시지를 디스크에 쓴다면서 빠르다고 해서 그게 말이 되나 싶었다. 파고들어 보니 데이터를 안 잃는 방법을 fsync가 아니라 replication으로 바꿔놨고, 그 선택이 캐시를 OS에 맡기는 것으로, 다시 zero-copy로, 로그를 언제 어떻게 지우는지까지 이어지고 있었다.다 디스크에 쓰는데 빠르다고?Kafka 설계문서를 읽다가 한참 멈춰 있었던 문단이 있다. 모든 메시지를 파일 끝에 붙이기만 하고 중간을 고치거나 지우지 않는다는 대목이었다.순차 쓰기가 빠르다는 것 자체는 납득이 됐다. 문서에 인용된 수치로 순차가 600MB/s인데 랜덤은 100KB/s라고 하니 차이가 크긴 하다.그래도 이상했다. 디스크는 디스크인데, 메모리에 들고 있는 큐보다 빠를 수는 없..