개발
코드 / 아키텍처 / 디버깅
-
실시간 주식 시세를 엑셀 인터페이스로 조회하는 도구 제작기
실시간 주식 시세 정보를 엑셀 같은 인터페이스로 조회할 수 있는 도구를 만들었다. 백엔드 API와 프론트엔드 페이지를 깔끔하게 분리해서 구성했는데, 이 과정에서 몇 가지 중요한 설계 결정들이 있었다.
읽기 → -
모니터링 알림 피로를 30분 윈도우 상태 전환 가드로 해결
인증 체크 스크립트의 알림 폭탄 문제를 30분 윈도우 기반 상태 전환 가드로 해결했다. 단순해 보이지만 모니터링 시스템 신뢰도에 영향 주는 작은 하지만 중요한 변경이다.
읽기 → -
인증 헬스체크의 캐시 의존을 실시간 핑으로 교체해 감지 사각지대 제거
인증 상태를 캐시에 의존해 판정하던 스크립트를 실제 1회 핑 방식으로 바꿨다. 거짓 정상 상태가 감지되지 않던 사각지대를 제거한 작업이다.
읽기 → -
gov 분류기를 정책 기준에 맞게 상위 모델로 교체한 이유
classification 모델을 Haiku에서 Sonnet으로 변경했다. 간단해 보이는 한 줄 변경이지만, 뒤에 정책 준수와 실제 운영 사이의 갈등이 있었다.
읽기 → -
리뷰 루프 함수에 모델 선택 인자를 추가해 유연성 확보
리뷰 루프의 rewrite_post 함수에 model 인자를 추가했다. 기본값은 여전히 Sonnet으로 유지했는데, 이 작은 변경이 생각보다 고민이 많이 들어간 결정이었다.
읽기 → -
LLM 판단 모듈별 모델 티어 차등 상향으로 수익성 개선
LLM을 사용한 판단(judgment) 로직에서 모델 티어를 상향했다. 기존의 더 가벼운 모델에서 Opus(가장 강력한 모델)와 Sonnet(중급 모델)으로 올렸고, 모듈별로 필요한 수준에 따라 차등 적용했다.
읽기 → -
insights를 blog로 통합할 때 URL과 데이터를 모두 지키는 법
기존 insights 서비스를 blog로 통합하면서 URL 무결성을 지키고 사용자 영향을 최소화하기 위해 nginx 리다이렉트와 자동화된 마이그레이션 스크립트를 함께 구축했다.
읽기 → -
iOS 광고 추적 권한 리젝 대응과 기능 결함 일괄 수정
한 번 App Store 심사에 걸리면 진짜 힘들다. 이번 커밋은 그 고민을 모두 담은 작업이었다. iOS의 ATT(Apple Tracking Transparency) 리젝에 맞춰 권한 선언을 정리하고, 동시에 발견된 여러 기능 결함까지 묶어서 수정했다.
읽기 → -
SMS 포워딩 발신번호를 여러 개 등록할 수 있게 개선한 과정
SMS 포워딩 기능을 다루다 보면 "특정 발신번호에서 온 메시지만 전달해야 한다"는 요구사항이 자주 나온다. 초기에는 발신번호 1개만 지원했는데, 실제 사용하는 사람들은 여러 개를 등록해야 하는 상황이 자주 발생했다. 은행 여러 곳, 배송업체 여러 곳, 각각 다른 번호로 오는 중요한 메시지들을 모두 한 번에 필터링하려는 거였다.
읽기 → -
대시보드 일별 정산 데이터를 자정에 최종 확정하도록 개선
어제 데이터를 자정에 확정하는 작업을 했다. 겨우 한 줄처럼 들리는 커밋이지만, 그 안에는 daily 통계 시스템에서 자주 마주치는 시간대 처리의 까다로움이 담겨 있다.
읽기 → -
앱스토어 마이크 권한 누락으로 배포가 막혔던 이야기
App Store 검증 오류(ITMS-90683)가 떴을 때, 배포를 며칠 앞두고 있었다. 마이크 권한 설명이 빠져 있다는 오류였는데, 단순히 Info.plist에 한 줄 추가하는 것만은 아니었다.
읽기 → -
배포 스크립트 경로를 모노레포 표준에 맞게 바로잡다
publish.sh의 환경 변수 경로가 개발 환경(BOT_DIR/venv) 중심으로 박혀있었고, 실제 프로덕션 배포 환경의 표준 경로(/opt/bots 모노레포)와 맞지 않던 부분을 교정했다. 작아 보이지만 배포 파이프라인 일관성과 팀 온보딩에 생각보다 큰 영향을 주는 작업이었다.
읽기 → -
브레인스토밍 시스템에 SEO 실행 타입을 추가한 이유
brainstorm.py에 SEO 실행 유형을 추가했다. 이게 뭐 별 것 아닌 거 아닐까 싶을 수 있는데, 의외로 여기에 팀 리딩 관점에서 고민할 게 많다.
읽기 → -
브레인스토밍 AI 환각 제거로 데이터 기반 신뢰성 확보
브레인스토밍 기능에서 AI가 생성한 콘텐츠를 실제 데이터 소스에 기반하도록 수정했다. 단순해 보이지만 생성 AI를 활용하는 모든 시스템에서 겪을 수 있는 전형적인 문제 — 그리고 늘 뒷전으로 밀리는 작업이었다.
읽기 → -
크롤링 데이터에 AI 콘텐츠 자동 생성 차단 로직 추가
brainstorm 실행 스크립트에서 크롤 기반 사이트로부터 수집한 데이터에 대해 자동으로 AI 콘텐츠를 생성하지 않도록 막는 로직을 추가했다. 얘기는 간단하지만, 뒤에는 여러 문제 정황이 있었다.
읽기 → -
채널 메시지로 훅을 자동 실행하는 리스너 설계기
특정 채널에서 메시지가 올라오면 자동으로 훅을 실행하는 기능을 listener에 추가했다. 이 작업은 작지만 팀의 워크플로우를 꽤 바꾸는 지점이라 회고 삼아 정리해본다.
읽기 → -
Codex 사용량 모니터를 CLI와 Discord 알림으로 만든 이유
그 날 팀이 모니터링 대시보드를 원했다. Codex 같은 대규모 도구의 사용량을 실시간으로 추적해야 한다는 요구였다. 숫자만 알아야 하는 게 아니라, 팀의 이목이 닿는 곳에서 바로 알림이 떴으면 했다. 그래서 만들었다: CLI 도구와 Discord 연동이 함께하는 사용량 모니터.
읽기 → -
구독 티어를 Free·Premium·Family로 재편하며 결제와
구독 서비스의 tier를 기존 구조에서 Free/Premium/Family 세 가지로 재편했다. 간단한 변경처럼 보이지만 실제로는 권한 관리 모델부터 결제 로직, 다국어 처리까지 여러 계층을 함께 조정해야 하는 구조적 작업이었다.
읽기 → -
성경 읽기 앱의 TTS 음성을 자연스러운 남성 음성으로 업그레이드
일일 성경 읽기 서비스의 TTS(Text-To-Speech) 음성 엔진을 Google Chirp3-HD/Orus(차분한 남성) 음성으로 변경했다. 단순한 음성 업그레이드처럼 보이지만, 이 작업엔 사용자 경험, 품질 기준, 그리고 장기적 기술 선택이 담겨 있다.
읽기 → -
블로그 발행 시 Discord 알림 자동화로 팀 가시성 개선
블로그 포스트가 발행될 때마다 팀 채널로 자동으로 알림이 날아오도록 했다. 단순해 보이지만 이런 작은 자동화가 팀의 작업 가시성과 반응성을 어떻게 바꾸는지 되짚어본다.
읽기 →