cloudflare-d1

2 개의 포스트

cloudflare

소개: Cloudflare Agents (새 탭에서 열림)

Cloudflare는 에이전트를 배포·관찰·개선할 수 있는 통합 관리 환경인 Cloudflare Agents를 공개했으며, 첫 기능으로 에이전트 트레이싱을 제공한다. 이 기능은 모델 호출, 도구 실행, 토큰 사용량, 승인 대기, 서브에이전트 작업과 Workers 인프라 동작을 하나의 추적으로 연결해 에이전트의 실제 동작과 비용을 파악하게 한다. 이를 통해 단순한 요청 성공 여부를 넘어 잘못된 도구 선택, 재시도 루프, 오래된 컨텍스트 전달 같은 문제를 분석하고 지속적으로 개선할 수 있다. ## 에이전트 관찰 가능성이 필요한 이유 - 에이전트는 HTTP 200을 반환하더라도 잘못된 도구를 선택하거나, 서브에이전트에 오래된 컨텍스트를 전달하거나, 토큰을 재시도 루프에서 낭비할 수 있다. - 기존 애플리케이션 텔레메트리는 API 요청이나 데이터베이스 쿼리는 보여주지만, 그 동작을 유발한 에이전트의 판단 과정은 보여주지 못한다. - 에이전트 수준의 텔레메트리는 다음 질문에 답해야 한다. - 지연 시간은 모델, 도구, 인프라 중 어디에서 발생했는가? - 승인 대기로 턴이 중단되었는가? - 어떤 모델을 호출했고 토큰을 얼마나 사용했는가? - 올바른 도구를 선택했는가? - 외부 API가 성공했는가, 타임아웃되었는가? - 어떤 서브에이전트가 작업했고 최종 응답에 어떤 영향을 주었는가? ## 에이전트 트레이싱의 범위 - 기존 Workers 트레이싱은 `fetch`, KV, D1 등 인프라 계층의 동작을 기록했다. - 새 에이전트 트레이싱은 여기에 다음과 같은 에이전트 전용 span을 추가한다. - 에이전트 호출 - 모델 호출 - 도구 실행 - 승인 이벤트 - 지원되는 서브에이전트 호출 - 모델명과 토큰 사용량 같은 정보도 메타데이터로 연결된다. - Think, Flue, AI SDK로 만든 에이전트는 Cloudflare 대시보드에서 추적을 확인하거나 OpenTelemetry 호환 대상에 내보낼 수 있다. ## 세션 리플레이로 판단 과정 확인 - Agents 대시보드의 Messages 탭에서는 특정 턴의 전체 대화를 재구성한다. - 시스템 지침 - 사용자 메시지 - 모델의 사고 과정 - 도구 호출 인자와 결과 - 최종 응답 - 이는 에이전트를 다시 실행하는 것이 아니라 기록된 데이터를 재생하는 기능이다. - 잘못된 도구 인자, 도구 선택 당시의 컨텍스트, 서브에이전트 핸드오프, 이전 턴이 이후 결과에 미친 영향을 분석할 수 있다. - Think, Flue, AI SDK에서는 `storeMessages`와 `storeTools` 설정으로 메시지 및 도구 payload 저장 여부를 제어한다. - 개인정보, 비밀값, 민감한 데이터가 포함될 수 있다면 payload 기록을 끄는 것이 권장된다. ## 실행 워터폴과 서브에이전트 추적 - Traces 탭은 각 턴의 실행 과정을 시간순 워터폴로 보여준다. - 부모 에이전트에서 서브에이전트, 모델, 도구, 데이터 저장소까지 하나의 흐름으로 연결된다. - 예시에서는 다음 작업을 한 화면에서 확인할 수 있다. - `TravelPlanner` 부모 에이전트 호출 - `itinerary_builder` 서브에이전트 호출 - `@cf/zai-org/glm-4.7-flash` 모델 호출과 토큰 사용량 - `record_itinerary_builder_execution` 도구 실행 - D1 쿼리 실행 - `record_respond_ready` 도구 실행 - KV 쓰기 - 부모 에이전트와 서브에이전트에는 에이전트 클래스, 대화, Durable Object 식별자가 연결되어 추적 간 상관관계를 파악할 수 있다. - KV, D1, Durable Object, 서비스 바인딩, `fetch` 등 Workers 리소스는 이를 호출한 에이전트 작업 아래에 중첩되어 표시된다. ## 트레이싱 활성화 방법 - 먼저 `wrangler.jsonc`에서 Workers 관찰 기능을 활성화한다. ```json { "observability": { "traces": { "enabled": true } } } ``` - 사용하는 에이전트 스택에 따라 추가 설정이 필요하다. - Think·Flue: 자체 트레이싱 통합 기능으로 에이전트, 대화, 턴, 모델, 도구 텔레메트리 전송 - AI SDK: Cloudflare의 `wrapAISDK()` 어댑터로 SDK 감싸기 - 사용자 정의 하네스: 커스텀 span API와 OpenTelemetry Generative AI 의미 규약 사용 ## OpenTelemetry 기반 확장과 외부 전송 - Cloudflare는 향후 Workers 내부에서 OpenTelemetry API를 직접 지원할 예정이다. - 표준 OpenTelemetry Generative AI span을 생성하는 프레임워크는 Cloudflare 전용 어댑터 없이 Agents 화면에서 시각화될 수 있다. - 표준 에이전트 및 대화 식별자가 포함되면 Cloudflare의 내장 통합처럼 에이전트와 세션 단위로 그룹화할 수 있다. - 추적 데이터는 Cloudflare에 종속되지 않으며, Wrangler 설정에서 OTLP 호환 제공자를 지정해 외부 관찰성 플랫폼으로 내보낼 수 있다. 에이전트 운영을 시작한다면 먼저 트레이싱을 활성화하고 메시지·도구 payload 저장 시 개인정보 노출 여부를 검토하는 것이 좋다. 이후 세션 리플레이로 판단 오류를 찾고, 워터폴 추적으로 모델·도구·인프라별 지연 시간과 비용을 분석하면 안정성과 효율을 체계적으로 개선할 수 있다.

cloudflare

서버리스, 양자 내 (새 탭에서 열림)

전통적인 Matrix 홈서버는 데이터베이스, 캐싱, 리버스 프록시 등 복잡한 인프라 관리 부담이 크지만, 이를 Cloudflare Workers 기반의 서버리스 아키텍처로 전환함으로써 운영 부담을 획기적으로 줄일 수 있습니다. 이 방식은 사용량에 비례해 비용이 발생하여 유휴 상태에서는 비용이 거의 들지 않으며, 전 세계 엣지 노드에서 실행되어 낮은 지연 시간을 보장합니다. 특히 양자 내성 암호(PQC)를 기본 TLS 계층에 적용하여 미래의 보안 위협에 선제적으로 대응할 수 있는 고도의 보안성을 갖춘 것이 특징입니다. **서버리스 아키텍처로의 전환** - 기존 Python 기반의 Synapse 홈서버 구성을 TypeScript와 Hono 프레임워크를 사용하는 Cloudflare Workers 환경으로 재설계했습니다. - 데이터 저장소의 경우, PostgreSQL은 D1으로, Redis 캐싱은 KV로, 파일 시스템은 R2(Object Storage)로 각각 대체하여 서버리스 환경에 최적화했습니다. - 강력한 일관성과 원자성이 필요한 Matrix 상태 결정(State Resolution) 및 실시간 조율 로직은 Cloudflare Durable Objects를 활용해 해결했습니다. **운영 및 비용의 효율성** - 서버 프로비저닝, TLS 인증서 갱신, 로드 밸런싱 등의 복잡한 작업이 `wrangler deploy`라는 단일 명령어로 단순화되었습니다. - 고정 비용이 발생하는 VPS 방식과 달리, 실제 요청이 있을 때만 비용을 지불하는 구조를 통해 개인용 서버 운영 비용을 0에 가깝게 낮출 수 있습니다. - 전 세계 300개 이상의 지역에 분포된 엣지에서 코드가 실행되므로, 사용자의 위치와 상관없이 지연 시간이 최소화됩니다. **양자 내성 암호(PQC) 기반의 이중 보안** - Cloudflare의 하이브리드 양자 내성 키 합의 알고리즘(X25519MLKEM768)을 TLS 1.3 연결에 적용하여, 미래의 양자 컴퓨터 공격으로부터 데이터를 보호합니다. - 보안은 전송 계층(TLS)의 양자 내성 암호와 애플리케이션 계층(Megolm)의 종단간 암호화(E2EE)라는 이중 레이어로 구성됩니다. - 서버 운영자나 인프라 제공자는 메시지 메타데이터는 확인할 수 있지만, 메시지 본문은 발신자와 수신자의 기기에서만 복호화가 가능하므로 내용의 기밀성이 완벽하게 보장됩니다. **데이터 모델 및 저장소 설계** - **D1(SQL):** 사용자, 방, 이벤트, 장치 키 등 구조화된 데이터 모델링을 위해 25개 이상의 테이블을 운영하며 데이터의 영속성을 보장합니다. - **KV(Key-Value):** 세션 관리 및 캐싱 등 빠른 읽기 속도가 필요한 데이터를 처리합니다. - **R2:** 암호화된 미디어 파일 및 대용량 바이너리 데이터를 저장하는 오브젝트 스토리지 역할을 수행합니다. 이 프로젝트는 개인 개발자나 보안이 중요한 조직이 관리 부담 없이 안전하고 확장 가능한 통신 인프라를 구축할 수 있는 실무적인 대안을 제시합니다. 특히 복잡한 암호화 라이브러리를 직접 관리하지 않고도 최신 보안 표준을 누릴 수 있다는 점이 큰 장점입니다.