CLI 인증을 35초에서 2초로 단축한 이야기
목차
최근에 CLI 도구의 인증 플로우를 개선하면서 성능을 17배 올릴 수 있었다. 기존 방식은 CLI를 통한 대화형 인증인데, 사용자 입장에서는 35초를 기다려야 로그인이 완료되는 경험이었다. 이번 작업에서는 ChatGPT OAuth를 직접 HTTP로 연결하는 fast path를 추가하고, 기존 CLI 방식을 폴백으로 유지해서 안정성을 보장했다.
왜 CLI 인증이 느렸나
원래 시스템을 설계할 때는 모든 상황을 CLI로 처리하려고 했다. 이게 장점도 있다 — 사용자가 쉘에서 완전히 벗어나지 않아도 되고, 설치된 CLI 도구만으로 전부 해결할 수 있다는 뜻이니까. 하지만 문제는 인증 흐름이 많은 단계를 거친다는 것이다. CLI가 로컬에서 시작하고, OAuth 토큰을 받기 위해 외부 서버와 여러 번 왕복하고, 응답을 기다리는 사이에 시간이 쌓인다.
35초는 생각보다 긴 시간이다. 사용자가 처음으로 도구를 쓸 때 35초를 기다려야 한다면, 그 인상이 "느린 도구"로 남는다. 특히 팀에서 새로운 멤버들을 온보딩할 때 이런 부분이 정말 중요한데, 첫 경험이 별로면 도구 채택에 부정적 신호를 준다.
직접 HTTP 경로와 OAuth 연결
이번에 추가한 fast path는 아주 간단한 아이디어다. CLI를 중간자로 두지 말고, 외부 OAuth 인증 제공자의 인증 응답을 직접 HTTP로 받아서 처리하는 방식이다. 로컬 머신에서 작은 HTTP 서버를 잠깐 띄웠다가, OAuth 리디렉션으로 돌아오는 코드/토큰을 즉시 캡처하고 닫아버린다.
기존 (CLI 폴백):
사용자 → CLI 도구 → 외부 OAuth 서버 → CLI 도구 → 사용자 입력 대기
개선 (direct-HTTP fast path):
사용자 → 로컬 HTTP 서버 ← OAuth 서버 리디렉션 (직접 수신)
→ 토큰 즉시 저장 → 완료
이렇게 하면 중간에 불필요한 CLI 대기 시간이 사라진다. 실제로 측정해보니 2초 정도면 충분했다. 35초와 비교하면 17배 이상 빠른 셈이다.
폴백 전략이 핵심이었다
다만 새로운 fast path가 항상 작동하는 건 아니다. 방화벽이 HTTP 포트를 막거나, 네트워크 구성이 특이하거나, 사용자가 직접 OAuth 제공자에 접속할 수 없는 환경이 있을 수 있다. 그래서 가장 중요한 결정이 "기존 CLI 방식을 폴백으로 유지하는 것"이었다.
| 관점 | Fast Path | CLI Fallback |
|---|---|---|
| 속도 | ~2초 | 35초 |
| 의존성 | HTTP + 로컬 포트 | CLI 표준 입출력 |
| 실패 시 | CLI로 자동 전환 | 인증 실패 |
| 신뢰도 | 신규 경로 (위험) | 기존 검증됨 |
이런 식으로 점진적 롤아웃을 할 수 있다. 처음에는 fast path를 시도하고, 실패하면 조용히 CLI 방식으로 넘어간다. 사용자 입장에서는 "대부분 2초지만, 가끔 35초가 걸릴 수도 있다"는 정도지만, 적어도 모든 환경에서 작동한다는 보장이 있다.
팀과의 논의와 배운 점
이 작업을 결정할 때 팀 내에서 고민했던 부분이 몇 가지 있었다. 첫째는 "정말 2초를 위해 코드를 복잡하게 할 필요가 있나?"였다. 하지만 사용자 경험에서 이 차이는 생각보다 크다. 특히 온보딩 단계나 CI/CD 스크립트처럼 여러 번 반복되는 상황에서는 35초 vs 2초가 전체 워크플로우의 성공 여부를 결정한다.
둘째는 "폴백을 정말 신뢰할 수 있나?"라는 의문이었다. 답은 '충분히 테스트하면 된다'는 것이었다. 우리는 fast path가 실패하는 시나리오(포트 이미 사용 중, 네트워크 타임아웃, 리디렉션 URL 오류 등)를 의도적으로 만들어보면서 폴백이 제대로 작동하는지 확인했다.
셋째는 "사용자에게는 어떻게 알려야 할까?"였다. 이건 실은 자동으로 처리되길 원했다. 사용자가 "이제 OAuth를 직접 연결합니다"라는 공지를 받을 필요는 없다. 그냥 로그인이 빨라지면 그만이다.
마무리
이 작업을 통해 다시 한 번 느낀 게, 성능 개선은 숫자 자체보다 "그 숫자가 사용자 경험에 미치는 영향"이 중요하다는 것이다. 35초 → 2초는 기술적으로는 깔끔한 성과지만, 실제 가치는 "온보딩 시간 단축", "스크립트 실행 시간 감소", "첫인상 개선" 같은 것들이다. 그리고 폴백을 항상 곁에 두는 것이 신규 기능을 안전하게 도입하는 최고의 방법이라는 걸 다시 확인했다.
🛒 이 글과 어울리는 추천 상품
*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.
댓글 0
첫 댓글 달아줘.