전체 글(1360)
-
문서 갱신 스크립트가 작업 문서 8,000줄을 잘라냈는데 테스트는 계속 통과했다
새 기능을 붙일 때마다 요구사항, 설계, 테스트 시나리오 같은 작업 문서에 절을 하나씩 덧붙인다. 그날도 AI에게 문서 정리를 맡겼고, 문서는 파이썬 스크립트로 갱신됐다. 그런데 그 스크립트가 문서를 덧붙이는 대신 새 절만 남기고 나머지를 지워 버렸다.이 사실을 알아챈 건 사고가 난 커밋이 여러 개 푸시된 뒤였다. 자동 테스트는 그동안 계속 통과하고 있었다.테스트가 통과한다는 것과 문서가 멀쩡하다는 것은 서로 다른 이야기다.하려던 일기능을 하나 만들면 문서를 여러 개 고친다. 요구사항, 분석, 설계, 테스트 시나리오, 구현 기록, 테스트 결과, 남은 일 목록, 작업 로그까지 열 개 가까운 파일에 새 절을 붙인다.같은 날 이 작업을 몇 번 반복했다. 로그 조회 API를 만들고, 배포한 뒤 결과를 적고, 다..
2026.09.26 -
저장소 하나 추가하려고 매번 배포해야 했던 화면을 관리 UI로 바꾼 이유
Task Hub가 작업을 걸 수 있는 저장소 목록은 원래 DB에 쌓여 있었다. 문제는 그 목록을 늘리는 방법이 단 하나, DB 마이그레이션뿐이었다는 것이다. 저장소를 하나 추가하고 싶을 뿐인데 마이그레이션 파일을 만들고, 그걸 배포까지 돌려야 반영됐다. 등록이라는 가벼운 작업이 배포라는 무거운 절차에 묶여 있었다.처음에는 이게 그렇게 큰 문제로 안 느껴졌다. 저장소를 자주 추가하는 것도 아니고, 마이그레이션 한 줄 추가하는 거야 몇 분이면 되니까. 그런데 몇 번 반복하다 보니 이상한 지점이 눈에 들어왔다. "저장소 하나를 목록에 넣는다"는 일에는 코드 변경도, 스키마 변경도, 애플리케이션 로직 변경도 없다. 그냥 데이터 한 줄이 늘어나는 것뿐인데, 그걸 위해 코드 저장소에 커밋을 만들고 CI를 태우고 배..
2026.09.26 -
이미 만든 자격증명 만료 모니터링이 놓친 사각지대
만료 감시 장치를 만들어 뒀다고 해서 모든 자격증명이 그 감시 안에 들어와 있는 건 아니었다. 이번에 새벽 동기화 작업이 다시 실패하고 나서야, 감시 장치가 지키는 건 "목록에 적힌 것"뿐이라는 당연한 사실을 다시 확인했다.예전에 PAT 하나가 만료되면서 자동화가 새벽에 조용히 멈춘 적이 있다. 그 뒤로 만료일이 있는 값들을 미리 알려주는 감시 장치를 만들었다. 처음부터 새로 설계하지 않고, 이미 갖고 있던 TLS 인증서 만료 감시 구조를 그대로 옮겨 썼다. 감시 대상 목록은 `credentials.yaml`이라는 텍스트 파일로 두고, 값 자체는 절대 적지 않고 이름과 종류, 만료일, 알림 기준일만 남겼다. 만료 며칠 전에 알림이 오고, 갱신되면 억제 상태가 초기화되는 구조까지 그대로 재사용했다. 이 정..
2026.09.25 -
공공데이터 API를 운영에 붙인 뒤, 호출 한도부터 다시 설계한 이유
개발 환경에서 공공데이터 API 연동은 대체로 간단하다. 인증키를 발급받고, 요청 URL과 파라미터를 맞춘 뒤, 응답을 화면에 보여주면 된다.서울시 버스 도착정보도 처음에는 그 흐름으로 시작했다. 정류소를 검색하고, 사용자가 관심 있는 노선을 선택하면, 도착 예정 시간과 남은 정류소 수를 보여주는 기능이다.그런데 운영을 생각하는 순간 질문이 달라졌다.이 API는 하루에 몇 번까지 호출할 수 있을까?코드가 정상적으로 동작하는 것과 서비스가 하루 종일 동작하는 것은 다른 문제였다.1분마다 갱신하면 하루 1,440번이다버스 도착정보는 오래된 값이 큰 의미가 없다. 그래서 처음에는 즐겨찾기한 정류소를 1분마다 갱신하면 충분하다고 생각했다.계산은 단순하다.60분 × 24시간 = 하루 1,440회그런데 서울시 버스..
2026.09.25 -
Bash 허용 규칙을 문자열로만 짜고 실제 CLI로 검증하지 않았다가 두 번 틀린 이유
AI 작업 자동화 파이프라인에서는 AI Worker가 저장소 안에서 명령을 실행할 수 있어야 하지만, 그 명령이 파일을 바꾸거나 외부로 뭔가를 내보내는 일까지 하게 두고 싶지는 않았다. 그래서 실행 가능한 명령을 허용 목록으로 제한하고, 목록에 없는 명령은 거부하는 구조를 이미 가지고 있었다. 문제는 이 거부 판정이 지나치게 정직했다는 데 있었다. Task 자체는 요구된 작업을 끝까지 정상적으로 마쳤는데도, 그 과정에서 실행한 읽기 전용 `git log` 명령 하나가 허용 목록에 없다는 이유만으로 거부되자 Task 전체가 FAILED로 기록됐다. 실제로는 아무 해도 끼치지 않은 명령이 작업 전체의 성패를 뒤집은 셈이었다.처음에는 간단한 결함이라고 생각했다. `git log` 같은 읽기 전용 조회 명령을 ..
2026.09.24 -
내가 쓰던 AI를 챗봇에 연결했더니 내 작업 환경까지 따라왔다
평소 Claude Code와 Codex를 이용해 프로그램을 개발하고 있다. 그런데 이 AI들을 내가 사용하는 데서 그치지 않고, 텔레그램이나 다른 메신저에서도 질문하고 답변받을 수 있도록 연결하면 어떨까?이미 잘 작동하는 AI가 있으니 새로운 AI 서비스를 처음부터 개발할 필요 없이 기존 프로그램을 연결하면 될 것 같았다.하지만 실제로 연결해 보니 예상하지 못했던 문제가 발생했다.1. 만들고 싶었던 것은 하나의 AI 상담 창구예를 들어 집에서 PC로 개발 작업을 하다가 외출했다고 생각해 보자.밖에서도 텔레그램으로 질문을 보내고 AI의 답변을 받을 수 있다면 편리할 것이다. 여기에 다른 메신저나 웹 채팅까지 연결하면 여러 곳에서 동일한 AI 서비스를 이용할 수 있다.여러 곳에서 하나의 AI 이용하기여기서 ..
2026.09.24