데이터 파이프라인의 배치 사이즈를 튜닝해 처리 속도를 개선한 경험
졸업 프로젝트에서 클라우드 데이터 처리 파이프라인을 만들었는데, 처음에는 레코드를 1건씩 처리하도록 짰더니 10만 건 처리에 40분이 걸렸습니다. 완전히 실용성이 없는 속도였습니다.
원인 분석해보니 DB 연결을 매 레코드마다 맺고 끊는 것이 문제였습니다. 배치 사이즈를 1,000건으로 묶어서 처리하도록 바꾸고 트랜잭션을 묶으니 같은 10만 건이 4분으로 줄었습니다. 처음에는 배치 크기를 너무 크게 잡아서 메모리 에러가 났고, 500~1,000 구간이 이 환경에서 최적이라는 것을 실험으로 알아냈습니다.
그 경험에서 배운 것은 파이프라인 성능은 알고리즘보다 I/O 패턴이 먼저라는 것입니다. 코드 로직보다 데이터를 어떻게 읽고 쓰는지가 10배 이상 차이를 만들 수 있다는 것을 직접 보았기에 설계할 때 항상 I/O 흐름을 먼저 생각하게 되었습니다. 그 실패가 성능 설계를 배우는 계기가 되었습니다.