대용량 데이터를 처리하면서 성능 문제를 해결한 경험
졸업 프로젝트에서 수십만 건의 로그 데이터를 분석하는 도구를 만들었는데, 처음에는 전체 데이터를 메모리에 올려서 처리하다 보니 메모리 부족으로 프로세스가 죽는 일이 발생했습니다.
스트리밍 방식으로 데이터를 청크 단위로 읽어서 처리하도록 변경했습니다. 전체를 한 번에 올리지 않고 일정 크기씩 읽고 처리하는 구조였는데, 처음에는 청크 경계에서 데이터가 잘리는 버그가 있었습니다. 줄 단위로 읽는 방식으로 수정하면서 문제를 해결했습니다.
대용량 처리에서 알고리즘보다 데이터를 어떻게 다루는지가 더 크게 성능을 결정한다는 것을 그 경험에서 배웠습니다. 한 번에 모든 데이터를 처리하려는 발상에서 벗어나는 것이 중요했습니다. 그 경험이 대용량 처리를 설계할 때 먼저 데이터 흐름을 그리는 습관을 만들어주었습니다.