개발
코드 / 아키텍처 / 디버깅
-
OpenAI 장애로 9일 먹통된 운세 서비스를 Claude 전환으로 복구
긴급하게 LLM 공급업체를 OpenAI에서 Anthropic Claude로 전환해야 했던 이유는 서비스 장애 때문이었다. 9일간 콘텐츠 생성 기능이 먹통이 돼서 사용자 경험이 완전히 망가진 상황이었고, 이를 신속하게 해결하기 위해 대체 모델로의 즉시 마이그레이션을 결정했다.
읽기 → -
디스코드 배포 알림에 변경 파일 목록과 로그 첨부 추가
디스코드 발행 알림에 파일 첨부 기능을 추가했다. 배포 완료 메시지가 단순 텍스트만 던지는 것에서 벗어나, 실제 변경된 파일 목록과 로그까지 함께 보낼 수 있게 개선한 작업이다.
읽기 → -
결제 플랫폼 토픽 풀 확장으로 30일 중복 제거 병목 해소
결제 플랫폼의 토픽 풀 크기를 28에서 100으로 확장하면서 30일 중복 제거 로직의 성능 병목을 풀어낸 작업이다.
읽기 → -
충전 취소 엔드포인트 개설과 환불 수수료 정책 유연화
충전 취소 흐름을 시스템에 정식으로 담으며 운영자의 환불 수수료 정책을 유연하게 적용할 수 있게 만든 작업이다.
읽기 → -
멀티테넌트 LLM 프록시로 테넌트별 사용량 추적 구현
멀티테넌트 환경에서 외부 LLM API 요청을 투명하게 프록시하면서 동시에 사용량을 추적하는 구조를 만들었다. 초반에는 간단한 작업처럼 보였지만, 팀 전체의 비용 관리와 테넌트별 할당량 제어에 영향을 미치는 꽤 중요한 인프라 변경이었다.
읽기 → -
이벤트 소싱에서 모델 정보의 진실 원천을 턴컨텍스트로 이전
이벤트 소싱 시스템에서 데이터를 읽어오는 경로를 바꾸는 작업이었다. 원래는 response_item에서 모델 정보를 가져오던 걸 turn_context events로 변경했다.
읽기 → -
여러 AI 코딩 도구 사용량을 통합 집계하는 멀티 프로바이더 추적 구현
여러 AI 코드 작성 도구를 함께 쓰는 팀이 생기면서, 사용 현황을 한 곳에서 추적해야 하는 상황이 생겼다. 기존에는 한 종류의 로그만 읽고 있었는데, 이제 다중 제공자(multi-provider)의 사용량을 함께 스캔하고 통합하는 기능을 만들었다.
읽기 → -
라이선스 키 인증을 실계정 시스템으로 전면 전환
라이선스 키 기반 로그인을 실계정(이메일+비밀번호+API 키) 시스템으로 완전히 바꿨다. 개발 초기에는 빠른 프로토타이핑을 위해 라이선스 키 하나로 모든 인증을 처리했는데, 서비스가 성장하면서 이 방식의 한계가 명확해졌다.
읽기 → -
어드민 패널 인증을 팀 대시보드 구조로 전환
웹 어드민 패널의 인증 방식을 email+key 기반에서 팀 대시보드 중심으로 전환했다. 단순해 보이지만 이 작업 뒤에는 관리 인터페이스의 구조 전환이라는 꽤 큰 의도가 담겨 있었다.
읽기 → -
멀티테넌트 전환으로 라이선스별 팀 데이터 격리 구현
멀티테넌트 아키텍처로 팀 서버를 분리하며 라이선스 기반 데이터 격리를 구현했다. 초반엔 단순해 보이던 작업이 팀 리딩 관점에서 꽤 복잡한 설계 결정들을 담고 있었다.
읽기 → -
팀 배포 권한을 명시적 허용 목록으로 체계화
팀 멤버들의 push 권한을 체계적으로 관리할 수 있는 allowlist 체계를 구축했다. 이전엔 누가 실제로 배포 권한이 있는지 암묵적이거나 제대로 추적되지 않았는데, 이번 작업으로 명시적인 소유자 관리 구조를 도입할 수 있게 됐다.
읽기 → -
구독 플랜별 팀 멤버 상한선 강제 적용과 경계 케이스 처리
팀 허브에서 구독 플랜별 멤버 상한선을 강제하는 로직을 추가했다. 기본값 5명 기준으로 시작했는데, 이 작업이 단순해 보이지만 구독 시스템과 팀 관리의 경계에서 꽤 중요한 결정들이 섞여 있었다.
읽기 → -
팀 뷰 기능을 라이선스로 계층별 접근 제어한 과정
팀 뷰 기능을 라이선스 기반으로 게이팅하고 패키지 설명을 정정한 작업이다. 단순해 보이지만 제품 정책과 코드 구조가 만나는 지점에서 꽤 생각할 게 많았던 변경이다.
읽기 → -
팀 멤버별 Claude Code 사용량 집계 대시보드 구현
팀 단위 사용량 집계 기능을 구현하면서, 멤버별 Claude Code 사용 현황을 한눈에 볼 수 있도록 만들었다. 이 작업의 배경과 설계 의도, 그리고 팀 리딩 관점에서 느낀 부분들을 정리해본다.
읽기 → -
모델·일자·프로젝트별 사용량 대시보드 구축기
사용량 대시보드를 새로 만들면서 모델별/일자별/프로젝트별 집계 뷰를 한 번에 볼 수 있게 정리했다. 초기 사용량 추적 기능이 있었지만, 실제 운영팀과 개발팀이 쓸 만한 수준의 대시보드가 없었거든.
읽기 → -
로컬 AI 모델 토큰 사용량과 비용 추적 기능 구현
로컬 개발 중에 생성되는 AI 모델 로그를 파싱해서 모델별 토큰 사용량과 비용을 추적할 수 있게 만들었다. 이건 개발팀이 실제 운영 비용을 체감하고 최적화 기회를 찾는 데 필수적인 기능이었다.
읽기 → -
깊은 문서에서 미리보기 샘플이 0개 추출되던 버그 수정
문서 샘플 미리보기 범위를 전체 문서에 걸쳐 적절히 분산시킨 작업이다. 깊은 문서(deep docs)에서 0개 엔드포인트만 추출되던 버그를 고쳐서, 이제 여러 페이지에서 균형 있게 샘플을 뽑아낼 수 있게 했다.
읽기 → -
결제와 충전 승인 로직을 분리해 포인트 상품 연동 개선
충전형 결제 플랫폼에서 새로운 포인트 상품 채널을 연동할 때, 기존 결제 승인 로직과 충전 승인 로직을 깔끔하게 분리하는 게 얼마나 중요한지 다시 한 번 느꼈다.
읽기 → -
POS 결제 취소 응답 파싱 오류와 지점 코드 검증 누락 수정
웹 POS 결제 응답 파싱 로직에서 발생하던 배열 처리 문제를 손봤다. 단순해 보이지만 결제 흐름에서 꽤 치명적일 수 있는 부분이었다.
읽기 → -
블로그 시드 데이터 생성 비용을 Haiku 모델로 절감한 방법
블로그 시드 데이터 생성 비용을 절감하기 위해 Claude 모델을 Sonnet에서 Haiku로 다운그레이드했다. 단순해 보이는 작업이지만, 내 팀이 개발 비용 효율성을 어떻게 고민하는지 보여주는 좋은 사례다.
읽기 →