대진표를 엑셀로 짜면 세 시간 - 급수와 소속을 동시에 만족시키는 조 편성
대회 전날 밤에 임원들이 엑셀을 붙잡고 있었다. 참가 신청서를 보고 복식 조를 짜고, 대진표를 그리고, 같은 동호회끼리 1회전에서 만나면 지웠다가 다시 그렸다. 매번 세 시간쯤 걸린다고 했다.
대회 전날 밤에 임원들이 엑셀을 붙잡고 있었다. 참가 신청서를 보고 복식 조를 짜고, 대진표를 그리고, 같은 동호회끼리 1회전에서 만나면 지웠다가 다시 그렸다. 매번 세 시간쯤 걸린다고 했다.
4 vCPU / 4 GB VPS 한 대. 여기에 운영 서비스와 DB와 모니터링과 개발 환경을 다 올려야 했다. 늘릴 수 없으니 안 쓰는 걸 줄이는 수밖에 없었다.
엑셀 업로드 한 번에 메모리 그래프가 수직으로 올라갔다. 4GB 서버에서 3.1GB. 남은 게 900MB였다.
요구사항을 듣다가 멈칫한 부분이 있었다. “기존 동호회에서 승인을 안 해주면 어떻게 되나요?” 답은 “그러면 못 옮긴다”였다. 그게 기능 명세가 아니라 현재 상황이었다.
2025년부터 AI 코딩 도구를 실무에 쓰기 시작했다. 처음엔 반신반의했다. “AI가 코드를 짠다고?” 1년 지나고 보니 생각이 바뀌었다. AI는 코드를 짜는 게 아니라, 내가 코드 짜는 방식을 바꿔놓았다.
통합 인증 전환은 1시간 점검으로 끝났다. 문제는 그다음 주에 왔다. “갑자기 로그아웃돼요”라는 문의가 들어오기 시작했다.
“이거 그냥 새로 만들면 안 되나요?” 처음에 나도 그렇게 생각했다. 10년 넘게 쌓인 PHP 코드를 보면 누구나 한 번은 그 생각을 한다.
레거시 PHP를 Java로 이관하면서 가장 무서웠던 건 성능이 아니었다. 다른 학원의 학생 명단이 보이는 것이었다.
“PHP Fatal Error 발생 → 사내메신저 알림 확인 → 코드 확인 → 원인 분석 → 수정 → PR 생성 → 코드 리뷰 → 배포”. 에러 하나에 평균 1시간. 매번 같은 패턴인데 매번 사람이 해야 했다. “이걸 AI가 하면 안 되나?” 생각이 들었고, 그냥 만들어봤다.
레거시 코드를 리팩토링하면 “잘 동작하는지 어떻게 확인하지?”가 항상 문제였다. 테스트 DB를 쓰면 운영 데이터랑 조건이 달라서 미심쩍고, 운영 DB를 쓰면 데이터가 오염된다. 트랜잭션 롤백으로 이 딜레마를 해결했다.