개발
코드 / 아키텍처 / 디버깅
-
운영 모니터링 알림 과부하를 일일 요약 체계로 개선
운영 모니터링 스크립트들의 알림 정책을 다시 정리했다. 정상 동작은 침묵하고, 문제가 실제로 발생했을 때만 알림을 보내는 방식으로 전환하면서, 동시에 일일 통합 요약을 추가해서 전체 상황을 한눈에 파악할 수 있게 만들었다.
읽기 → -
배포 실패 시에만 알림 전송하도록 배포 스크립트 개선
배포 스크립트의 알림 전략을 손봤다. 정상완료일 땐 입을 다물고, 문제가 터졌을 때만 신호를 보내도록 변경한 것이다.
읽기 → -
배포 성공 알림을 제거해 Discord 노이즈를 줄인 이야기
특정 배포 환경에서 배포 완료 후 성공 메시지를 Discord로 보내던 기능을 제거했다. 단순한 알림 삭제처럼 보이지만, 이 작은 변경 뒤에는 팀의 배포 문화와 의사결정이 어떻게 진화해왔는지가 담겨 있다.
읽기 → -
인물 카드에 2D·실사 표현과 감정 케어 기능 추가
개별 인물에 대한 2D/실사 카드와 감정 상태 기반 케어 기능을 한 번에 추가했다. 3개의 API 라우트(chat, gift, selfie)와 채팅 페이지, 메인 페이지 UI를 함께 수정하는 꽤 큰 작업이었다. 이 기능이 왜 필요했고, 구현할 때 어떤 설계 선택을 했는지 정리해본다.
읽기 → -
2D와 실사 캐릭터 타입을 완전히 분리해 스키마 오염 해소
캐릭터 시스템에서 2D와 실사를 별개의 관계로 완전히 분리했다. 한 번에 끝낼 수 있는 작은 작업이지만, 그 배경과 의미를 풀어 이야기해보려 한다.
읽기 → -
코인 결제·스타일 고정·셀카를 한 번에 배포한 이유
코인 결제 시스템, 스타일 고정, 환영 셀카, 신규 캐릭터 씬까지—한 커밋에 네 가지 기능이 한꺼번에 들어갔다. 보통은 각 기능별로 브랜치를 나누고 차례대로 배포하지만, 이번엔 특수한 상황이 있었다.
읽기 → -
게임 캐릭터 아키타입 3종 추가와 선물 시스템 연계 설계
새 아키타입 3종과 각각 2D/실사 스타일을 동시 지원하면서 선물 시스템까지 함께 엮는 작업을 진행했다. 단순해 보이는 에셋 추가지만, 그 뒤에는 게임의 진입 경험과 유저 engagement를 어떻게 설계할지에 대한 여러 의사결정이 있었다.
읽기 → -
셀카 검증 LLM 중복 호출 제거로 응답 속도 233배 개선
셀카 처리 요청이 33~68초에서 0.14초로 떨어졌다. 대략 233배 빨라진 거다. 이건 단순히 "응 좋아" 정도로 넘어가기엔 너무 극적인 개선이라 기록해 둘 가치가 있다.
읽기 → -
채팅 코어와 캐릭터 이미지를 함께 프로젝트에 추가한 경험
채팅 코어를 추가하면서 동시에 캐릭터 셀카 이미지를 프로젝트에 정식 자산으로 등재했다. 한 커밋에 기능(코드)과 미디어(자산)를 함께 담으면서, 프로젝트 구조를 한 단계 더 정리한 경험을 정리해본다.
읽기 → -
Bing 웹마스터 API로 크롤링 수집 자동화 구축
구글 검색 콘솔처럼 Bing도 자동화 없이는 운영이 힘들다. 사이트맵을 수동으로 제출하고, 크롤 상태를 매일 확인하는 건 반복적이고 오류가 나기 쉽다. 이번에 Bing Webmaster API를 통합해서 우리 콘텐츠 수집 체인을 한 단계 격상시켰다.
읽기 → -
블로그 피드 추가 후 사이트맵으로 크롤링 신호 최적화
블로그 피드를 포트폴리오에 새로 추가했다. 콘텐츠가 늘어났으니 검색 엔진도 이를 빨리 발견하고 색인해야 한다. 그래서 sitemap.xml을 갱신했는데, 단순한 파일 추가가 아니라 좀 더 의도적인 메타데이터 신호를 함께 설정했다.
읽기 → -
영문 포트폴리오에 블로그 피드 추가하며 배운 다국어 지원의 함정
포트폴리오 사이트 영문 버전(/en/)에 블로그 최신글 피드 섹션을 추가했다. 단순해 보이지만, 다국어 지원하는 사이트에서 기능을 추가할 때의 전형적인 실수를 피하는 과정이었다.
읽기 → -
포트폴리오 메인에 블로그 피드를 빌드 타임으로 연동한 방법
포트폴리오 사이트의 메인 페이지가 정적이라는 건 항상 신경 쓰였다. 블로그에선 꾸준히 기술 글을 올리고 있는데, 포트폴리오 방문자가 그 글들을 발견하려면 따로 블로그 섹션으로 들어가야 했다. 이번에 메인 페이지에 최신 블로그글 피드 섹션을 추가하기로 결정했다. 단순한 UI 개선처럼 보이지만, 포트폴리오-블로그 연동 구조를 어떻게 설계하느냐는 기술적 판단이
읽기 → -
자동화 판정에 교차검증 게이트를 더해 오류 비용 줄이기
claude 판정에 codex 런타임을 활용한 교차검증 게이트를 추가했다. codex_review.py를 중심으로 검증 로직을 정리하고, bot-action-worker, traffic-watcher, seo-monitor 같은 여러 자동화 시스템에 걸쳐 일관되게 적용한 작업이다.
읽기 → -
발행 진행 화면의 저조 상태 오독을 색상·경고·0건 표시로 개선
발행 진행 상황을 표시하는 스크립트에서 사용자가 상태를 오독할 여지가 있다는 걸 발견했다. 특히 저조한 상태일 때 시각적 신호가 혼란스러웠다. 이번에 상단 경고, 0건 구분, 그리고 상태별 색상 제어를 손봤다.
읽기 → -
GSC API 권한 범위 오류를 트래픽 감시 스크립트에서 수정한 과정
traffic-watcher 스크립트가 Google Search Console(이하 GSC) API와 통신하며 invalid_scope 에러를 던질 때 대응한 작은 수정이다. 권한 범위를 webmasters.readonly에서 webmasters로 확대했다. 단 한 줄 짜리 커밋처럼 보이지만, 그 안에 외부 API 통합 시 놓치기 쉬운 여러 패턴이 숨어 있
읽기 → -
OAuth 장애 후 인증 상태 자동 점검과 사고 기록으로 운영 체계 구축
OAuth 인증 관련 장애를 겪은 후 정기적인 상태 점검 자동화와 사후 분석 기록을 문서에 남겼다.
읽기 → -
iOS 의존성 고정과 Play Console 테스터 배포 자동화로 팀 빌드
이번엔 작은 것 같지만 팀 전체의 안정성을 지탱하는 두 가지 정비 작업을 한번에 처리했다. iOS 의존성 lock 파일 업데이트와 Play Console 테스터 자동 실행 스크립트 추가가 그것이다.
읽기 → -
IAP 로컬 결제 테스트 환경 구축으로 개발 속도 개선
IAP(In-App Purchase) 기능을 개발하고 있었는데, 매번 테스트할 때마다 실제 앱스토어에 연결하거나 사내 스테이징 환경을 거쳐야 하는 불편함이 있었다. 이 흐름을 개선하기 위해 Xcode의 StoreKit Configuration을 프로젝트에 추가했다.
읽기 → -
구절 API에 식별자 추가로 음성 변환 연동 가능해졌다
구절 응답 API에 pickId를 추가했다. 간단해 보이지만, 이 한 줄의 변경이 없으면 앱 서버에서 음성 변환 요청을 제대로 날릴 수 없었다.
읽기 →