Build better software to build software better
We manage the build pipeline that delivers Quip and Slack Canvas’s backend. A year ago, we were chasing exciting ideas to help engineers ship...

요약
We manage the build pipeline that delivers Quip and Slack Canvas’s backend. A year ago, we were chasing exciting ideas to help engineers ship...
Build better software to build software better
원문: Build better software to build software better (Slack Engineering, 2025-11-06)
오늘의 결론
내가 오늘 해결하고 싶은 문제는 "느린 빌드 프로세스가 팀의 생산성을 저해하는 것"이며, 이를 해결하기 위해 Slack 팀이 제안한 "현대적 빌드 도구와 소프트웨어 엔지니어링 원칙을 결합하는 접근법"을 적용하고자 한다.
이 글이 "성능 자랑"이 아닌 이유
이 글은 단순히 성능을 자랑하는 것이 아니라, 빌드 시스템의 효율성을 높이기 위해 어떻게 현대적 도구와 리소스를 활용할 수 있는지를 보여준다.
내가 본 것:
- [빌드 시간 최적화]: Slack 팀은 60분이 걸리던 빌드를 60분 이하로 줄이기 위해 다양한 접근을 시도했다. 이 과정에서 빌드 시간을 줄이기 위한 전략이 필요하다는 점을 다시 한번 깨달았다. 빌드 시간이 긴 경우, 피드백 루프가 느려져 코드 품질을 저하시킬 수 있다.
- [의존성 그래프 모델링]: 빌드 프로세스를 의존성 그래프로 모델링함으로써 각 요소 간의 관계를 명확히 하고, 어떤 파일이 변경될 때 어떤 부분을 재빌드해야 하는지를 직관적으로 이해할 수 있게 되었다. 이는 효율적인 코드 변경 관리로 이어진다.
- [캐싱 전략]: Slack 팀이 제안한 캐싱 전략은 결과를 저장하여 동일한 입력에 대해 다시 계산할 필요를 없애는 것이다. 이는 반복적인 작업을 피하고, 리소스를 절약하는 데 큰 도움이 된다.
내가 가져갈 실행 포인트 3개
(1) [빌드 시간 측정]: [현재 상황 파악]
내가 적용할 첫 번째 포인트는 팀의 현재 빌드 시간을 측정하고 분석하는 것이다. Slack 팀처럼, 빌드 프로세스의 각 단계를 분석하여 병목 현상이 발생하는 지점을 피드백 받아야 한다. 이를 통해 개발 팀이 어떤 부분에서 시간을 낭비하는지를 명확히 파악할 수 있다.
(2) [의존성 그래프 활용]: [효율적인 코드 관리]
의존성 그래프를 활용하여 각 코드 변경 사항이 다른 부분에 미치는 영향을 시각적으로 나타내는 방법을 도입할 것이다. 이를 통해 특정 변경 사항이 어떤 결과를 초래하는지를 쉽게 이해할 수 있으며, 개발자들이 코드 변경을 할 때 보다 신중하게 접근할 수 있도록 돕는다.
(3) [결과 캐싱 도입]: [성능 향상]
결과 캐싱을 도입하여 이미 계산된 결과를 저장하고, 중복 계산을 피하는 전략을 사용할 것이다. 이는 특히 반복적으로 호출되는 함수에 대해 유용하며, 전체 시스템의 성능을 크게 향상시킬 수 있을 것이다.
내가 설계할 기준
이 기술/접근법으로 보내기 좋은 일
- CI/CD 파이프라인에서의 빌드 최적화
- 대규모 프로젝트에서의 코드 변경 관리
- 자주 변경되는 모듈의 성능 향상
이 기술/접근법이 맞지 않는 경우
- 단일 파일로 이루어진 소규모 프로젝트
- 빌드가 간단해 최적화가 필요 없는 경우
실패를 줄이는 운영 체크리스트
- 빌드 시간 측정을 소홀히 하지 말 것
- 의존성 관계를 명확히 하지 않은 상태에서 작업하지 말 것
- 캐싱 전략을 도입하지 않고 반복 계산을 하지 말 것
- 팀원 간의 커뮤니케이션을 소홀히 하지 말 것
- 빌드 환경을 일관성 있게 유지하지 말 것
이번 주에 할 1가지
- 대상: 팀의 현재 빌드 시간을 측정
- 측정: 각 빌드 단계별 소요 시간을 기록하여 분석
- 성공 기준: 다음 주 회의에서 각 단계의 빌드 시간을 공유하고, 개선이 필요한 부분을 도출해 내는 것
마무리
이번 글을 통해 느낀 것은 빌드 시스템의 효율성을 높이는 것이 전체 소프트웨어 개발 과정에서 얼마나 중요한지를 다시 한 번 깨달았다는 것이다. Timeware는 이러한 문제 해결 과정을 통해 안정적인 운영과 실행 기준을 마련하고, 고객들에게 보다 나은 서비스를 제공할 수 있는 길을 찾고자 한다.
FAQ
Q. 빌드 최적화의 가장 중요한 요소는 무엇인가요?
빌드 최적화에서 가장 중요한 요소는 정확한 시간 측정과 분석입니다. 이를 통해 병목 현상을 찾아내고 최적화할 수 있습니다.
Q. 실무 적용 시 가장 많이 막히는 부분은 무엇인가요?
의존성 관계를 정확히 파악하는 것이 가장 어려운데, 이를 위해 팀 내에서의 충분한 커뮤니케이션이 필요합니다.
Q. Timeware는 이것을 어떻게 활용하나요?
Timeware는 빌드 파이프라인의 효율성을 높이기 위해 각 단계에서의 시간 측정과 분석을 통해 지속적으로 프로세스를 개선하고 있습니다.
Q. 이 흐름은 앞으로 어떻게 전개될까요?
앞으로는 빌드 도구의 발전과 더불어 더욱 효율적인 빌드 시스템이 등장할 것이며, 이를 통해 개발자들의 생산성이 크게 향상될 것입니다.