본문 바로가기
반응형

전체 글36

AI 요금 폭탄의 범인은 글이 아니라 이미지였다 AI 요금은 나간다. 이건 안다. 문제는 어디서 제일 많이 나가는지를 몰랐다는 것이다. 나는 당연히 글 쓰는 데서 나갈 거라고 생각했다.확인해본 적은 없었다. 청구서를 뜯어보니 아니었다. 제일 큰 건 이미지였다. 전에 토큰 요금을 다뤘는데, 그때는 글 안에서 어떻게 요금이 매겨지는지를 봤다. 이번엔 한 칸 위에서 본다.글이냐 그림이냐, 그리고 어느 등급을 쓰느냐다.글보다 그림이 비쌌다 2026년 6월이었다.매일 글을 한 편씩 만드는 자동화였는데, 글을 쓰고 어울리는 그림도 하나 만들어 같이 올린다.그림은 직접 그리는 게 아니라 AI에게 만들어달라고 한다. "이런 분위기의 그림 하나" 하면 만들어준다.사진을 사 오거나 직접 찍을 필요가 없으니 편해서 그렇게 했다. 내 머릿속 계산은 이랬다. 글은 몇 천 자.. 2026. 9. 11.
AI가 실패했는데 이용권은 차감됐다, 환불 처리를 빠뜨린 자리 2026년 6월, 사용자가 이용권을 쓰고 결과를 못 받은 일이 있었다. 환불 처리를 붙여놨는데도 그랬다. 더 나쁜 건 실패했다는 것조차 안 보였다는 점이다. 화면은 그냥 계속 돌아가고 있었다.곧 나오겠거니 하고 기다릴 수밖에 없는 화면이다. 기다리다 앱을 껐다 켜면 이용권만 하나 줄어 있었다.이건 콘솔 설정 같은 것과 다르다. 내가 짠 흐름에 구멍이 있었다. 그리고 그 손해를 사용자가 봤다.오래 걸리는 작업은 따로 돈다 이 기능은 결과가 나오기까지 수십 초가 걸린다. LLM 이 글을 길게 써야 해서다.짧은 답이면 몇 초에 끝나는데, 리포트 한 편은 그렇게 안 된다. 이런 건 기다리게 하면 안 된다.앱을 켜둔 채로 화면을 붙잡고 있으면, 잠깐 다른 앱을 보거나 화면이 꺼지는 순간 끊긴다. 그래서 일감을 접.. 2026. 9. 10.
무료 API 한도가 끝났는데 프로그램은 38번을 더 불렀다 무료 API 한도가 끝나서 조용히 끊긴 적이 두 번 있다. 한 번은 검색이었고 한 번은 이미지 올리기였다.둘 다 어느 날부터 안 됐는데, 안 된다는 걸 한참 뒤에 알았다. 그것도 우연히 알았다. 더 나빴던 건 그 사이에도 프로그램은 계속 돌고 있었다는 것이다.멈추지도 않고, 알려주지도 않고, 아무 일 없다는 얼굴로 그냥 계속 돌았다.하나는 2026년 5월 초, 하나는 같은 달 말이었다.무료 한도가 뭔가 프로그램이 남의 서비스를 갖다 쓸 때 API라는 걸 쓴다. 쉽게 말하면 기계가 기계에게 물어보는 창구다. 사람이 검색창에 치는 대신, 프로그램이 그 창구로 "이거 검색해줘"라고 보내고 결과를 받는다.이 창구를 쓰려면 열쇠가 하나 필요하다. 전에 쓴 API 키가 그것이다.누가 얼마나 썼는지를 그 열쇠로 센다.. 2026. 9. 9.
자동 포스팅 실패가 조용했다, 크론이 헛것을 발행한 이유 자동 발행을 걸어두면 실패해도 조용하다. 이게 이 글의 전부다. 사람이 하면 "어? 이거 왜 이러지" 하고 멈추는데, 프로그램은 멈출 줄을 모른다.이상해도 그냥 끝까지 간다. 2026년 5월 이틀 사이에 두 번 사고가 났다. 하나는 엉뚱한 걸 올렸고, 하나는 빈 걸 올렸다.둘 다 에러는 안 났다.그리고 둘 다 내가 발견한 게 아니다. 나중에 발행된 글을 열어보다 알았다.크론이 뭔가 크론(cron)은 정해진 시각에 프로그램을 깨우는 장치다."매일 아침 7시에 이걸 돌려라" 같은 걸 등록해둔다. 알람시계라고 보면 된다. 시간이 되면 울리고, 프로그램이 일어나서 일을 한다.등록하는 방식은 이렇게 생겼다. 별표 다섯 개로 분·시·일·월·요일을 적는다. 0 7 * * * 매일 아침 7시0 22 * * 1-.. 2026. 9. 7.
AI가 없는 뉴스를 지어냈다, 할루시네이션은 이렇게 생긴다 블로그 글쓰기를 AI에게 맡겼다가 할루시네이션을 그대로 발행한 적이 있다.주제를 정하고, 자료를 찾고, 글을 써서 올리는 것까지 전부 자동으로 돌리던 때다.그러다 없는 뉴스를 지어낸 글이 그대로 발행됐다. 할루시네이션이다. 할루시네이션은 AI가 없는 사실을 그럴듯하게 만들어내는 것을 말한다.거짓말과 다른 점은 본인이 지어내는 줄 모른다는 것이다. 아는 것과 지어낸 것이 똑같은 말투로 나온다. 그리고 이 사고에는 내 잘못이 하나 더 있었다. 나는 그 글을 안 읽었다. 자동이니까.무엇을 지어냈나 2026년 7월 15일에 잡았다. 국제 경제 관련 글이었는데, 나중에 하나씩 확인해보니 이랬다. 글에 있던 것실제회원국 숫자틀림회원국 명단에 들어간 나라 셋회원이 아님 (한 나라는 가입을 거부한 적이 있다)지역별 교.. 2026. 9. 6.
500 에러가 나는데 로그가 없었다, 단서는 응답 시간뿐이었다 2026년 8월 3일, 앱에서 500 에러가 뜨기 시작했다. 한 명이 아니라 여러 명이었다.사용자 화면에는 "불러오지 못했어요"라고만 나온다. 서버 기록을 열어봤다. 아무것도 없었다.정말로 한 줄도 없었다. 에러 0건, 로그 0건. 그런데 500은 실제로 나가고 있었다. 전에 에러 메시지 읽는 법을 썼었다. 이번엔 읽을 메시지 자체가 없었다.500 에러가 뭔가 웹에서 뭔가 잘못되면 숫자가 나온다. 크게 두 종류다. 번호대뜻예400번대요청한 쪽 잘못404 없는 주소 · 401 로그인 안 함 · 403 권한 없음500번대서버 잘못500 서버에서 뭔가 터짐 그러니까 500 에러는 "내 서버가 잘못했다"는 뜻이다. 사용자가 뭘 잘못 누른 게 아니다.문제는 뭐가 터졌는지는 이 숫자가 안 알려준다는 것이다. 그건 .. 2026. 9. 5.
카카오 로그인 KOE205 KOE006, 한 번 실패하면 계속 실패한다 2026년 7월 20일 아침, 소셜 로그인을 붙이는 데 16분 동안 세 번 막혔다.기록을 보면 9시 4분 · 9시 13분 · 9시 20분이다.나온 에러는 순서대로 KOE205, KOE006, 그리고 아무것도 안 나옴이었다.재밌는 건 막힐 때마다 에러가 달랐다는 것이다.KOE205가 나오길래 고쳤더니 KOE006이 나왔고, 그걸 고쳤더니 이번엔 아무 반응이 없었다. 셋 다 원인이 달랐다. 고친 자리도 전부 다른 파일이었다. 그런데 셋을 꿰는 게 하나 있었다.KOE205 — 권한이 없는 걸 달라고 했다 첫 번째는 로그인 버튼을 누르자마자 KOE205로 튕겼다. 화면에는 "잘못된 요청"이라고만 뜬다. 뭐가 잘못됐는지는 안 알려준다. 어느 항목이 문제인지도, 어디를 고치라는 말도 없다. 더 헷갈린 건 Nave.. 2026. 9. 4.
영수증 한 장으로 여러 명이 받고 있었다, 인앱결제 검증의 구멍 2026년 8월 2일 새벽에 보안 점검을 한번 돌려봤다.기록을 보면 1시 25분과 1시 36분에 고친 흔적이 남아 있다.11분 사이에 구멍이 세 개 나왔다는 뜻이다. 셋 다 돈이 걸린 것이었다. 고백하자면 그때까지 나는 결제는 검증하고 있다고 믿고 있었다.① 영수증 한 장으로 여러 명이 받고 있었다 안드로이드 앱에서 뭘 사면 결제는 Google Play가 처리하고 영수증을 준다.서버는 그걸 받아서 진짜 결제된 게 맞는지 Google Play 에 물어보고, 맞으면 이용권을 준다.내 서버는 Cloudflare Workers 위에 올라가 있다. 이 확인을 하는 곳이 거기다. 내 서버도 그렇게 하고 있었다. 그런데 물어본 게 "결제된 게 맞습니까" 하나뿐이었다. 스토어는 "맞습니다"라고 답한다. 누가 샀는지는.. 2026. 9. 3.