# 월 5달러로, 제 자신의 도메인에 AI 워크숍을 구축했습니다.

> https://bookfactory.kr/c/news/9859
> 게시판: 뉴스
> 작성자: admin
> 작성일: 2026-08-17T15:55:00.164Z

---

![見出し画像](https://assets.st-note.com/production/uploads/images/303083425/rectangle_large_type_2_07908d08aa3367f36e4ac57b86b896a2.png?width=1280)

안녕하세요. 켄타입니다.

클라우드플레어가 “클라우드플레 OS”를 공개했습니다. 회사 내 수천 명의 직원들이 사용하고 있는 AI 작업장을 그대로 오픈 소스로 공개한 것입니다.

ニュースとしては「へえ」で終わる話かもしれません。ですが中身を読んでいくうちに、これは他人事ではないなと思いました。そこで実際に、自分のドメインに Cloudflare OS を建ててみました。

클라우드플레어에 지불하는 비용은 월 5달러입니다. 작업은 반나절 동안 소요되었습니다.

이 글에서는 무엇을 성취했는지, 어디에서 막혔는지, 그리고 실제로 짓기 시작했을 때 처음 알게 된 점들을 이야기합니다. 짓고 싶어하는 분들께는 절차의 핵심적인 부분을, 그렇지 않은 분들께도 가져갈 수 있는 자료들을 준비했습니다.

## そもそも、これは何なのか

먼저, Cloudflare OS가 무엇인지 명확히 하겠습니다.

한마디로 말해서, 자신의 회사의 상황을 알고, 자신의 회사 시스템을 안전하게 접근할 수 있는 AI의 클라우드 기반 작업장입니다.

ChatGPT와 Claude의 차이점은 두 가지가 있습니다.

첫째, 회사의 맥락을 처음부터 가지고 있다는 점입니다. 회사 내부 용어와 업무 절차를 “기술”로 등록해두면 AI가 이를 전제로 작동하므로, 매번 설명할 필요가 없습니다.

두 번째는 내부 시스템에 접근하는 것을 의미합니다. GitHub, Notion, Slack, Google Drive와 같은 서비스에 연결되어 AI가 직접 읽고 쓸 수 있습니다.

물론, 이렇게 생각할 수 있을 겁니다. “AI에게 내부 시스템에 접근하게 한다니 무섭다”고.

그 공포에 어떻게 대답할 것인가 하는 것이 바로 이 제품의 전부입니다. 다음 그림이 그 대답의 형태입니다.

![画像](https://assets.st-note.com/img/1786602997-7cPmG9e0fEi1hrTCQ84l5Yaw.png?width=1200)

사용자와 AI 사이에, 그리고 AI와 내부 시스템 사이에 각각 관문이 설정되어 있습니다. 앞쪽이 Cloudflare Access(누가 들어올 수 있는가), 뒤쪽이 Gatekeeper(AI가 무엇을 제어하는가)입니다. AI는 내부 시스템에 직접 연결하지 않고, 반드시 관문을 거쳐야 합니다.

또 다른 특징이 있습니다. 이 작업장에서는 한 분 한 분이 자신만을 위한 앱을 만들 수 있습니다. “지출 내역 목록을 출력하는 도구”와 같은 것을 AI에게 만들어 사용하고, 해당 앱은 이용자마다 완전히 격리된 상태에서 작동합니다.

왜 그렇게 복잡한 작품을 만드는 걸까. 그 이유는 10년 전으로 거슬러 올라갑니다.

## 열 년이 너무 지나 버린 사람이 돌아왔다.

먼저 배경을 한 가지만 설명드리겠습니다. 이를 알면 Cloudflare OS라는 제품이 완전히 다르게 보일 것입니다.

클라우드플레어 OS를 설계한 기술자는 켄톤 바르다입니다. 현재 클라우드플레어 OS가 작동하는 기반이자 클라우드플레어 워커스 그 자체를 만든 사람입니다.

그 사람은 2015년에 Sandstorm.io라는 스타트업을 운영하고 있었습니다. 제시했던 이념은 “앱을 사용자별, 문서별로 완전히 격리된 상태에서 실행하는” 것이었습니다.

그 회사는 성공하지 못했습니다. 이유는 단순한데, 당시 기술로는 격리 비용이 너무 높았기 때문입니다. 한 사람 한 사람에게 전용 실행 환경을 제공하는 등 지나치게 사치스러워서 비용 대비가 맞지 않았습니다.

그리고 10년이 흘렀다.

클라우드플레어 워커스가 사용하는 V8 아이솔레이트라는 기술 덕분에 격리의 비용은 약 100분의 1 수준으로 줄었습니다. 브라우저가 탭 단위로 JavaScript를 격리하는 것과 같은 기술을 서버 측에서 활용하는 방식입니다. 개별적으로 전용 서버를 구축하는 것보다 비용 차이가 큽니다.

단지 싸졌을 뿐만 아니라, 당시에는 존재하지 않았던 인공지능 에이전트가 나타났습니다.

AI 에이전트는 인간 직원과는 다른 특성을 지닙니다. 지시를 오해하고, 읽어서는 안 되는 내용을 읽습니다. “수정했습니다”라고 보고하면서 수정하지 않은 경우가 있습니다.

클라우드플레어는 이를 결함으로 취급하지 않았습니다. 기본적으로 그것을 전제로 삼기로 한 것입니다. 에이전트는 신뢰할 수 없다는 전제하에, 실수로 잘못되어도 피해가 나지 않도록 설계하면 된다고 생각한 것입니다.

여기야말로 클라우드플레어 OS의 설계의 출발점입니다. 이 “신뢰하지 않는” 접근 방식이 어떻게 구현되었는지는, 이 글의 후반부에 Gatekeeper의 메커니즘으로 자세히 살펴보겠습니다.

자, AI가 신뢰할 수 없는 노동자라고 한다면, 격리는 더 이상 사치품이 아닌 필수적인 요소가 됩니다. 10년 전에 너무 일찍 나왔던 아이디어가, 전제 조건의 변화에 의해 다시 부활한 것이죠. Cloudflare OS는 그 재도전을 통해 탄생했습니다.

![画像](https://assets.st-note.com/img/1786602997-WwFa3gmyZrp7HJonD2Q6cuYh.png?width=1200)

## 게이트키퍼는 열쇠가 아닌, 리드를 넘겨주는 존재이다.

이곳이 클라우드플레어 OS의 핵심입니다. 전체를 관통하는 원칙은 공식 블로그의 해당 문구에 나타나 있습니다.

> 
> 
> 에이전트들은 아무것도 없는 상태로 시작한다.
> 

에이전트는 제로 권한부터 시작하며, 아무것도 건드리지 않는 상태가 초기 설정이 되어 허용된 것들만 건드려질 수 있게 된다.

우리가 평소에 하는 것을 기억해 주세요. AI에게 GitHub에 접근시키고 싶을 때, 어떻게 할까요? 접근 토큰을 발급하여 그대로 전달합니다.

지금 무슨 일이 일어나고 있는지. 토큰은 그 토큰을 가진 사람의 권한 그 자체입니다. 넘겨주는 순간부터 AI는 당신과 똑같은 모든 것을 할 수 있게 됩니다. 이슈를 읽는 것만으로도, 리포지토리를 삭제할 권한까지 함께 넘겨주는 것입니다.

게이트키퍼는 이것을 하지 않는다.

![画像](https://assets.st-note.com/img/1786602998-tJ3yKdTPGXUproOLM84zcbnv.png?width=1200)

게이트키퍼는 서비스마다 설정하는 작은 중계 역할을 합니다. 토큰은 게이트키퍼가 쥐고 있으며, AI에는 전달하지 않습니다. AI가 받는 것은 “이 작업만 수행할 수 있다”는 권한의 묶음입니다.

구체적으로는 이렇게 진행됩니다.

항목 | 기존 방식 | 게이트키퍼 |
| AI가 가진 것 | 접근 토큰 본체 | “이슈 목록을 읽는” 능력 |
| 가능한 범위 | 토큰의 권한 전부 | 허가된 작업만 |
| 대상 제한 | 불가능 | 이 리포지토리만 등으로 지정 가능 |
| 위험한 작업 | 그대로 실행되며 | 인간의 승인을 挟을 수 있는지 여부 확인 |
| 무엇을 읽었는지 | 모름 | 전부 기록됨

예를 들어 GitHub의 경우 “ENG 팀의 공개 이슈를 읽는” 것만 허용하고 풀 리퀘스트 병합에는 인간의 승인을 필수로 하는 설정을 할 수 있습니다. AI는 토큰 문자열을 한 번도 보지 않습니다.

열쇠는 그 권한을 의미합니다. 능력은 연결된 리드줄과 같습니다. 개에게 리드줄을 착용시켜 산책시키는 것과 집 열쇠 묶음을 주고 “산책시켜 와”라고 말하는 것의 차이입니다.

### 더불어 읽은 내용이 기록되어 회전한다.

게이트키퍼에는 또 하나, 관찰 로그라는 기능이 있습니다.

에이전트가 읽은 리소스를 모두 기록하고, 그 기록이 결과물에 연결되도록 합니다. 누군가가 결과물을 열려고 할 때, 문지기가 “이 사용자가 원본 데이터를 볼 권한이 있는지” 확인한 후 표시합니다.

이는 현재 많은 조직이 인지하기 시작하는 문제에 대한 해결책입니다. AI는 여러 시스템을 횡단하여 데이터를 결합할 수 있습니다. 이렇게 결합된 데이터는 각각 별도로 권한 관리를 해왔던 정보들이 AI의 출력이라는 형태로 한 곳에 모이게 되며, 그 출력이 원본 데이터를 볼 권한이 없는 사람에게 전달됩니다. AI는 권한의 허점을 만듭니다.

![画像](https://assets.st-note.com/img/1786602998-qgIG6SpA7nxsK3UQ1LEDNkdi.png?width=1200)

관찰 기록은 결과물에 대한 출처를 명확히 함으로써 이 샛길을 막아줍니다.

정보를 결과물에 적용한다. 꽤 흥미로운 발상입니다.

## 시도해 보겠다.

이제 실제 작업이 시작됩니다.

이미 클라우드플레어에서 도메인을 하나 운영하고 있었기 때문에, 해당 도메인의 서브도메인에 구축하기로 했습니다. 이 글에서는 해당 서브도메인 구축 방법을 설명합니다. 사용할 저장소는 다음과 같습니다.

# Cloudflare OS Starter

## 개요

Cloudflare OS Starter는 Cloudflare의 네트워크 인프라를 기반으로 구축된, 개발자를 위한 최적화된 운영체제입니다. 이 배포판은 웹 애플리케이션, API 및 기타 온라인 서비스를 구축하고 배포하는 데 필요한 모든 것을 제공합니다. Cloudflare OS Starter는 보안, 성능 및 확장성을 갖춘 개발 환경을 제공하도록 설계되었습니다.

## 주요 기능

*   **Cloudflare 네트워크 통합:** Cloudflare의 글로벌 네트워크를 통해 웹 애플리케이션의 성능과 가용성을 향상시킵니다.
*   **Docker 기반:** Docker를 사용하여 애플리케이션을 컨테이너화하고, 개발, 테스트 및 배포 프로세스를 간소화합니다.
*   **자동화된 구성:** Cloudflare의 자동화 도구를 사용하여 애플리케이션의 구성 및 배포를 자동화합니다.
*   **보안 기능:** Cloudflare의 보안 기능을 통해 웹 애플리케이션을 공격으로부터 보호합니다.
*   **모니터링 및 로깅:** 애플리케이션의 성능을 모니터링하고 문제를 진단하기 위한 다양한 모니터링 및 로깅 도구를 제공합니다.

## 설치 및 설정

Cloudflare OS Starter를 설치하고 설정하는 방법은 [Cloudflare OS Starter 공식 문서](https://developers.cloudflare.com/os/starter/)를 참조하십시오.

## 추가 정보

*   **Cloudflare OS:** [https://developers.cloudflare.com/os/](https://developers.cloudflare.com/os/)
*   **Cloudflare Docs:** [https://developers.cloudflare.com/](https://developers.cloudflare.com/)

도메인을 보유하지 않은 경우, 한 번의 클릭으로 `workers.dev`의 주소로 구축할 수 있습니다.

https://os.cloudflare.app/deploy

다만,こちらは제가 직접 시도해 본 것이 아니므로 작동 여부를 보장할 수 없습니다. 로그인 설정이 어떻게 되는지, 지은 직후에 반드시 제 눈으로 직접 확인해 주십시오. 이유는 “짓기 전에 확인해ほしい 것” 항목에 설명되어 있습니다.

### 필요했던 것

노동자 급여는 월 5달러입니다. 이는 필수입니다.
제로 트러스트는 무료 플랜으로 충분합니다.
R2는 활성화가 필요합니다. 이미 사용 중이라면 불필요합니다.
도메인은 Cloudflare로 운영 중인 것 중 하나입니다.
Node.js 24와 pnpm 11은 개인 환경에서 사용합니다.

Workers Paid는 Dynamic Worker Loader라는 기능을 사용하기 때문에 필수적입니다. AI가 만든 앱을 즉석에서 읽어들여 격리된 상태에서 실행하는 부분으로, 이 제품의 핵심적인 부분이므로 제거하면 배포가 실패합니다. 무료 플랜으로 배포를 시도하면 실패합니다.

### 절차의 골격

- 근로자 급여를 인상으로 업데이트합니다.
- 제로 트러스트를 활성화한다.
- 액세스 애플리케이션을 만들어 보겠습니다.
- 저장소를 가져와 의존성을 추가합니다.
- deployment.jsonc에 값을 입력하세요.
- pnpm check로 검증하고 pnpm deploy 실행

![画像](https://assets.st-note.com/img/1786602998-SOpvlHsWZmLKbeiwIXh4T8R9.png?width=1200)

배포가 정상적으로 완료되면 워커가 4개, KV가 3개, R2 버킷이 1개, 그리고 DNS 레코드와 TLS 인증서가 자동으로 생성됩니다. 제 경우에는 배포 자체는 약 3분 정도 소요되었습니다.

## 막다른 골목에 갇힌 듯한 기분이었다.

이 부분은 본론입니다. 총 18군데에서 막히는 부분이 있었습니다. 하지만 전부 나열하면 읽는 것조차 피곤할 뿐입니다. 나중에 세우는 것이 더 막히고, 알아두면 시간이 절약되는 5가지로 압축하여 설명하겠습니다.

클라우드플레어 측 설정의 실제 화면을 따라하는 절차는 별도 기사에 요약했습니다. 설치하면서 옆에 두고 사용해 주세요.

어느 날, 나는 ‘카호’의 첫 단편 소설집 ‘어쩌면’을 읽고 있었다.

‘어쩌면’은 ‘카호’라는 작가가 2000년에 발표한 작품으로, ‘카호’라는 작가로서의 가능성을 보여주는 단편 소설들로 가득 차 있다. 특히 ‘어쩌면’이라는 제목의 소설은 ‘카호’의 독특한 문체와 섬세한 감성을 잘 드러내는 작품이라고 생각한다.

소설 속 주인공은 10대 소녀 ‘카호’이다. ‘카호’는 자신의 삶에 대한 불안감과 혼란스러움을 느끼며 미래에 대한 막연한 두려움을 느낀다. 이러한 불안감과 혼란스러움을 극복하기 위해 다양한 시도를 하지만, 결국에는 자신의 내면과 마주하게 된다.

‘카호’의 이야기는 우리 모두에게 공감을 불러일으킨다. ‘카호’의 불안감과 혼란스러움은 젊은 세대뿐만 아니라 모든 사람에게 나타날 수 있는 감정이다. ‘카호’의 이야기는 우리에게 삶의 의미를 되돌아보게 하고, 자신을 사랑하고 존중하는 방법을 알려준다.

‘어쩌면’은 ‘카호’의 대표작 중 하나이며, ‘카호’의 문학적 성장을 보여주는 중요한 작품이다. ‘어쩌면’을 읽는 것은 ‘카호’라는 작가를 이해하는 데 도움이 될 것이다.

나는 ‘어쩌면’을 읽고 ‘카호’라는 작가에 대해 더 깊이 이해하게 되었다. ‘카호’는 섬세하고 아름다운 문체로 독자들에게 깊은 감동을 선사하는 작가이다. ‘카호’의 작품을 읽는 것은 마치 꿈을 꾸는 듯한 기분이다.

‘카호’의 작품은 앞으로도 오랫동안 많은 사람들에게 사랑받을 것이다.

### 무료인데도 불구하고 카드 동의를 요구받는다.

제로 트러스트 무료 플랜을 선택하면 결제 화면으로 연결됩니다. 오늘 낼 금액이 0달러로 표시되는 데, 다음 두 가지에 체크를 요청합니다.

- 이용 약관 및 개인정보 보호 정책에 동의합니다.
- 이 카드에 대해 무료 枠 초과 사용량에 대해 매달 이용 요금을 부과하도록 허용합니다.

무료라고 적혀 있었는데 카드에 대한 이야기가 나왔다. 여기는 기능상의 사양입니다. 무료 枠은 50명까지이므로, 혼자서 사용하는 분의 경우에는 초과하지 않습니다.

### 팀 이름은 세계적으로 가장 먼저 판매됩니다.

제로 트러스트를 활성화하면 팀 이름이 자동으로 생성됩니다. 제 경우에는 `summer-scene-fcd1`라는 문자열이었습니다.

이것은 변경할 수 있습니다. 하지만 `〇〇.cloudflareaccess.com`이라는 도메인으로 바뀌기 때문에, 같은 이름은 Cloudflare 전체에서 1개만 사용할 수 있습니다. 짧고 일반적인 이름은 먼저 사용하지 못하는 것으로 생각하세요. 저도 희망했던 이름이 이미 사용되어 다른 이름으로 변경했습니다.

더 나아가, 변경할 사항이 있다면 가장 먼저 진행해 주세요. 나중에 변경하면 로그인 화면이 오래된 상태로 남아 있거나, 연동된 설정을 다시 설정해야 할 수 있습니다.

### AUD 태그는 깊숙이 숨겨진 값

설정 파일에 기록하는 값 중 하나인 “AUD 태그”는 Access 애플리케이션 하나하나에 할당되는 64자리의 식별자입니다.

역할은 다음과 같습니다. Access는 인증을 통과한 사용자에게 서명된 토큰을 제공합니다. 그 토큰에는 “이는 어떤 앱을 위한 것인가”가 기록되어 있으며, Cloudflare OS 측에서는 그것이 자신에게 발급되었는지 검증합니다. 이 기능이 없으면 동일 조직의 다른 사이트용으로 발행된 토큰이 그대로 사용됩니다.

문제는 이 값이 찾기 어렵다는 것입니다. 앱 목록에도, 상세 탭에도 나타나지 않습니다. “추가 설정” 탭으로 이동하여, 그곳을 아래로 따라가ようやく 나타납니다. 처음 보시는 분이라면 반드시 헤맬 만한 곳이었습니다.

### 인터넷상의 지침은 더 이상 유효하지 않습니다.

제로 트러스트 대시보드는 최근 URL 구조가 변경되었습니다. 검색 결과에 나타나는 절차서의 대부분이 오래된 경로를 가리키며, 그대로 열어보면 404 오류가 발생합니다.

해결 방법은 간단합니다. URL을 직접 입력하지 않고, 왼쪽 메뉴를 따라가세요. “Access Control”에서 “애플리케이션”으로 진행합니다.

### 검증 명령은 친절했다.

이는 칭찬할 만한 부분입니다. 설정 파일의 구멍을 채우는 과정에서 한 가지를 잊고 `pnpm check`를 실행했을 때 이렇게 반환되었습니다.

배포를 시작하기 전에 멈춰주는 것이 중요하며, 실패하는 대신 이렇게 멈춰줍니다. 소소한 툴에서는 이러한 점이 특히 중요합니다.

## 짓고 나서야 알게 된 일들

여기부터는 실제로 실행하지 않으면 쓸 수 없는 부분입니다.

### 단순히 배포된 것만으로는 AI가 말을 하지 않습니다.

설정 파일이나 관리 화면에도 AI 설정 항목은 없습니다. 로그인한 후 앱 내에서 설정을 진행합니다. 왼쪽 하단의 아이콘에서 “Providers”를 열어 모델을 선택하고 API 키를 등록합니다.

그리고 이 키는 클라우드플레어 소유가 아니며, 본인의 OpenAI 또는 앤트로픽 계정의 것입니다. 즉, 추론 비용은 본인이 부담합니다.

선택 가능한 항목은 다음과 같습니다.

프로바이더 | 예시 |
|---|---|
| Cloudflare Workers AI | Kimi K2.7 코드, GLM 5.2 |
| Anthropic | 클로드 Opus 5, Sonnet 5, Haiku 4.5 |
| OpenAI | GPT 5.6 솔, 루나, 테라 |
| Google | 젬يني 3.6 플래시 |
| Ollama | 로컬에서 실행하는 모델 |

마지막 Ollama를 놓쳐서는 안 됩니다. 본인 컴퓨터에서 실행 중인 모델을 연결하면 API 요금 없이도 작동합니다.

### 1회권으로 4엔입니다.

키를 입력하고 테스트 삼아 한 마디만 물어보았습니다. “당신은 어떤 모델입니까? 한 줄로 대답해 주세요.”

돌려받은 것은 한 줄입니다. 그리고 화면 아래에 이렇게 표시되었습니다.

5,116 토큰입니다. 일본 엔으로 약 4엔입니다.

![画像](https://assets.st-note.com/img/1786602998-ySbnG3hL6sHutYFwT4UBmKE7.png?width=1200)

대화 내용이 짧아도 시스템 프롬프트와 회사의 맥락이 매번 누적되면서 이 단가가 적용됩니다. 화면 오른쪽 상단에는 해당 워크스페이스의 누적 금액이 계속 표시됩니다.

이 숫자를 보게 되는 순간, 공식 블로그의 설명이 다른 의미를 갖기 시작했습니다.

클라우드플레어는 모든 추론을 AI 게이트웨이라는 중계 지점에 통과시키는 설계로 하고 있으며, 개인, 팀, 워크스페이스별로 비용을 추적할 수 있도록 합니다. 블로그에는 “고가 모델은 가장 어려운 작업에만 사용되도록 한다”고 명시되어 있습니다.

읽었을 때, 대기업을 위한 관리 기능 정도로 생각했습니다. 하지만 제 자신의 화면에서 4엔을 보게 되면, 이야기가 달라집니다. 이는 전社員에게 배포할 제품입니다. 한 사람이 하루에 수십 건으로 이동하고, 그것이 수천 명 분이 되면 어떻게 될까요. 비용 추적은 있으면 유용한 기능이 아니라, 이 제품이 성립하기 위한 전제였던 것입니다.

## 작업실에, 해보겠습니다.

그저 지어 놓은 것만으로는 텅 빈 집일 뿐입니다. 그래서 사람들을 고용했습니다.

주문한 것은 기사 소재집입니다. 일본어로 3문장만 작성했습니다.

> 
> 
> 기사 아이디어 기록 앱을 만들어 주세요. 기록 항목은 제목, 목적, 상태(미착수, 집필 중, 공개 완료), 공개 URL 네 가지입니다. 목록 표시 및 새로운 기사 추가 기능을 제공하고, 상태별로 필터링할 수 있으면 좋겠습니다. 화면 문구는 일본어로 부탁드립니다.
> 

1분 정도면 `server.js`와 `client.js` 및 `README.md` 파일 3개가 생성되었으며, 소비 토큰은 9,721 토큰, $0.2150입니다.

여기 재미있는 점은 바로 반영되지 않는다는 것입니다. 화면에 “Pending changes”라고 나타나고 “Accept changes”를 누를 때까지 기다려야 합니다. AI가 쓴 코드가 인간의 승인을 거친 후에 처음으로 실행됩니다. ‘Gatekeeper’ 부분에서 본 “위험한 작업에는 인간을 挟む”이라는 사상이 코드 반영에도 그대로 적용됩니다.

승인하면 즉시 앱이 실행되었습니다. 입력 폼, 목록, 상태 필터링을 통해 요청한 대로 화면이 나타났습니다.

### ChatGPT에 코드를 작성하게 하는 것과 인간이 코드를 작성하는 것에는 몇 가지 근본적인 차이가 있습니다. 첫째, ChatGPT는 방대한 양의 텍스트 데이터를 학습하여 패턴을 인식하고, 그 패턴에 따라 코드를 생성합니다. 즉, ChatGPT는 단순히 주어진 명령을 수행하는 것이 아니라, 학습된 지식을 바탕으로 창의적인 방식으로 코드를 만들어냅니다.

둘째, ChatGPT는 인간처럼 논리적인 추론이나 문제 해결 능력을 가지고 있지 않습니다. 따라서 복잡한 알고리즘이나 새로운 아이디어를 기반으로 코드를 작성하는 데는 한계가 있을 수 있습니다. 반면에, 인간은 경험과 직관을 바탕으로 문제를 해결하고, 창의적인 아이디어를 통해 코드를 발전시킬 수 있습니다.

셋째, ChatGPT는 오류가 발생하기 쉽습니다. 학습 데이터에 포함되지 않은 내용이나 예상치 못한 상황에 직면했을 때, 잘못된 코드를 생성할 수 있습니다. 따라서 ChatGPT가 생성한 코드는 반드시 검토하고 테스트해야 합니다. 반면에, 인간은 오류를 수정하고 개선하는 능력이 뛰어나기 때문에, 더 안정적이고 효율적인 코드를 작성할 수 있습니다.

결론적으로, ChatGPT는 코드를 생성하는 데 유용한 도구이지만, 인간의 창의성과 논리적인 추론 능력을 완전히 대체할 수는 없습니다. ChatGPT와 인간은 서로의 장점을 활용하여 협력하면 더욱 강력한 코드를 만들 수 있을 것입니다.

ChatGPT에 “이런 앱을 만들어줘”라고 요청해도 코드는 나올 수 있습니다. 하지만 그 이후부터는 제가 해야 할 일이 됩니다. 파일을 저장하고, 실행 환경을 준비하고, 저장 위치를 연결하고, 필요하다면 어디로든 배포해야 합니다.

클라우드플레어 OS는 모든 것이 완료된 상태로 제공되며, 앱은 이미 실행 중이고 주소와 데이터를 저장합니다. 저장 위치는 이 앱 전용으로 할당된 Durable Object로, 다른 앱이나 사용자에게는 보이지 않습니다.

出てくるのはコードではなく、動いているアプリです。ここが決定的に違うところでした。

### 그리고, 버그를 밟았습니다.

ネタを入力して「ネタを追加する」を押しました。

아무 일도 일어나지 않는다.

목록이 0건으로 남아 있습니다. 리로드해도 저장되지 않았습니다. 키보드를 눌러도 같은 결과였습니다. 오류 메시지조차 나타나지 않습니다. 말도 안 되는, 가장 심각한 종류의 오류입니다.

증상만 일본어로 제시하면, 에이전트는 자신의 코드를 다시 읽고 원인을 파악했습니다. 하지만 첫 번째 답변은 틀렸습니다. 승인하고 시도해도 여전히 작동하지 않았습니다. 다시 한번 검토한 결과, 마침내 근본적인 원인을 찾았습니다.

> 
> 
> 문제는 버튼 눌림이 폼의 제출 이벤트에 의존하고 있었기 때문입니다. 기가드지의 iframe 환경에서는 일반적인 폼 전송이 기대대로 발생하지 않거나 차단되는 경우가 있었고, 그럴 경우 앱 측의 추가 처리가 진행되지 않았습니다.
> 

이 앱은 샌드박스 내에서 실행되고 있었으며, 샌드박스가 폼 전송을 허용하지 않아 전송이 무위로 처리되는 문제가 있었습니다. 버튼을 일반 버튼으로 변경하고 클릭 시 처리 함수를 직접 호출하도록 수정하자 정상적으로 작동하기 시작했습니다.

![画像](https://assets.st-note.com/img/1786602999-pwAi7SYuXle3jVHFTbhR08Zk.png?width=1200)

3건의 등록을 완료하고, 상태 배지를 적용했으며 필터링도 적용했습니다. ‘note.com/kenchan/cloudflare-os’라는 주소를 약칭으로 입력한 것이 링크로 제대로 수정된 ‘https://’를 포함하도록 수정했습니다.

### 여기서 가져온 것

직접 만든 사람이 동작 확인을 하지 않았습니다. 그리고 처음 한 번은 “고쳤다”고 보고했지만, 고쳐지지 않았습니다.

글의 앞부분에서 이렇게 썼다. “에이전트는 지시를 잘못 전달하고, 읽어선 안 되는 것을 읽으며, ‘수정했습니다’라고 보고하면서도 수정하지 않는 경우가 있다”라고. 그 세 번째로, 내 화면에서 밟은 것이다.

이는 제품의 결함이라기보다는 AI 에이전트라는 것의 특성일 것입니다. 그래서 클라우드플레어 OS는 코드의 반영에 인간의 승인을 挟고, 승인 없이 즉 반영되는 구조였더라면, 고장난 앱이 고장 난 채로 계속 늘어나는 것일 뿐입니다.

![画像](https://assets.st-note.com/img/1786602999-FsGNm5KkbPprfTJAqSuvwo1y.png?width=1200)

신뢰하지 않지만 사용한다. 그 접근 방식이 제품의 제작 자체에 나타났다. 만들어 달라고 하고, 망가뜨리고, 고쳐서, 움직일 때까지. 총 비용은 약 130엔이다.

등록금이 저렴했던 것 같습니다.

## 짓기 전에 확인해야 할 사항

여기에는 건너뛰지 마세요. 돈에 관한 이야기입니다.

클라우드플레어 OS는 구축한 사용자의 클라우드플레어 계정에서 실행되므로, 그곳에서 실행된 워커의 실행 시간과 저장된 데이터의 용량 모두 전액 사용자가 부담합니다.

누가 여기 들어갈지 반드시 직접 확인해 주세요.

경계는 중복되어 있습니다.

![画像](https://assets.st-note.com/img/1786602999-RBcNbakYh32w8FgijoDUIm9r.png?width=1200)

첫 번째는 클라우드플레어 액세스입니다. 이메일 주소 단위로 로그인 가능한 사용자를 지정합니다. 저는 자신만 허용했으며, 다른 사람들은 앱 접속 전에 멈춥니다.

두 번째는 `/admin` 액세스 탭에 있는 “Allow new sign-ups”입니다. 이 옵션을 켜면 새로운 계정이 생성됩니다. 설명에는 다음과 같이 쓰여 있습니다.

> 
> 
> 정지했을 때 기존 사용자는 계속 로그인할 수 있지만 새로운 계정은 생성할 수 없습니다.
> 

제 환경에서는 초기 설정 상태로 켜져 있었습니다. Access에서는 한 명만 사용할 수 있어서 실질적인 피해는 없지만, Access 정책을 넓게 적용한다면 우선적으로 해지해야 할 설정입니다.

AI 이용료는 약간의 차이가 있습니다. 배포 시 `aiGateway.enabled: false`로 설정하면 배포 측에서 비용을 부담하는 모델은 하나도 배포되지 않습니다. 공식 문서에 다음과 같이 명시되어 있습니다.

> 
> 
> AI 비밀 없이 배포되며, 후원 모델 카탈로그는 광고되지 않습니다.
> 

API 키는 로그인한 사람이 각자 등록하는 방식으로 만들어졌기 때문에, 다른 사람이 들어와도 그 사람이 자신의 키를 가져오지 않으면 AI는 작동하지 않습니다. AI 비용을 낭비하는 상황이 발생하기 어려운 구조입니다.

다만, 다시 말씀드리지만, Cloudflare 이용료는 소유주가 부담하며, 입구를 제한해야 합니다. 반드시 먼저 진행해 주세요.

또한, 한 번의 클릭으로 배포하는 방식에 대해서는 어떤 방식으로 인증을 적용하는지 제가 확인하지 않았습니다. 사용하는 경우에는 구축 직후에 바로 로그인 설정을 반드시 자신의 눈으로 확인해 주십시오.

## 짓지 않는 사람이 가져갈 수 있는 것들

이 글을 다 읽고 “나는 만들어내지 않겠다고” 생각하셨다면 오히려 이것이 본론일지도 모릅니다.

게이트키퍼의 관점은 그대로 자신의 환경에 적용할 수 있습니다.

지금, 귀하의 `.env` 파일에는 무엇이 들어있을까요? MCP 서버에 불필요한 권한을 가진 토큰을 한 번에 모두 넘겨주지 않았나요. AI에게 “이 리포지토리를 봐줘”라고 부탁했을 때, 그 AI는 다른 리포지토리도 삭제할 권한이 없는 건 아닌가요.

내일부터 할 수 있는 일은 3가지가 있습니다.

각 용도에 따라 토큰을 분리하여 발급받고, 재사용하지 않습니다.

읽기 전용과 쓰기 기능을 별도의 키에 설정하십시오. 조사를 수행하는 경우 쓰기 권한은 필요하지 않습니다.

AI가 읽은 내용을 로그로 남겨두고, 혹시 모를 상황에 추적할 수 있도록 대비한다.

모두 밋밋합니다. 하지만 클라우드플레어가 수천 명 규모로 운영하기 위해 만든 시스템을 한 사람에게 축소하면 대략 이 세 가지로 요약됩니다.

## 누가 지어야 하는가

솔직하게 말씀드리겠습니다.

짓는 가치는 다음과 같습니다. 자신의 도메인을 가지고 있고, 여러 서비스를 AI로 활용하고 싶어 하며, 권한 관리를 직접 설계하고 싶은 분들입니다. 혹은, 이러한 설계 철학을 직접 손으로 구현하며 이해하고 싶은 분들입니다.

단순히 AI와 대화를 하고 싶어하는 분, 터미널 작업을 꺼리는 분은 기존 서비스를 이용하는 것이 빠르고 저렴합니다. 앞뒤는 브라우저 조작이지만, 가운데는 명령어를 입력합니다.

현재 시점에서는 공식 문서가 미비한 단계이며, 관리형 버전도 아직 제공되지 않고 있습니다. 조기 액세스 제품이라고 생각하고 사용하는 것이 적절한 거리감입니다.

경계는 명확합니다. “AI가 심각한 보안 결함을 만들 수 없다”는 주장이 성립되는 것은 앱이 외부로 영향을 미치지 않는 한뿐입니다. 유용한 앱은 결국에는 외부로 접촉하게 됩니다. 인간이 승인 루프에 계속 머무는 구조는 자율성과 타협하는 것일 뿐입니다.

그럼에도 불구하고, 에이전트에게 신뢰를 보지 않고 제품을 만들었다는 점을 전제로 시작했다는 사실은 기록해 두는 가치가 있다고 생각합니다. 현재 업계는 AI에 권한을 부여하는 방향으로 계속해서 발전하고 있으며, 그 반대되는 설계를 얼마나 실질적인 경험에 견딜 수 있을지가 문제입니다. 손으로 직접 움직여 보면서 확인할 수 있는 것은 매우 사치스러운 상황입니다.

## まとめ

월 5달러로, 제가 소유한 도메인에 AI 공방이 들어섰습니다.

반나절이 걸리겠지만, 함정을 전부 피할 수 있다면 1시간 정도면 끝나는 작업이라고 생각합니다. 이 글에 언급된 함정들이 도움이 되기를 바랍니다.

가장 중요한 것은, 읽기만으로는 알 수 없었던 것이 깨달았다는 점입니다. 1회권 4엔이라는 숫자를 자신의 화면으로 보지 않으면, 비용 추적 기능의 의미를 이해할 수 없었을 것입니다. AI가 만든 앱이 작동하지 않고, 첫 번째 수정으로도 해결되지 않는 것도, 글을 읽는 것만으로는 절대 얻을 수 없었던 감촉입니다.

에이전트는 신뢰할 수 없는 설계 철학이라는 점을, 이렇게 실감나게 납득할 수 있을 줄은 생각하지 못했습니다.

새로운 것이 나타났을 때, 글을 읽고 알아채는 것은 쉽습니다. 하지만 5달러를 지불하고 반나절 사용하면, 그 결과가 보입니다. 이번에는 그 점이 확인될 수 있었을 뿐, 수확이었었습니다.

여러분도 꼭 자신만의 작업장을 짓고 보세요!

**출처:** [note 원문](https://note.com/kenhfp/n/n6954caa09f4f)

*번역: Gemma 3(.44) 초벌 + 교정 112청크*

[원문 보기](https://note.com/kenhfp/n/n6954caa09f4f) | 출처: note.com