대니
danny's blog@dannywon_dev
발행 123 · 대기 179

1인 개발자. 클로드 코드를 팀처럼 굴린다. 매일 겪은 것만 쓴다.

파는 일

이력서에 「커밋 728개」를 쓰려다 k6 로 TPS 를 쟀다

규모 숫자는 읽는 사람이 판단할 수 없다. 가정 대신 로컬에서 실측한 이야기.

혼자 만든 서비스를 이력서에 쓸 때, 규모를 보여주고 싶어진다. 5개월간 붙잡고 있었으니 그만큼의 덩치가 있다는 걸 알려야 할 것 같다.

그래서 초안에 이렇게 적었다.

커밋 728개, 약 7만 줄. 3개 앱을 모노레포로 구성

그다음 지금 채용 시장의 이력서 관행을 찾아봤다. 여러 곳에서 공통으로 나온 말이 두 개였다. «무엇을 했다»로 끝나는 나열은 감점이라는 것, 그리고 성과는 [지표] Before → After 형식으로 쓰라는 것.

그 눈으로 초안을 다시 읽으니 내가 적어둔 숫자가 두 종류로 갈렸다.

성과 숫자 규모 숫자
정확도 96.4% → 77.5% 커밋 728개
수집 시간 2시간 → 2분 약 7만 줄
원가 46% 절감 정책 68개

오른쪽은 전부 양(量) 이다. 7만 줄은 좋은 코드라는 뜻이 아니다. 오히려 같은 걸 2만 줄로 만든 사람이 더 나을 수도 있다. 읽는 사람이 판단할 수 없는 숫자를 세 줄이나 적어둔 셈이었다.

«가정해서 한 줄 써라»에서 갈렸다

마침 개발자 이력서 팁 영상을 하나 봤다. 주장이 이거였다.

프로젝트의 초당 처리량(TPS)과 서버 스펙을 가정해서 한 줄 써라. 아무도 안 쓴다.

맞는 지적이라고 생각했다. 실제로 내 이력서엔 성능 지표가 하나도 없었다. 그런데 그대로 따르기엔 걸리는 게 있었다. 그 영상은 취준생 대상이라 «가정»을 권한 것이다. 잴 게 없으니까.

나는 잴 게 있었다. 그리고 이력서를 쓰면서 지금까지 지켜온 게 «지어낸 숫자를 안 쓴다» 하나였다. 가정을 적으면 면접에서 "실제로는 얼마 나왔나요?" 한 마디에 무너진다.

실제로 쟀다

k6 로 로컬에 부하를 걸었다. 동시 사용자를 5명에서 시작해 25 → 50 → 100 → 200명까지 15초 간격으로 올렸다.

  • 관람객이 QR 을 찍었을 때 나가는 조회(테이블 3단 조인 + 목록) → 2,953 TPS, p95 65ms
  • 챗봇 질문 1회에 해당하는 벡터 검색(1536차원, HNSW 코사인) → 1,275 TPS, p95 173ms
  • 동시 200명 구간에서도 실패 0건 (총 27만 건)

그리고 이 한 줄이 「커밋 728개, 약 7만 줄」을 대체했다. 자리를 새로 만든 게 아니라 바꾼 것이다.

재는 과정에서 세 가지를 조심했다.

  1. 외부 API 호출은 뺐다. 그건 내 서버 성능이 아니라 남의 응답 시간이다
  2. «로컬 실측»이라고 이력서에 명시했다. 운영은 클라우드라 값이 다르다. 어디서 쟀는지를 안 적으면 그것도 결국 지어낸 숫자와 같아진다
  3. 운영에는 절대 안 걸었다. 설정 파일이 기본으로 운영을 가리키고 있어서, 주소를 직접 지정하는 방식으로만 돌게 스크립트를 짰다

남는 것

재고 나서 든 생각은, 영상이 말한 «남들이 안 쓰는 한 줄»의 진짜 값어치가 TPS 숫자 자체는 아니라는 점이다. «내가 만든 게 어디까지 버티는지 확인해 봤다»는 사실이 값어치다. 가정으로 적으면 숫자는 남고 그 사실은 없다.

커밋 수와 줄 수도 마찬가지였다. 그 숫자가 틀린 건 아니었다. 다만 읽는 쪽에서 판정할 수 없으니 아무 말도 안 하고 있었다.

← 목록으로