ISUCON2026 참가기 계속입니다. 본 경기는 약 6만 점으로 끝났습니다. 이후 감상전(感想戦)에서, Claude Code의 다음 세션을 진행하게 하자 61만 점까지 늘어났습니다.
점수가 오른 것은 AI에게 무언가를 추가했기 때문이 아닙니다. 제가 제공하던 것들을 대부분 제거했기 때문입니다.
TL;DR
- 무엇을 했는가: 감상전을 3회에 걸쳐 진행하며, Claude Code의 한 세션에 개선 작업을 집중시켰습니다.
- 결과(수치): 본 경기의 약 6만 점(최고 61,269점)에서 최고 610,237점까지 약 10배 증가했습니다.
- 가장 큰 배움: 하네스(Harness)와 사전 정보가 제거될수록 성능이 향상되었습니다.
사람이 제공할 수 있는 가치는 절차보다 '어디를 볼지'에 대한 한마디였습니다.
감상전은 본 경기 후에 벤치를 자유롭게 돌릴 수 있는 기간입니다.
ISUCON의 본 경기가 끝난 후, 포털에서 벤치(Bench)를 다시 돌릴 수 있게 되었습니다. 이것이 감상전입니다. 배포된 템플릿으로 동일한 구성을 가진 서버를 자신의 AWS에 구축하여, 본 경기와 같은 벤치로 점수를 측정할 수 있습니다.
본 경기와의 차이점은 8시간이라는 제한이 없다는 것입니다. 포털 표시 상으로는 기간이 11/23까지입니다. 벤치도 몇 번이고 돌릴 수 있습니다. 저는 3회에 걸쳐 진행했습니다.
사람이 한 일은 지시를 내리고, 스택의 생성 및 삭제, SSH 권한 부여 정도였습니다. 구현(Implementation), 배포(Deployment), 벤치 테스트, 분석은 모두 Claude Code가 처리했습니다.
6만 점에서 61만 점까지
| 회차 | 기간 | 벤치 | 점수 (시작→최고) |
|---|
| 본 경기 | 10/31(8시간) | 131회 | 3,538 → 61,269 |
| ... | | | |
감상전 1의 시작점이 26,674점인 것은 서버 설정이 갖춰지지 않았기 때문입니다. 본 경기의 수준으로 돌아오는 데 약 2시간 반이 걸렸습니다. 감상전 3의 시작점이 낮아진 것은 스크립트를 전부 지우고 다시 만들었기 때문입니다.
ポータルの点数の推移(10/31〜11/11)
포털에 표시되는 점수 추이입니다. 0점까지 떨어져 있는 선은 FAIL한 경우입니다. 본 경기의 131회는 팀원 두 명의 점수를 합산한 수치입니다.
점수는 벤치 측 인원 증가 운에 따라 ±5% 정도 흔들립니다. 최고점을 만들기 위해 9번 돌렸을 때, 56.7만 ~ 59.1만 점이었습니다.
과정 1: 너무 꽉 조였던 하네스를 느슨하게 만들다
본 경기에서는 Claude Code와 Codex의 네 세션에 역할을 분배하고, 스킬(Skill), Stop Hook, 작업 규약(作業規約)으로 제약을 걸었습니다. 규약에는 '1회 측정당 변경은 1개', '규약에 위반하는 안건은 제안도 실행도 하지 않는다'와 같은 규칙들이 나열되어 있었습니다.
감상전 1에서, 이 부분을 느슨하게 만들었습니다.
- 작업 규약을 '확실히 규약에 위반하는 수정 외에는 허용'으로 변경
- '1회 측정당 변경 1개' 등은 지켜야 할 기준이 아닌 참고 사항으로 설정
- 스킬을 호출할 수 없게 하고, 모든 후크(Hook)를 중지
- 모델을 opusplan(계획 시에만 Opus 사용, 그 외는 Sonnet)에서 Opus 5.5・effort high로 변경
지시도 강하게 했습니다. '위험을 감수하지 않고 성능 향상만을 생각하라', '규약 경계선이라도 괜찮으니 진행하라. 차라리 오버해서 목표를 노려봐도 좋다'고 전달했습니다.
본 경기에서 제안했지만 채택되지 않았던 '이미지를 DB에 저장하는 것을 중단한다' 역시 이 회차에서 적용되었습니다. 결과는 221,255점입니다.
다만 AI 자체의 되돌아봄은 '전반적으로 꾸준한 쌓기 과정이었다'였습니다. 1회 수정으로 인한 점수 상승 폭은 3~10%였으며, 약 250회의 벤치를 돌렸습니다. DB 이미지나 메모리 캐시, nginx를 제거하는 안건 등 기술적인 부분도 상당 부분 제가 제시했습니다.
과정 2: 더 느슨하게, 거의 전부 지우다
감상전 2에서는 더욱 느슨하게 만들었습니다.
- 개수정은 하나씩이 아니라 모아서 한 번 측정
- '내구성을 떨어뜨리지 않는다'는 규정이 아니므로 제외
- '규정 외의 규칙이 있다면 재검토하고, 불필요한 하네스를 달지 말라'
- '전체적으로 받아들일 수 있는 연결을 제한하는 부분은 개방하라'
303,025점까지 늘어났습니다. 그럼에도 불구하고 크게 점프하는 수정은 없었습니다.
그래서 'LLM의 한계? 안전 가드 때문?'이라고 물었습니다. AI의 대답은 주로 자신의 한계라는 것이었습니다.
'하나씩 꾸준히 검증한다'는 것은 LLM의 특성이기도 했으며, 이번 하네스가 그것을 강화하고 있었습니다.
AI는 대책으로 측정 전에 설계하는 단계를 스킬로 추가할 것을 제안했습니다. 저는 반대로 선택하여, 하네스를 거의 전부 지웠습니다.
- 규정(Regulation), 당일 매뉴얼, 당일 질의 내용을 모두 제거한다.
- 셸 스크립트(Shell Script), 플레이북(Playbook), 역할 설명, 스킬을 모두 제거한다.
- 작업 규약은 네 가지 방침만으로 한다 (빨리 하는 것이 전부 / 수정은 모아서 넣기 / 일시적인 퇴행은 허용 / 점수가 0이 되지 않는 한 기존 설정의 변경은 모두 허용한다).
감상전 3 시작 시에는 “git 히스토리는 절대 참조하지 마라. 스크립트나 스킬, 후크 등을 되돌리는 것도 금지”라고 전달했습니다. 남긴 것은 목표 점에 도달할 때까지 멈추지 않게 하는 Stop Hook과 짧은 작업 규약뿐이었습니다.
과정 3: 한 번의 벤치마크를 쫓는 것을 멈추게 하다
감상전 3에서는 스크립트가 없는 상태에서 1시간 만에 28.9만 점까지 돌아갔습니다. 그 후 멈췄습니다.
이번에는 같은 종류의 지시를 여러 번 내렸습니다.
| 시간 | 나의 지시 | 이후 상황 |
|---|
| 16:21 | “지루한 개선은 그만하고, 크게 점수를 올릴 수 있는 방안을 검토하자” | 설정을 하나씩 바꾸며 약 10분 간격으로 측정함 |
| ... | | |
| 19시부터 22시까지의 3시간 동안 총 19번 실행했고, 점수는 31.7만 점에 머물렀습니다. 횟수나 절차를 제한하는 지시는 행동을 바꾸지 못했습니다. | | |
밤 11시가 지나서, 말하는 방식을 바꿨습니다.
계속 같은 것을 반복하고 있는 것 같은데 그런 관점에서 정말로 점수가 오를까? 정말 지금 보고 있는 부분이 병목(bottleneck)일까? 모든 것을 의심해 봐. 결과뿐만 아니라 전체 구성 등도 재검토하자.
제가 스스로 말하는 방식이 강하네요 (웃음). 3분 후에는 “결과에 매이지 말고”라는 내용까지 추가했습니다. AI는 그전까지의 모든 벤치마크 기록을 배열했습니다. 점수의 변동은 일별 인원 증가에서 왔으며, 증가는 각 지역의 응답이 느린 쪽과 강하게 상관관계가 있었습니다 (r ≈ −0.9).
그 원인은 단일 CPU의 포화(saturation)였습니다. AI는 처리 위치를 바꾸는 수정 사항을 정리했고, 35분 후 한 번의 벤치마크에서 31.7만 점을 49.3만 점으로 올렸습니다.
계속해서 “사고방식에서 크게 개선했으니 이것을 참고하여 결과에 매이지 않고 전체 구성을 재검토하도록 설정을 수정해 달라”고 전달했습니다. AI는 작업 규약의 맨 앞에 네 가지 절차를 배치했습니다.
- 점수가 결정되는 방식을 파악한다
- 가설은 전 회차 로그로 확인한다
- 장치별 CPU/대역폭을 시간 순서대로 본다
- 일을 나누어, 비어 있는 장치에 재배치한다
이후의 상승분(52.8만 점, 55.1만 점)은 이 순서대로 분석한 것에서 나왔습니다. 감상전 3의 처음 18시간을 구분하자, 오르지 않았던 구간은 58번의 벤치마크에서 +2.8만 점이었습니다. 재검토한 구간은 3회 만에 +23.4만 점입니다.
그 후, AI가 “70만 점은 무리다, 60만 점 전후가 기준”이라고 말한 적이 있습니다. 저는 “다른 사람의 점수를 보고 상대적으로 판단하지 마라. 멋대로 상한선을 정하는 것은 좋지 않다”고 반박했습니다. 재검토 결과, 상한선이라는 전제 자체가 잘못되었으며 60.9만 점, 61.0만 점까지 상승했습니다.
배움: 하네스(Harness)는 최소한으로 충분하다
감상전 3에서 사용한 것은 네 가지 방침의 작업 규약과 Stop Hook뿐이었습니다. 그 외에는 “답변은 일본어”와 같은 메모가 몇 개 있을 뿐이었습니다. 그것만으로 30만 점에서 61만 점까지 상승했습니다.
역할 분담도 스킬도 없는 상태에서, AI는 배치 및 벤치마크 스크립트를 1시간 만에 재작성했습니다.
Stop Hook은 ISUCON2026에서 우승한 @kawasy님의 ISUCON2026 우승 (준비 편)을 참고하여 넣었습니다. Stop Hook으로 “더 계속해 달라”고 답변하고 장시간 구동시키는 구조입니다. 대화가 몇 번 요약되어도 이 후크가 매 턴마다 방침을 재설정했습니다. 가치가 있었던 것은, 이 “목표와 방침을 매번 상기시키는” 부분이었습니다.
배움: 필요한 정보는 주지 않아도 스스로 찾아간다
매뉴얼을 제거했기 때문에, AI는 점수 결정 방식을 모르는 상태에서 시작했습니다. 그럼에도 필요하다고 느끼면 포털에서 매뉴얼의 위치를 찾아서 스스로 읽었습니다.
점수의 변동 이유는 모든 벤치마크 로그에서 도출했습니다. 첫날 인원은 항상 같았고, 변동은 다음 날 인원 증가 추이에서 온다는 식의 사실이었습니다. 제가 미리 전달할 필요가 없었습니다.
배움: 사람이 주는 것은 “어디를 볼지” 한 마디다
“지루하게 하지 마라”, “횟수를 줄여라”는 몇 번을 말해도 효과가 없었습니다. 효과가 있었던 것은 “모든 것을 의심해 봐”, “결과에 매이지 마라”, “멋대로 상한선을 정하지 마라”였습니다. 이 모든 것이 보는 관점을 바꾸는 말이었습니다.
AI는 방치되면 눈앞의 숫자부터 건드립니다. 본인도 “측정과 개선을 반복하는 루프 안에서, 스스로 그 질문으로 돌아가는 것은 드물다”고 썼습니다. 사람의 일 대부분은 바로 그 시야를 외부에서 흔드는 것이었습니다.
Discussion