24P by xguru 2022-12-12 | favorite | 댓글 9개
  • "빠른 빌드시간이 회사에 중요한 이유" 와 "강력한 클라우드 리소스는 실제로 비싼가?" 를 실험으로 증명하기
  • GitHub Large Runner 2~64코어에서 빌드 시간을 테스트 (Fedora 리눅스 커널)

느린 빌드시간이 회사에 미치는 비용

  • 개발자 평균연봉을 $150K로 잡았을때 시간당 $75
  • 빌드가 1시간 걸릴때 개발자가 다른걸 하지 않는다면 회사는 $75의 비용을 그냥 내게 되는 것
  • 실행 결과 (Fedora 36)
    • 코어(분당 가격) - 총 빌드시간 - 1빌드당 비용 - 개발자 비용(1인)
    • 2코어($0.008/분) - 310분 - $2.48 - $389.98
    • 8코어($0.0032/분) - 92분 - $2.94 - $117.94
    • 16코어($0.064/분) - 55분 - $3.52 - $72.27
    • 32코어($0.128/분) - 35분 - $4.48 - $48.23
    • 64코어($0.256/분) - 27분 - $6.91 - $40.66
  • 개발자가 여럿 일수록 더 강력한 하드웨어에 비용을 쓰는게 효율적 이라는 결론

컨텍스트 스위칭이 회사에 미치는 비용

  • 빌드가 진행되는 동안 개발자가 다른 업무를 한다고 가정해보면
  • 컨텍스트 전환에도 비용이 들게 됨. 연구에 의하면 평균 약 23분이 들어간다고 함
  • 개인적으로는 집중했던 작업에서 다른 작업으로 넘어갈 때 한시간은 들어가는듯 함
  • 실행 결과(30~15분 정도로 계산시)
    • 코어 - 빌드시간 - 1빌드당 비용 - 부분 개발자 비용(1인,30분) - 부분 개발자 비용(1인,15분)
    • 2코어 - 310 - $2.48 - $39.98 - $21.23
    • 16코어 - 55 - $3.52 - $41.02 - $22.23
    • 64코어 - 27 - $6.91 - $44.41 - $25.66
  • 개발자 비용이 시간당 $75라는 가정하에서는 컴퓨터에 비용을 더 들이는게 훨씬 효율적임
    • 가장 비싼 64코어를 사용해도 단일 개발자의 시간당 비용의 5분의 1에 불과함

결론

  • 더 좋은 하드웨어에 비용을 지불하는 것이 실제로 더 저렴하고, 개발자에게 더 좋음(방해요소를 줄임)
  • 위 실험의 경우, 빌드시간에 $4~5 를 더 지불하는 것이 1인 개발자에게는 $40, 5명 팀에게는 $200 이상 절약해주면서, 태스크 스위칭에 드는 한시간도 아껴줌
    • 물론 대규모 회사에서는 빌드당 $4~5를 쓰는 것은 꽤 커질수도 있지만, 매몰되는 생산성 비용 역시 커짐
  • 더 좋은 CPU성능을 위해 돈을 쓰는것은 시간이 지나면서 보상을 받게됨.
    물론 개발자들은 당신에게 감사해 할 것

https://xkcd.com/303/

빌드 시간에 마땅히 할 일이 없어지는 건 세계 공통인가 봅니다.

와 진짜로 궁금했던 내용이에요. 깃허브 블로그도 생각보다 구경할게 많군요. 빌드할때 딴짓하거나 계속 신경이는게 저만 그런게 아닌듯해서 안심(?입니다.

인정. 플러스 노트북 말고 데스크탑 선호.

공감합니다. 저는 딥러닝 연구원이라서 여러 장비들을 동시에 사용하고 있습니다.
평소에 실험을 자주 돌리다보니 모든 리소스를 사용할 때가 많은데,
그러다보면 중간 중간 붕 뜨는 시간이 생기더라고요.
실험 중에 다른 업무 하기도 은근 신경쓰이고요.

평균연봉이 $150k인가요?

PC 혹은 서버의 성능 한계로 인해 가끔 답답한 적이 있었는데, 확실히 빠릿빠릿하게 잘 될 때보다 생산성이 떨어지는 느낌을 받았습니다.

근데 맞는 말이긴 합니다.
예전에 빌드 1시간씩 걸리는 개발을 했었는데...
빌드 돌리면 항상 끝날때 까지 딴짓하게 됩니다 ㅋㅋㅋ
빌드 돌리는 동안 PC가 버벅대기도 하고..
바빠서 다른일 하게 되더라도 빌드진행상황을 한번씩 체크하게 되서 집중이 잘 안되거든요.

좋은 빌드 인스턴스를 사용하라는 GitHub Large Runner 홍보성 글이긴 합니다만..
"개발자에겐 돈이 허용하는 가장 비싼 장비를 사주세요" 라는 The Joel Test 의 #9 항목은 클라우드 세대에도 똑같이 적용됩니다.