-
벤더 API 규격서 한곳에서 관리하기
이커머스 플랫폼에서는 여러 외부 벤더와 API 연동을 하게 된다. 결제 PG, 배송 시스템, 인증 솔루션, 상품권 발송 등 비즈니스 도메인별로 각각 다른 벤더와 작업하다 보니, API 규격서들이 여기저기 흩어져 있었다. 이번 작업은 그 모든 벤더 연동규격서를 .claude/pdf 디렉토리에 한곳으로 모으고, 신규 벤더 2종을 추가하는 문서화 작업이었다.
읽기 → -
본인인증 SMS 전환 완료, 다음 단계 정의
어느 정도 규모가 되는 팀에서 진행 중인 작업을 파악하고 다음 사람에게 넘겨주는 건 생각보다 복잡하다. 특히 개발과 운영이 나뉘어 있거나, 여럿이 같은 영역을 건드려야 할 때는 더더욱. 이번 커밋은 본인인증 SMS 마이그레이션이 완료되었다는 사실을 팀 핸드오프 문서에 기록하고, 동시에 다음 우선순위를 명시하는 작업이었다.
읽기 → -
예금주명 검증으로 계좌 인증 정확도 강화
계좌 인증은 결제 시스템의 핵심 신뢰 포인트다. 특히 B2B나 정산 플랫폼에서는 계좌 이체 시 송금처와 수취처가 일치하는지 확인하는 게 중요한데, 기존엔 계좌번호 자체만 검증하고 소유주(예금주명)는 별도 확인 없이 진행해왔다. 이번에 그 부분을 보강하고 동시에 구식 1원인증 방식의 UI 잔재도 정리했다.
읽기 → -
회원 본인인증을 웰컴 팝업에서 SMS로 전환
회원 본인인증 방식을 기존의 웰컴 팝업 기반에서 제주(kp-pay)의 휴대폰 SMS 인증으로 전환했다. 보안과 사용자 경험, 그리고 규정 준수 관점에서 실제로 필요했던 작업이었다.
읽기 → -
결제 웹훅 발신자 위조 공격 차단 강화
결제 플랫폼에서 들어오는 웹훅의 발신자 IP를 검증하는 방식을 개선했다. XFF(X-Forwarded-For) 헤더를 다룰 때 보안 취약점이 있었는데, 맨 뒤 값(위조 불가능한 IP)을 사용하도록 변경한 작업이다.
읽기 → -
진행 상황을 문서로 정리하고 팀의 다음 방향 결정하다
프로젝트를 진행하다 보면 특정 지점에서 그간의 성과를 정리하고 다음 단계를 명확히 하는 시간이 필요하다. 특히 팀 규모가 커지고 기간이 길어질수록 말이다. 이번에 한 인증 서비스의 핸드오프 문서를 작성하면서 느낀 것들을 정리해본다.
읽기 → -
결제 인증 화면 일관성 개선과 인증 방식 현대화
결제 플랫폼의 계정 검증 단계를 손봤다. 디자인 시스템 통일과 인증 수단 전환이 함께 들어간 작업이었는데, 이 과정에서 여러 고민이 있었다.
읽기 → -
사이트맵 크롤링 효율 높인 HEAD 메서드 지원
이번 주는 블로그 사이트의 검색 엔진 최적화(SEO) 관점에서 작은 하지만 의미 있는 두 가지를 손봤다. sitemap, robots.txt, RSS 피드 엔드포인트에서 HTTP HEAD 메서드를 지원하고, 정적 sitemap entries에 마지막 수정 시간(lastmod)을 추가했다.
읽기 → -
결제 PG의 원가 설정값 정정
결제 게이트웨이 통합에서 원가와 사용자 수수료를 혼동하는 버그를 발견해서 수정했다. 한 PG사(jeju)의 설정 테이블에서 pgCost(PG에게 우리가 지불하는 원가)가 사용자 수수료로 잘못 입력되고 있었다. 문서, Java 코드, SQL 초기화 스크립트까지 세 곳을 동시에 정정해서 설정값의 일관성을 맞췄다.
읽기 → -
결제 webhook 정산·환불·보안 통합 완료
지난번부터 남겨둔 결제 플랫폼 webhook 처리 기능들을 마무리했다. 정산 후처리, 환불 시 역분개, IP 토글을 통한 접근 제어까지—세 가지 핵심 기능이 모두 구현되면서 webhook 통합이 한 단계 완성된 느낌이다.
읽기 → -
신규 결제 수단 추가로 충전 유입 다양화
지갑 결제 시스템에 두 가지 새로운 결제 수단을 추가했다: 특정 카드 결제 PG와 가상계좌 통합인증.
읽기 → -
셀카 이미지 6장 복구, gitignore 충돌 수정
최근 배포 파이프라인에서 캐릭터 미디어 에셋이 누락되는 문제가 발견됐다. 원인은 두 가지가 함께 작용했다: (1) 실제 이미지 파일이 저장소에서 유실됨, (2) .gitignore의 패턴 충돌로 파일이 제대로 추적되지 않음. 이번 작업에서 두 문제를 동시에 해결했다.
읽기 → -
결제 컷오버 범위 확대, 충전 수수료 로직 재설계
결제 시스템의 P6 단계 적용 범위를 14곳으로 확대하고, 동시에 충전 수수료 계산 로직 5곳을 재설계했다. 한 번에 여러 도메인을 건드리는 작업이었기에 그 의도와 과정을 정리해본다.
읽기 → -
API 비용을 모델별·계정별로 한눈에 보기
Claude API를 팀 단위로 쓰면서 가장 신경 쓰이는 게 비용 관리다. 이번에 계정별 사용량을 모델별로 분리해서 추적하고, Discord를 통해 자동으로 리포트하는 기능을 만들었다.
읽기 → -
크롤 콘텐츠 재구성을 2단계로 나눴더니 품질이 올랐다
최근에 크롤링한 콘텐츠를 재구성하는 파이프라인을 2단계로 분리했다. 기존에는 한 번의 프롬프트 호출로 "기획 + 작성"을 한꺼번에 처리했는데, 이제 Sonnet으로 먼저 구조를 잡고 Haiku로 실제 콘텐츠를 만드는 식으로 개선했다. 같은 입력인데도 결과물이 더 고유하고 일관성 있게 나오니까, 이제는 이렇게 하는 게 기본이 될 것 같다.
읽기 → -
결제 플랫폼과 거래 기록 시스템 통합
새로운 결제 게이트웨이(kp-pay)로 완전히 전환하면서, 거래 기록 관리 체계까지 함께 중앙화하는 대규모 마이그레이션의 P1~P6 골격을 완성했다.
읽기 → -
API 한도 폴백을 2단계로 설계하고 문서화하다
주간 API 한도 초과 시 자동으로 작동하는 폴백 메커니즘을 문서화했다. 단순한 실패 처리가 아니라, 모델 폴백(A)과 계정 로테이션(B) 두 겹으로 방어하는 구조를 명시하고, 팀이 이해하기 쉽도록 정리했다.
읽기 → -
임시 검증 파일 저장소에서 자동 제외
임시 검증용 이미지 파일들을 git 추적에서 빼고 .gitignore에 패턴 추가하는 작업을 했다. 이미 저장소에 들어있던 dc-1827부터 dc-1833까지의 PNG 파일들을 제거한 뒤, 향후 captures 디렉토리의 파일들이 자동으로 무시되도록 설정한 것.
읽기 → -
백업 로그인 중 cron 동시 실행 방지
백업 로그인 기능을 추가하면서 동시성 제어의 중요성을 다시 한 번 깨달았다. 계정 관리 스크립트가 자동화되면서 여러 작업이 병렬로 실행될 가능성이 높아졌고, 특히 사용자가 수동으로 백업 로그인을 수행 중일 때 cron이 동시에 계정 상태를 변경하려 하면 상태 불일치나 데이터 손상이 발생할 수 있다는 걸 깨달았다.
읽기 → -
여전히 필수인 통계 시스템, 폐기로 표기되다
사내 통계 시스템 문서에 떠 있던 오류를 정정했다. archive/stats-legacy/README.md에 남겨진 "폐기 예정" 표시를 제거하고, 실제 현행 상태를 명확히 하는 작업이었다.
읽기 →