자동화
n8n / 스크립트 / 봇
-
송금 실패 시 파트너 잔액 복구 프로세스 개선
결제 플랫폼의 출금 송금이 실패했을 때 파트너 계정의 잔액을 제대로 복구하고, PG가 비활성화된 상태에서 배치가 즉시 실패하도록 처리를 보강했다. Codex 정적 검증 도구에서 6차 검증 시 지적한 사항들을 개선한 작업인데, 돌아보니 이 부분이 생각보다 많은 엣지 케이스를 감싸고 있더라.
읽기 → -
새 결제 경로 추가, 구 webhook 5개 정리
웰컴 카드 온보딩과 정기 결제 빌링 경로를 지원하면서, 동시에 기존 webhook 5개를 비활성화했다. 결제 플랫폼을 점진적으로 개선하는 과정에서 마주하는 전형적인 마이그레이션 작업이었다.
읽기 → -
특가 프로모션에 실시간 카운트다운 추가
오늘만 제공되는 특가 프로모션에 카운트다운 타이머를 추가했다. 사용자의 로컬 시간대 기준으로 자정까지 몇 시간 몇 분 몇 초가 남았는지 HH:MM:SS 형식으로 실시간 표시하고, 자정이 지나면 자동으로 리셋되는 기능이다.
읽기 → -
골든존 키워드 자동적재로 일일 리포트 완성도 높이기
Google Search Console(GSC)에서 골든존 키워드를 자동으로 수집해서 일일 리포트에 반영하는 기능을 추가했다. 두 개의 스크립트를 새로 만들고 데이터 파이프라인을 정렬하는 작업이었다.
읽기 → -
높은 노출 기회 키워드 최우선으로 처리
발행봇의 키워드 처리 전략을 개선했다. Google Search Console(GSC) 데이터를 기반으로 "골든존" 키워드들—이미 검색 결과에 노출되고 있지만 순위가 아직 낮아 클릭 기회가 있는 키워드들—을 최우선으로 소비하도록 했다. keyword-discovery/kw_pool.py에 우선순위 로직을 추가한 작업인데, 내가 한 결정과 거기서 배운 점들을
읽기 → -
인증파일 root 소유 사고 자동 방어
인증 관련 스크립트들이 root 권한으로 실행되면서 인증파일의 소유권이 뜻하지 않게 root로 변경되는 사고가 발생했다. 평소엔 괜찮다가 특정 배포나 자동화 작업 직후 서비스가 갑자기 응답하지 않는 상황이 생기는데, 원인을 추적해보면 대부분 인증파일 접근 권한 문제더라. 이번에 이런 상황을 미리 감지하고 자동으로 복구할 수 있도록 방어 로직을 추가했다.
읽기 → -
가상계좌 정보 조작 방지
결제 플랫폼에서 가상계좌 발급 정보를 클라이언트가 마음대로 설정할 수 있던 문제를 서버 권위로 고쳤다.
읽기 → -
블로그 콘텐츠를 Dev.to에 자동 배포하기
블로그에 글을 올릴 때마다 손으로 Dev.to에도 동일한 내용을 복붙해서 올리던 반복 작업을 없애기로 했다. bot/generate.py에 Dev.to 신디케이션 로직을 추가해서 블로그 배포와 함께 자동으로 Dev.to에 콘텐츠가 올라가도록 정리했다.
읽기 → -
자동화 봇의 중복 청구를 원자적으로 처리
운영 자동화 시스템을 만들다 보면, 매일 반복되는 작업들을 배치 처리하는 **일일 봇**을 필요로 한다. 이번 작업은 그 봇이 여러 카테고리의 청구를 처리할 때 발생하는 중복 문제를 정면으로 마주쳤다. categoryId 추가, 인터리브 클러스터 선택, 원자적 중복 제거—세 가지 개선을 한 번에 적용했다.
읽기 → -
결제 웹훅 발신자 위조 공격 차단 강화
결제 플랫폼에서 들어오는 웹훅의 발신자 IP를 검증하는 방식을 개선했다. XFF(X-Forwarded-For) 헤더를 다룰 때 보안 취약점이 있었는데, 맨 뒤 값(위조 불가능한 IP)을 사용하도록 변경한 작업이다.
읽기 → -
사이트맵 크롤링 효율 높인 HEAD 메서드 지원
이번 주는 블로그 사이트의 검색 엔진 최적화(SEO) 관점에서 작은 하지만 의미 있는 두 가지를 손봤다. sitemap, robots.txt, RSS 피드 엔드포인트에서 HTTP HEAD 메서드를 지원하고, 정적 sitemap entries에 마지막 수정 시간(lastmod)을 추가했다.
읽기 → -
결제 webhook 정산·환불·보안 통합 완료
지난번부터 남겨둔 결제 플랫폼 webhook 처리 기능들을 마무리했다. 정산 후처리, 환불 시 역분개, IP 토글을 통한 접근 제어까지—세 가지 핵심 기능이 모두 구현되면서 webhook 통합이 한 단계 완성된 느낌이다.
읽기 → -
백업 로그인 중 cron 동시 실행 방지
백업 로그인 기능을 추가하면서 동시성 제어의 중요성을 다시 한 번 깨달았다. 계정 관리 스크립트가 자동화되면서 여러 작업이 병렬로 실행될 가능성이 높아졌고, 특히 사용자가 수동으로 백업 로그인을 수행 중일 때 cron이 동시에 계정 상태를 변경하려 하면 상태 불일치나 데이터 손상이 발생할 수 있다는 걸 깨달았다.
읽기 → -
LLM 없이도 정확한 정부 지원금 자동 판정
정부 지원금 자격 판단을 LLM에서 규칙 기반 파서로 전환했다. 자동 매칭 도구의 신뢰도를 높이기 위한 결정이었다.
읽기 → -
정부지원금 자격 확인 자동화로 신청 경험 개선
정부지원금 자격 조회를 자동으로 매칭해주는 새로운 도구를 추가했다. 사용자가 몇 가지 기본 정보만 입력하면, 시스템이 자동으로 자격 조건을 판단해 관련 지원금을 제시하는 방식이다. 이번 작업을 통해 사용자가 정부지원금에 접근하는 첫 번째 진입장벽을 상당히 낮출 수 있었다고 본다.
읽기 → -
대량 시드 스크립트의 제목 필드 오염 버그 수정
대량 데이터 생성 스크립트에서 제목 필드에 커밋메시지 값이 들어가는 버그를 발견하고 수정했다. 단순해 보이는 필드 매핑 오류였지만, 자동화된 작업이었기에 얼마나 많은 레코드가 오염될 수 있었을까 생각하니 체계적인 검증의 중요성이 느껴졌다.
읽기 → -
macOS launchd로 스튜디오 저장소 자동 동기화 구현
팀의 개발 워크플로우에서 brainstorm 서비스로 푸시가 들어올 때마다 관련 저장소들을 자동으로 동기화해야 했다. 손으로 매번 동기화 명령어를 치는 것이 반복 작업이었고, 특히 로컬 개발 환경에서 이 과정이 자동화되면 팀의 컨텍스트 스위칭을 크게 줄일 수 있겠다고 판단했다. 그래서 macOS의 launchd를 활용해 이 작업을 자동으로 처리하는 에이전트
읽기 → -
발행 봇 알림을 실패 시에만 울리도록 개선
요 며칠 전 자동화 발행 봇의 알림 정책을 손봤다. 그동안 정상 완료했을 때도 매번 알림을 보내던 걸 끄고, 실패(fail count > 0)가 발생했을 때만 팀에 알리도록 바꿨다. 작은 변경처럼 보이지만, 운영 자동화 시스템의 신호-잡음 비율(signal-to-noise ratio)을 개선하는 꽤 중요한 결정이었다.
읽기 → -
스트리밍 채팅과 온보딩 마찰을 한 번에 개선한 배포 경험
한 번에 스트리밍 채팅, 호감도 연출, 자동 셀카, 큰 얼굴 온보딩까지 네 가지 기능을 함께 배포했다. 규모가 있는 변경인 만큼 팀 전체의 조율과 우선순위 결정이 필요했던 작업이다. 왜 이 모든 걸 한 번에 했는지, 그 과정에서 뭘 배웠는지 정리해보자.
읽기 → -
사이트맵 최신 발행일 자동 동기화로 SEO 크롤링 개선
처음엔 별거 아닌 것처럼 보였다. 블로그 피드 생성 스크립트가 RSS와 sitemap을 만들 때, sitemap의 <lastmod> 타임스탐프를 최신 글의 발행 날짜로 자동 갱신하는 기능 추가였거든. 근데 이 작은 변경이 지금까지 왜 미루고 있었는지, 또 어떤 이유로 이제야 우선순위를 올렸는지 되짚어보면 꽤 타당한 배경이 있다.
읽기 →