컴퓨팅 리소스에 대한 비용은 SaaS 솔루션의 운영 관점에서 쉽게 체감되는 항목입니다. 즉 줄이고 싶은 항목입니다. 반면 개발팀은 항상 더 좋은 성능을 요구합니다. 성능이 좋은 리소스는 빌드 대기 시간을 줄여 다음 기능을 배포하거나 버그를 수정하는 데 더 많은 시간을 할애할 수 있기 때문입니다.
그렇다면, 초기 비용이 더 비싼 고성능 리소스를 사용하는 것이 개발자 생산성과 비교했을 때 가치있는 선택일까요?
이를 알아보기 위해 강력한 클라우드 기반 컴퓨팅 리소스를 제공하는 새로운 larger hosted runner를 사용하여 2코어부터 64코어까지 각 컴퓨팅 계층에서 대규모 빌드를 실행하는 실험을 진행했습니다. 각 빌드 시간의 비용을 확인한 다음 미국 개발자의 평균 시간당 급여와 비교하여 비즈니스의 실제 운영 비용을 파악하는 것이 이번 실험의 목표입니다.
컴퓨팅 리소스 코어 크기별 빌드 시간 vs 비용 테스트
실험을 위해 Fedora 35 및 Fedora 36용 Linux 커널을 컴파일하는 것을 시나리오로 사용했습니다. 소프트웨어 빌드로서 실행하는데 오랜 시간이 걸리는 시나리오 입니다.
위에서 말씀드린 것처럼 2코어부터 64코어까지 각 컴퓨팅 티어에서 이 프로젝트의 빌드를 시작한 다음, 각 빌드에 걸리는 시간과 GitHub larger hosted runner에 소요되는 비용을 알아볼 것입니다. 마지막으로 빌드 주기 동안 얼마나 많은 시간을 절약할 수 있는지 비교하고 이를 개발자가 생산성을 높이기 위해 얼마나 더 많은 시간을 투자해야 하는지 제곱해서 실제 비즈니스 비용을 알아볼 것입니다.
여기서 가정은 개발자가 빌드가 실행되는 내내 기다리거나 빌드가 실행되는 동안 다른 작업을 하기 위해 업무를 전환을 할 수 있다는 것입니다. 이 두 가지 모두 전반적인 생산성에 영향을 미칩니다(자세한 내용은 아래 참조).
계산을 단순화하기 위해 컴퓨팅 티어당 두 빌드의 평균 런타임을 사용했습니다.
1. 느린 빌드 시간으로 인한 기업의 비용 손실
실험의 첫 번째 시나리오에서는 개발자가 빌드가 실행될 때까지 기다리기만 하고 그 기간 동안 다른 작업을 하지 않는다고 가정해 보겠습니다.(이는 좋은 상황은 아니지만 실제로 일어날 수 있는 일입니다)
그렇다면 이로 인해 기업은 어떤 손해를 볼까요? StackOverflow의 2022 개발자 설문조사에 따르면 미국 내 개발자의 평균 연간 비용은 부가 혜택, 세금 등을 포함하여 연간 약 15만 달러입니다. 이를 시간당으로 환산하면 약 75달러(USD)입니다. 즉, 개발자가 1시간 동안 빌드 실행을 기다리면서 그 시간 동안 아무것도 하지 않는다면, 기업은 여전히 그 개발자의 시간 동안 평균 75달러를 지출하고 있으며, 개발자가 더 많은 코드를 빌드하는 데 집중할 수 있는 시간을 잃고 있는 것입니다. (🐧 :) 우리나라는 2022년 적용 sw기술자 평균 임금 공표 기준으로 응용sw 개발자 시간당 급여는 ₩38,254 입니다. 혹 우리나라 식으로 계산 하실 분이 있다면 이 수치를 이용하시면 됩니다)
이제부터 재미있는 부분은 각 컴퓨팅 성능 계층을 사용하여 빌드를 실행하는 데 드는 런타임과 비용, 그리고 빌드를 기다리는 데 소요되는 개발자의 시간 비용을 계산하는 것입니다. (각 계층에서 각각을 두 번 실행한 다음 결과를 합산하여 평균을 냈습니다)
다음과 같은 결과가 나옵니다:
당연히, 성능이 좋을 수록 빠른 빌드가 이루어집니다. 하지만 빌드를 실행하는 데 걸리는 시간 동안 기업이 평균적으로 개발자에게 지불하는 비용이 얼마나 되는지 알면 놀랄 것입니다.
이를 종합해 보면 더 강력한 하드웨어에 더 많은 비용을 지출해야 하는 매우 설득력 있는 이유를 알 수 있습니다.
이 그래프를 보면 하드웨어 비용은 개발자에게 드는 총 비용(*시간당 급여)보다 훨씬 적으며, 엔지니어링 팀에 더 많은 CPU 성능을 제공하면 빌드가 완료될 때까지 기다리는 대신 소프트웨어 개발에 더 많은 시간을 할애할 수 있다는 것을 알 수 있습니다. 조직 내 팀 규모가 클수록 더 뛰어난 성능의 컴퓨팅 리소스에 투자할 수 있는 이점이 더 커지게 될 것입니다.
2. 컨텍스트(업무) 전환으로 인한 기업의 비용 부담
이제 실험의 시나리오를 바꿔보겠습니다: 개발자가 빌드가 완료되기를 기다리는 동안 멍하니 앉아 있다고 가정하는 대신, 빌드가 실행되는 동안 다른 작업을 시작한다고 가정해 보겠습니다.
이는 컨텍스트 전환의 전형적인 예이며 비용도 발생합니다. 연구에 따르면 컨텍스트 전환은 주의를 산만하게 하고 집중력과 생산성을 저해하는 것으로 나타났습니다. 실제로 캘리포니아 대학교 어바인 캠퍼스의 정보학 교수인 글로리아 마크는 컨텍스트 전환 후 원래 작업으로 돌아가는 데 약 23분이 걸리며, 이는 깊이 관여하는 작업이 많은 개발 작업에만 국한되지 않는다는 사실을 발견했습니다.
컨텍스트 전환 시간을 1시간으로 설정후, 비교를 우선 해보겠습니다.
여기서의 수치는 다른 이야기를 들려줍니다. 즉, 어차피 작업을 전환할 것이라면 빌드 실행 속도는 크게 중요하지 않다는 것입니다. 인건비는 컴퓨팅 리소스보다 훨씬 더 비쌉니다. 즉, 빌드 속도를 높이기 위해 몇 달러를 더 지출하는 것은 장기적으로 볼 때 중요하지 않습니다.
물론 이는 개발자가 컨텍스트 전환 후 다시 정상으로 돌아가는 데 한 시간이 걸린다고 가정한 것입니다. 하지만 위에서 인용한 연구에 따르면 어떤 사람들은 23분 만에 정상으로 돌아갈 수 있다고 합니다(Cornell의 추가 연구에 따르면 10분 정도밖에 걸리지 않는 경우도 있다고 합니다).
이를 고려하여 시간 프레임을 30분과 15분으로 단축해 보겠습니다:
이 데이터를 그래프로 시각화하면 개발자 한 명이 빌드를 기다리거나 작업을 전환하는 데 드는 비용이 다음과 같이 표시됩니다:
개발자의 평균 시간당 요금을 $75라고 가정할 때, 위의 그래프는 개발자가 대기하거나 컨텍스트 전환을 하지 않도록 더 많은 컴퓨팅 성능을 위해 더 많은 비용을 지불하는 것이 거의 항상 합리적이라는 것을 보여줍니다.
가장 비싼 컴퓨팅 옵션(64코어 및 256GB RAM의 경우 시간당 $15)도 개발자 한 명의 시간당 비용의 5분의 1에 불과합니다. 개발자 급여가 증가하면 하드웨어 비용이 감소하거나 작업을 실행하는 데 걸리는 시간이 감소하며, 이러한 반비례 관계는 더 나은 장비를 구입해야 하는 이유를 가리키고 있습니다.
결론
- 더 나은 하드웨어에 더 많은 비용을 지불하는 것이 결국 더 저렴하고 개발자의 불만도 덜합니다.
- 이 경우 빌드 컴퓨팅에 $4~5를 추가로 지출하면 개인 개발자의 경우 빌드당 약 $40, 5명으로 구성된 팀의 경우 빌드당 약 $200를 절약할 수 있으며, 약 1시간의 생산성 손실과 함께 작업 전환에 따른 불편함을 줄일 수 있습니다. 이 정도는 아무것도 아닙니다. 물론 규모에 따라 $4~5의 추가 비용이 빠르게 증가할 수 있지만, 생산성 저하로 인한 비용도 마찬가지입니다.
- 여기서는 GitHub의 larger hosted runners 를 예로 들었지만, 이러한 결과는 자체 호스팅이든 클라우드든 모든 유형의 하드웨어에 적용될 수 있습니다. 즉 더 높은 CPU 성능을 위한 초기 비용은 시간이 지남에 따라 보상받을 수 있습니다.
🐧 오늘 주간SaaS는 느린 빌드 시간 뒤에 숨겨진 비용을 구체적인 데이터를 기반으로 보여주고 있는 GitHub 팀의 블로그,Experiment: The hidden costs of waiting on slow build times 를 소개 했습니다.
SaaS 는 빠른 서비스 릴리스 사이클을 장점으로 가져가는 모델 입니다. 이 장점을 극대화 하기 위해서는 제품 릴리스 과정을 느리게 하는 요소를 제거 하는 것이 중요한 활동이라고 생각 됩니다. 느린 빌드 시간이 제품 릴리스 속도도 느리게 하고 낮은 생산성과 눈에 보이지 않는 비용발생의 원인이 된다면 개선이 필요 합니다. 여러분의 의견은 어떠신가요? 댓글로 남겨주세요!
의견을 남겨주세요