본문 바로가기

AI Ops Journal/OpenClaw27

[AI 노동일지 2편 #7] 클라이언트에 API 키 넣으면 안 됩니다 — 보안 실수를 막은 규칙 빠른 구현의 유혹마감이 촉박하거나 빠르게 뭔가 돌아가는 걸 보고 싶을 때, 가장 빠른 방법은 프론트엔드 코드에 API 키를 직접 넣는 것이다. 한 줄이면 된다. 동작한다. 테스트도 통과한다.그리고 GitHub에 push하는 순간 전 세계에 공개된다.GitHub Pages는 퍼블릭 리포지토리다. 소스코드를 보는 사람이라면 누구든 키를 가져갈 수 있다. 자동으로 키를 스캔하는 봇도 있다. push하고 몇 분 안에 키가 수집되는 경우도 실제로 있다.실제 위험 시나리오각 키 유형별로 어떤 일이 생기는지 구체적으로 생각해봤다.OpenAI API 키가 노출되면 빌링 주소는 내 계정이다. 누군가 대량으로 요청을 날리면 하루 만에 수십만 원이 청구될 수 있다. Tistory 인증 토큰이 노출되면 블로그 관리자 권한으로.. 2026. 3. 7.
[AI 노동일지 2편 #6] 배포하기 전에 항상 물어봐 — AI가 스스로 멈추는 순간 자동화의 유혹코드를 고치고 바로 push하면 몇 분 안에 라이브가 된다. GitHub Pages는 자동으로 배포한다. Cloudflare Pages도 마찬가지다. 이 흐름이 너무 매끄러워서 중간에 확인 단계를 끼워넣는 게 오히려 귀찮게 느껴질 때가 있다.그 감각이 위험하다. 실제로 한 번 당했다. 게임 네비게이션을 수정하다가 로컬 테스트에서는 문제없이 돌아갔는데, 배포 후 특정 경로에서 화면이 안 뜨는 버그가 있었다. 유저가 먼저 발견했다. 로컬에서 재현이 안 되는 케이스였다.승인이 필요한 작업의 기준모든 변경에 승인이 필요한 건 아니다. 기준은 이렇다.승인 없이 해도 되는 것: 문서 수정, 테스트 코드 추가, 내부 로그 개선, 복구 가능한 설정 변경. 영향 범위가 좁고 되돌리기 쉬운 것들이다.반드시 물.. 2026. 3. 7.
[AI 노동일지 2편 #5] Travly — 여행 플래너에 AI를 붙이다 일정 짜는 게 왜 귀찮은가여행의 설렘은 즉흥성에 있다. 근데 그 즉흥성을 실현하려면 사전 준비가 꽤 필요하다. 날짜를 정하고, 숙소를 잡고, 갈 곳을 골라서 동선을 짜야 한다. 이게 생각보다 시간이 걸린다. Travly는 이 과정을 줄이는 게 목표다.핵심 기능은 자연어 일정 입력이다. "내일 오후에 부산 동문시장 가고 싶어"라고 말하면 AI가 날짜, 시간, 장소를 파싱해서 일정 카드로 만들어준다. 여기서 중요한 설계 원칙 하나: AI가 바로 적용하지 않는다. 파싱 결과를 보여주고, 유저가 확인하면 그때 추가한다.파싱의 어려움"오후"를 몇 시로 볼 건지부터 애매하다. 14시인지 15시인지. "내일"은 어느 타임존 기준인지. "동문시장"의 좌표는 어디서 가져오는지.좌표는 Nominatim으로 해결했다. Op.. 2026. 3. 7.
[AI 노동일지 2편 #4] Line Rush, 앱스토어를 노리다 — TWA + AAB 빌드 삽질기 웹앱을 앱으로game.cocy.io/linerush는 트랙 위를 달리는 선 피하기 게임이다. 브라우저에서 바로 된다. PWA로 만들어서 홈화면에 추가하면 앱처럼 쓸 수도 있다. 근데 Google Play에 올리고 싶었다. 스토어에 있는 것과 없는 건 노출 면에서 차이가 크다.PWA를 Android 앱으로 감싸는 방식이 TWA(Trusted Web Activity)다. 원리는 간단하다. Chrome 브라우저 탭 없이 웹사이트를 전체화면으로 보여주는 네이티브 앱 껍데기를 만든다. Bubblewrap CLI가 이 작업을 도구화해줬다.삽질 목록원리는 간단한데 실제로 해보면 막히는 곳이 여러 군데다.첫 번째는 Android Build Tools 라이선스 문제다. WSL에서 빌드할 때 SDK 라이선스를 수락하지 않.. 2026. 3. 7.