json

18 개의 포스트

line4분 읽기큐레이션 요약

AI 에이전트끼리 토론한다면? 멀티 에이전트 협업으로 재설계하는 개발 프로세스

AI 코딩의 병목은 코드 생성 속도가 아니라 의도 정의, 가정 검증, 구현 확인, 리뷰 준비를 사람이 직접 조율하는 데 있다. LY Corporation은 이를 해결하기 위해 제안자와 도전자 AI 팀이 스펙·빌드·전달의 세 단계에서 토론하고, 조율자가 수정·상위 보고·진행 여부를 결정하는 파이프라인을 설계했다. 목표는 사람의 판단을 없애는 것이 아니라, 사람이 검토하기 전에 AI가 자신의 작업을 근거와 함께 입증하도록 만드는 것이다. ## 사람이 조율하는 AI 보조 방식의 한계 - 기존 방식에서는 AI가 스펙 작성, 코드 생성, 테스트, PR 설명 등을 빠르게 수행한다. - 그러나 각 단계 사이에서 사람이 다음 작업을 요청하고, 실패 결과를 전달하고, diff와 PR을 검토해야 한다. - 따라서 개별 작업은 빨라져도 의도·구현·검증·리뷰·전달 사이의 조율 비용은 그대로 남는다. - 진정한 생산성 향상은 각 단계를 단순히 가속하는 것이 아니라, 수동 인수인계를 프로세스에서 제거하는 데 있다. ## 제안자와 도전자로 나뉜 AI 협업 - 제안자는 산출물을 작성하고 단계가 진행될수록 이를 발전시킨다. - 도전자는 제안자의 결과를 검증하며, 단계별로 서로 다른 관점에서 문제를 제기한다. - 스펙 단계: 소크라테스식 질문으로 모호성·누락을 찾는다. - 빌드 단계: 테스트와 실행 결과 등 근거를 바탕으로 반론한다. - 전달 단계: 구현과 PR이 최종 리뷰에 충분한지 점검한다. - 역할을 분리하면 하나의 AI가 스펙, 구현, 검증, 리뷰를 모두 낙관적으로 처리하는 문제를 줄일 수 있다. - 사람은 시작 시 의도를 정의하고, 결과를 승인하거나, 해결하기 어려운 문제가 상위 보고될 때 주로 개입한다. ## 스펙·빌드·전달 파이프라인 ### 스펙: 이후 작업의 계약 정의 - 스펙은 다음 내용을 포함한다. - 목표와 제약 조건 - 해석된 요구 사항 - 명시적 가정 - 미해결 질문 - 제안된 접근 방식 - 완료 정의 - 빌드 에이전트는 “합리적으로 보이는” 구현을 임의로 선택하지 않고, 승인된 스펙에서 테스트와 검증 계획을 도출한다. - 스펙이 부실하면 이후 구현과 리뷰의 기준도 불명확해지므로 전체 파이프라인이 약해진다. - 기존 API, 테스트, 의존성, 코딩 관습, Jira·Confluence·설계 문서 등을 조사해 질문과 가정을 구체화한다. ### 빌드: 테스트 우선 구현과 반론 - 제안자는 코드를 수정하기 전에 스펙을 다음 항목으로 변환한다. - 예상 동작 - 에지 케이스 - 추가·수정할 테스트 - 실행 명령 - 도전자는 구현 전이나 구현 중에 검증 설계 자체를 문제 삼을 수 있다. - 제안자가 도전자의 이의를 거부하려면 실행 경로, 컴파일·린트 출력, 실패 테스트 등 구체적인 증거를 제시해야 한다. - 단순히 테스트가 녹색이라는 사실만으로 검증 누락을 숨길 수 없도록 설계됐다. ### 전달: 리뷰 가능한 PR 패키지 - 최종 산출물은 코드뿐 아니라 리뷰어가 신뢰할 수 있는 PR 패키지다. - 패키지에는 다음 정보가 포함된다. - 무엇이 변경되었는가 - 어떤 파일과 영역을 먼저 봐야 하는가 - 어떤 검사와 테스트를 통과했는가 - 남은 위험과 불확실성은 무엇인가 - 도전자가 어떤 문제를 제기했고 어떻게 처리했는가 - 전달 단계의 조율자는 중재자라기보다 출시 가능성을 판단하는 심사위원 역할을 한다. ## 조율자와 구조화된 토론 프로토콜 - 조율자는 제안자와 도전자 사이에서 토론을 관리한다. - 주요 책임은 다음과 같다. - 논의가 주제에서 벗어나면 방향 수정 - 교착 상태 해소 - 산출물 수정 요청 - 안전하지 않은 불확실성의 상위 보고 - 다음 단계 진행 여부 결정 - 스펙과 빌드에서는 수렴을 이끄는 중재자 역할을 하고, 전달 단계에서는 근거가 충분한지 판정한다. - 각 에이전트는 제한된 프롬프트와 자체 컨텍스트를 사용하며, 공통으로 접근하는 것은 워크스페이스·산출물·조율자가 누적한 기록이다. - 에이전트 간 실시간 공동 컨텍스트 대신 구조화된 산출물과 transcript를 통해 협업한다. ## JSON 기반 상태 머신 - 각 토론 라운드는 제안자와 도전자의 교환 및 조율자의 결정을 포함한다. - 에이전트는 긴 에세이가 아니라 조율자가 파싱할 수 있는 엄격한 JSON을 반환한다. - JSON에는 상태, 요약, 전문가 의견, 판단 근거, 요구 사항, 제약, 완료 정의, 가정, 질문 등이 담긴다. - 예를 들어 `/api/search`만 변경할지 인접한 검색 엔드포인트까지 포함할지 불명확하면, 도전자는 범위 경계를 명시적인 질문으로 제기한다. - 모호성이 작고 기존 근거로 안전하게 판단할 수 있으면 제안자가 가정으로 기록하고 진행한다. - 반대로 답이 없으면 위험하거나 파괴적이거나 되돌리기 어려운 문제라면 추측하지 않고 사람에게 상위 보고한다. ## 전문 역할과 근거 중심 검증 - 각 단계에는 목적에 맞는 전문 역할이 배정된다. - `requirements-synthesizer`: 요구 사항 정리 - `security-analyst`: 보안 위험 분석 - `test-coverage-reviewer`: 테스트 범위 검토 - `technical-writer`: 전달 문서 작성 - `evidence-verifier`: 구현과 검증 근거 확인 - 중요한 판단은 직감이 아니라 코드, 테스트, 문서, 실행 결과 같은 근거에 기반한다. - 핵심은 여러 AI를 단순히 병렬 실행하는 것이 아니라, 서로 다른 책임과 관점을 부여해 주장과 반론을 구조화하는 데 있다. ## 실용적인 결론 AI 코딩 시스템을 설계할 때는 코드 생성 에이전트 하나를 더 빠르게 만드는 것보다, 스펙부터 PR 전달까지의 인수인계를 자동화하는 것이 더 큰 효과를 낼 수 있다. 특히 스펙을 계약으로 명확히 만들고, 단계별 도전과 근거 제출을 강제하며, 위험한 가정은 사람에게 상위 보고하도록 구성하는 것이 핵심이다.

원문 읽기(새 탭에서 열림)
aws4분 읽기큐레이션 요약

Amazon S3 어노테이션: 풍부하고 쿼리 가능한 컨텍스트를 객체에 직접 첨부하기 | Amazon Web Services

Amazon S3 annotations는 객체에 대규모·구조화된 비즈니스 맥락을 직접 연결하고, 객체를 다시 작성하지 않고도 수정·삭제할 수 있게 하는 새로운 메타데이터 기능이다. 객체당 최대 1,000개의 annotation을 저장할 수 있으며, 각 annotation은 최대 1MB, 전체 최대 1GB까지 지원한다. S3 Metadata를 활성화하면 annotation을 Athena 등으로 대규모 조회할 수 있어 AI 에이전트와 자동화된 데이터 워크플로에 적합하다. ## S3 annotations의 특징과 규모 - JSON, XML, YAML, 일반 텍스트 등 다양한 형식을 지원한다. - annotation마다 고유한 이름을 부여한다. - 객체당 최대: - 1,000개 annotation - annotation 하나당 1MB - 전체 1GB - 객체 데이터를 다시 업로드하지 않고 annotation만 독립적으로 수정하거나 삭제할 수 있다. - 객체를 복사하거나 복제하거나 리전 간 전송할 때 annotation도 함께 이동한다. - 객체를 삭제하면 연결된 annotation도 자동으로 삭제된다. ## 기존 S3 메타데이터의 한계 - 시스템 정의 메타데이터는 객체 크기, 스토리지 클래스 등 S3가 관리하는 기본 속성에 초점을 둔다. - 객체 태그는 접근 제어와 수명 주기 관리 같은 운영 작업에 적합하지만 객체당 10개로 제한된다. - 사용자 정의 메타데이터는 업로드 시 지정하는 소량의 헤더 기반 정보이며, 약 2KB 수준이고 변경이 제한적이다. - 풍부한 설명이나 AI 분석 결과를 저장하려면 별도 데이터베이스나 사이드카 파일을 운영해야 했다. - 별도 메타데이터 시스템을 사용하면 원본 객체와 메타데이터 간 동기화 로직이 복잡해지고, 메타데이터 저장 비용이 객체 자체의 저장 비용보다 커질 수도 있다. ## AI 에이전트와 데이터 검색 - AI가 생성한 음성·영상 트랜스크립트, 요약, 감정 분석, 콘텐츠 등급 등을 객체에 직접 저장할 수 있다. - 메타데이터가 객체와 함께 이동하므로 데이터 복사·복제 과정에서 별도 동기화가 필요하지 않다. - S3 Metadata annotation 테이블을 사용하면 Athena와 다른 분석 엔진으로 annotation을 대규모 조회할 수 있다. - S3 Tables MCP 서버를 활용하면 AI 모델이 자연어 질의로 관련 데이터를 탐색할 수 있다. - 객체를 직접 복원하지 않고도 모든 스토리지 클래스의 annotation을 조회할 수 있으며, Glacier 계열에서도 객체 검색·복원 비용 없이 컨텍스트를 확인할 수 있다. ## 산업별 활용 사례 - **미디어·엔터테인먼트** - 영상별 트랜스크립트, 자막, 콘텐츠 검수 결과, 라이선스 정보를 별도 annotation으로 저장한다. - 여러 미디어 자산 관리 시스템 간 메타데이터 동기화를 줄일 수 있다. - **금융 서비스** - 연구 문서에 AI 기반 투자 요약과 감정 분석 결과를 연결한다. - 자연어 기반 에이전트가 별도 메타데이터 데이터베이스 없이 관련 문서를 탐색할 수 있다. - **생명과학** - 임상시험 데이터에 규제 상태, 환자군 정보, 승인 절차를 추가한다. - 보관된 데이터의 전체 맥락을 유지하면서 규제 감사와 컴플라이언스 검토를 간소화한다. ## annotation 생성·조회·수정·삭제 - IAM 정책 또는 버킷 정책에 다음 권한이 필요하다. - `s3:PutObjectAnnotation` - `s3:GetObjectAnnotation` - `PutObjectAnnotation` API로 기존 객체와 새 객체 모두에 annotation을 추가할 수 있다. - 예시처럼 하나의 영상 객체에 다음과 같이 서로 다른 정보를 저장할 수 있다. - `mediainfo`: 코덱, 해상도, 오디오 트랙 수 등을 JSON으로 저장 - `ai_summary`: AI가 생성한 영상 설명을 일반 텍스트로 저장 - 주요 API: - `GetObjectAnnotation`: 특정 annotation 조회 - `ListObjectAnnotations`: 객체에 연결된 전체 annotation 목록 확인 - `DeleteObjectAnnotation`: 특정 annotation 삭제 - `PutObjectAnnotation`: 같은 이름으로 호출해 기존 annotation 갱신 - 여러 팀이나 워크플로가 서로 다른 이름의 annotation을 사용하면 기술 정보, 콘텐츠 분류, 규제 정보 등을 서로 간섭 없이 동시에 관리할 수 있다. - 멀티파트 업로드 객체는 업로드를 완료한 뒤 `PutObjectAnnotation`으로 annotation을 추가해야 한다. ## 대규모 조회와 관리 - 개별 객체에 annotation을 붙이는 것만으로도 풍부한 컨텍스트를 보존할 수 있다. - S3 Metadata를 활성화하면 annotation이 관리형 annotation 테이블로 자동 전달된다. - 테이블 기반 조회를 통해 수많은 객체의 분류, 요약, 규제 상태, 기술 사양 등을 한 번에 검색할 수 있다. - 객체 본문을 모두 읽지 않고 메타데이터만 조회할 수 있어 대규모 데이터셋과 장기 보관 데이터에 특히 유리하다. S3 annotations는 단순한 태그나 업로드 시점의 헤더 메타데이터를 넘어, 변경 가능하고 대용량이며 조회 가능한 객체 컨텍스트를 제공한다. AI 에이전트, 콘텐츠 enrichment 파이프라인, 규제·감사 시스템처럼 객체의 의미와 상태가 계속 확장되는 환경에서는 별도 메타데이터 저장소를 구축하기 전에 annotations와 S3 Metadata 테이블 조합을 우선 검토할 만하다.

원문 읽기(새 탭에서 열림)
kakao4분 읽기큐레이션 요약

에이전틱 AI 생태계의 주인공들, MCP Player 10 성료와 Next!

카카오의 MCP 기반 개방형 플랫폼 PlayMCP에서 열린 ‘MCP Player 10’ 공모전이 약 150개 팀의 참여 속에 마무리됐다. 수상작들은 보육 행정, 창업 지원사업, 육아, 법률, 문화생활, 게임, 보안 등 일상과 전문 영역의 문제를 AI 에이전트로 해결했다. 카카오는 PlayMCP를 개발자 중심 플랫폼으로 발전시키고, Kakao Tools 및 카카오톡과 연계해 MCP 서비스의 대중화를 추진할 계획이다. ## 60일간 진행된 MCP 공모전 - 공모전은 2025년 12월 19일부터 2026년 1월 18일까지 진행됐다. - 카카오의 MCP 기반 플랫폼 **PlayMCP**를 활용해 실용적인 MCP 서버를 개발하는 방식이었다. - 약 150개 팀이 참여했으며, 창의성·사용 편의성·기술적 안정성을 기준으로 최종 10팀을 선정했다. - 단순한 기술 시연보다 실제 생활 속 불편을 해결하고 서비스로 발전할 가능성이 중요한 평가 기준으로 소개됐다. ## 대상: 어린이집 행정을 돕는 ‘어린이ZIP’ - 현직 교사의 행정 업무 부담을 줄이는 AI 보육 조수다. - 활동 사진을 분석해 알림장과 보육일지 초안을 자동 생성한다. - 아이별 알레르기, 하원 방법 등 개별 특이사항을 기억해 맞춤형 답변을 제공한다. - 보육 현장에 적합한 따뜻한 문체와 전문가의 톤앤매너를 반영한다. - “사진으로 오늘 보육일지 작성”, “아이의 알레르기 정보 확인”과 같은 자연어 명령으로 사용할 수 있다. ## 최우수상: 창업 지원사업을 분석하는 ‘SeedUp’ - 정부 창업 지원사업 공고를 수집하고 분석하는 창업 지원 MCP다. - 여러 기관에 흩어진 공고와 첨부 파일을 한곳에서 검색·요약한다. - 지원 자격과 주요 조건을 확인하고, 지원사업별 합격 전략까지 안내한다. - 창업자가 “이번 주 주요 공고”, “AI 스타트업 관련 사업” 등을 자연어로 검색할 수 있다. ## 다양한 생활 문제를 해결한 수상작 - **공유 비밀의 방** - 익명성을 보장하는 디지털 소통 플랫폼이다. - AI와 나눈 고민이나 대화를 익명으로 공유하고 다른 사람의 이야기에 공감할 수 있다. - **바우만 16 안티에이징솔루션** - 바우만 피부 유형 16가지 분류법을 AI에 적용했다. - 화장품 성분과 피부 특성을 분석해 개인별 스킨케어 루틴과 제품을 추천한다. - **아라드도우미** - 던전앤파이터 이용자를 위한 게임 전문 AI 비서다. - RAG와 Vision AI를 활용해 패치 노트, 아이템 메타, 직업별 빌드를 분석한다. - **키즈허브** - 육아 정보와 공공데이터를 통합한 서비스다. - 응급실 현황, 성장 단계, 어린이집 대기 정보 등을 제공하고 가족 단톡방 공유도 지원한다. - **택배추적기** - 배송 조회뿐 아니라 택배 사칭 스미싱 URL도 탐지한다. - 배송 관련 문자 속 위험 링크를 분석해 개인정보와 금융 피해를 예방한다. - **ArtBridge** - 약 20만 건의 공연·전시 데이터를 활용하는 문화생활 추천 서비스다. - 위치, 예산, 취향을 바탕으로 연극·뮤지컬·클래식 등 9개 장르의 콘텐츠와 예매 정보를 추천한다. - **KidSafe** - 어린이와 청소년의 AI 대화를 보호하는 안전 MCP다. - 유해 표현과 정서적 위기 신호를 감지하고, 필요하면 보호자나 전문 상담 자원과 연결한다. - **LexiLink_ko** - 법령, 판례, 행정 해석례를 자연어로 검색하는 법률 리서치 도구다. - 복잡한 법적 쟁점을 통합 검색하고 이해하기 쉽게 정리한다. ## PlayMCP의 향후 발전 방향 - PlayMCP는 개발자가 MCP 서버를 만들고 공유하는 전문 공간으로 운영된다. - 일반 사용자가 MCP를 경험하는 공간은 카카오톡의 **Kakao Tools**가 담당하며, 두 서비스는 긴밀하게 연결될 예정이다. - 현재는 개발자가 MCP 서버의 엔드포인트와 운영을 직접 관리해야 한다. - 향후 카카오 클라우드 기반 서버 지원과 배포 자동화 등 매니지드 서비스 도입을 검토하고 있다. - 카카오톡 안에서 MCP가 JSON 기반 위젯 등 자체 UI를 렌더링하도록 지원하는 방안도 검토 중이다. ## 다음 공모전: Agentic Player 10 - 카카오는 2회 공모전인 **Agentic Player 10**을 예고했다. - 이번에는 Kakao Tools와 연계해 개발자가 만든 에이전트를 더 많은 사용자에게 직접 선보이고 검증할 기회를 제공한다. - 특히 스타트업과 예비 창업팀이 실제 사용자 접점을 확보하고 서비스 성장을 실험하는 장으로 활용할 수 있도록 설계될 예정이다. - MCP 서버가 카카오톡 안에서 대중적인 AI 에이전트로 발전하는 것이 주요 목표다. 수상작들은 MCP가 단순한 개발자용 연동 기술을 넘어, 특정 업무와 사용자 문제를 해결하는 실용적인 AI 서비스로 발전할 수 있음을 보여준다. MCP 서비스를 개발한다면 명확한 사용자 문제를 정하고, 신뢰할 수 있는 데이터와 안전장치, 자연어 기반 사용성을 함께 설계하는 것이 중요하다.

원문 읽기(새 탭에서 열림)
dropbox4분 읽기큐레이션 요약

Nova: 코딩 에이전트를 위한 사내 플랫폼을 소개합니다

코딩 에이전트는 코드 작성뿐 아니라 CI 장애 대응, 마이그레이션, 테스트 개선 등 소프트웨어 개발 전반의 반복 업무를 지원할 수 있다. Dropbox는 대규모 모노레포와 Bazel, 사내 인프라에 맞는 실행·검증 환경을 제공하기 위해 개별 도구 대신 클라우드 기반 플랫폼인 Nova를 구축했다. Nova는 대화형 세션과 비동기 자동화 작업을 하나의 인터페이스로 통합하고, 실제 빌드·테스트 결과를 바탕으로 에이전트가 반복적으로 수정하도록 설계됐다. ## 분산된 개발 업무를 통합하는 플랫폼 - 개발 과정에는 디버깅, 의존성 업데이트, 테스트 커버리지 개선, flaky test 수정처럼 반복적이지만 중요한 작업이 많다. - 작업에 따라 상호작용 방식이 다르다. - 개발자가 직접 대화하며 진행하는 대화형 세션 - 에이전트가 백그라운드에서 실행되고 의미 있는 결과만 전달하는 비동기 작업 - Dropbox의 대규모 모노레포는 Bazel의 캐시와 원격 실행, 온프레미스 인프라에 의존한다. - 일반적인 외부 코딩 에이전트는 로컬 개발에는 적합하지만 Dropbox의 저장소 구조와 빌드·검증 경로를 자연스럽게 지원하지 못한다. - 따라서 워크플로마다 별도 AI 도구를 만드는 대신, 실행·검증·컨텍스트 처리를 공통화한 플랫폼을 선택했다. ## Nova의 실행 및 검증 방식 - 각 Nova 세션은 특정 커밋 시점의 Dropbox 코드베이스 스냅샷을 기반으로 격리된 환경에서 실행된다. - 호출자는 다음 정보를 전달할 수 있다. - 기준 커밋 - 수행할 작업 - 작업 후 실행할 검증 명령 - 검증 실패 시 계속 진행할지 여부 - 최대 반복 횟수 - 결과를 게시할 브랜치 - 기본 흐름은 다음과 같다. - 에이전트가 변경 사항 제안 - Bazel 빌드·테스트 등 실제 검증 수행 - 실패 결과를 에이전트에 전달 - 에이전트가 원인을 분석하고 수정 - 정해진 반복 횟수까지 재검증 - 단순히 그럴듯한 패치를 생성하는 데 그치지 않고, 실제 Dropbox 개발 환경에서 변경 사항이 유효한지 확인한다. - 세션은 하나의 브랜치만 사용하고 코드 게시 작업은 에이전트 외부에서 처리한다. - 활성 브랜치와 게시 상태를 예측하기 쉽다. - 테스트 실행, 리베이스 등 후속 자동화를 단순하게 유지할 수 있다. - 여러 브랜치를 에이전트가 직접 관리할 때 발생하는 기준 브랜치 선택 문제를 피할 수 있다. ## 다양한 개발 인터페이스와 확장 기능 - Nova는 여러 코딩 에이전트를 동일한 인터페이스 뒤에서 사용할 수 있도록 확장됐다. - 제공 방식은 다음과 같다. - 웹 UI 기반 대화형 세션 - CLI - API - 로컬 에이전트, 스크립트, 사내 서비스에서 병렬 작업 실행 - 장기 실행 워크플로에 AI 단계를 추가할 수 있는 헬퍼를 제공한다. - 프롬프트 평가, 관측성, 피드백 수집 기능으로 에이전트 성능을 측정하고 개선할 수 있다. - 파일 수정 외에도 로그 수집, 장애 조사, 여러 단계에 걸친 컨텍스트 유지가 필요하므로 다음 확장 기능을 포함한다. - Skills - Plugins - MCP 통합 - 관측성 시스템 접근 ## CI 장애 대응에서 시작한 적용 - Nova는 CI 실패에 대한 수정 제안을 자동화하는 문제에서 출발했다. - 예시 요청은 특정 커밋에서 CI 실패를 조사하고, 관련 Bazel 테스트를 실행하며, 실패 시 최대 5회까지 수정·재검증하는 형태다. - 검증 명령을 호출자가 명시하므로 에이전트가 변경한 코드에 필요한 컴파일·테스트 범위를 구체적으로 지정할 수 있다. - 이 방식은 “변경 제안 → 실제 검증 → 실패 원인 반영”이라는 안정적인 자동화 패턴을 만든다. ## 개발자 주도 세션 - 엔지니어는 Nova 웹 UI에서 로컬 개발을 중단하지 않고 빠른 수정이나 프로토타입을 진행할 수 있다. - Bazel 선택성 도구와 검증 명령을 결합해 변경된 코드와 관련된 컴파일·테스트 대상만 검증할 수 있다. - Slack 대화에서 바로 Nova 세션을 시작하고 해당 스레드의 논의 내용을 컨텍스트로 전달할 수 있다. - 이를 통해 문제 설명이나 팀 내 논의를 에이전트 프롬프트에 수동으로 다시 작성하는 비용을 줄인다. ## Flaky test 자동 수정 - Nova의 대표적인 운영 자동화 사례는 flaky test remediation이다. - Dropbox의 flaky 테스트 탐지 시스템인 Athena와 내부 도구 Deflaker를 결합했다. - Deflaker의 흐름은 다음과 같다. - 테스트가 성공한 사례와 실패한 사례를 수집 - 관련 로그를 Nova에 컨텍스트로 전달 - 에이전트가 가능한 근본 원인을 분석 - 수정안을 제안 - 이는 단순 코드 생성보다 로그 분석, 증거 비교, 원인 추론이 중요한 장기 실행형 워크플로에 해당한다. ## 실용적인 시사점 코딩 에이전트를 도입할 때는 에디터 플러그인 하나를 추가하는 것보다 저장소, 빌드 시스템, 테스트 인프라, 로그와 컨텍스트를 연결하는 플랫폼 설계가 중요하다. 특히 에이전트의 결과를 실제 검증 명령으로 확인하고, 실패 결과를 다시 에이전트에 제공하는 반복 루프와 예측 가능한 브랜치·게시 정책을 갖추는 것이 안정적인 자동화의 핵심이다.

원문 읽기(새 탭에서 열림)
gitlab원문

glab CLI로 AI 에이전트에 GitLab 직접 액세스 권한 부여하기 (새 탭에서 열림)

GitLab CLI(`glab`)를 MCP(Model Context Protocol)와 결합하면 AI 에이전트가 프로젝트 데이터에 직접적이고 구조적으로 접근할 수 있게 되어 개발 워크플로우의 효율성이 극대화됩니다. 이를 통해 개발자는 수동으로 정보를 복사하여 붙여넣는 번거로움을 없애고, 할루시네이션(환각) 없이 실시간 데이터에 기반한 정확한 코드 리뷰와 이슈 관리가 가능해집니다. 결과적으로 AI 에이전트는 단순한 조력자를 넘어 프로젝트의 상태를 직접 파악하고 작업을 수행하는 강력한 도구로 진화합니다. ### MCP를 통한 AI와 GitLab의 연결 * **개방형 표준 활용:** MCP는 AI 도구가 런타임에 외부 기능을 발견하고 사용할 수 있게 해주는 표준 프로토콜로, 이를 통해 AI 어시스턴트가 GitLab 이슈 읽기, MR 댓글 작성, 파이프라인 상태 확인 등을 직접 수행할 수 있습니다. * **간편한 서버 실행:** `glab mcp serve` 명령어를 실행하는 것만으로 MCP 서버를 구동하여 Claude Code, Cursor 등 다양한 AI 클라이언트와 연결할 수 있습니다. * **구조화된 JSON 데이터:** MCP를 통해 호출되는 모든 `glab` 명령은 자동으로 `--output json` 형식을 사용하여, AI 에이전트가 파싱하기 쉬운 깨끗하고 정제된 데이터를 제공합니다. * **안정성 확보:** 터미널의 대화형 입력이 필요한 명령은 제외하고 에이전트 환경에서 신뢰할 수 있게 작동하는 명령 위주로 노출하여 작업 중단 오류를 방지합니다. ### AI 기반 코드 리뷰 자동화 * **전체 컨텍스트 파악:** `glab mr view --comments --unresolved` 명령을 사용하면 MR의 메타데이터, 설명, 해결되지 않은 모든 토론 내용을 단일 JSON 페이로드로 가져와 AI에게 전달할 수 있습니다. * **효율적인 피드백 요약:** 사용자는 여러 탭을 오가는 대신 AI에게 "MR에서 해결해야 할 사항이 무엇인가?"라고 질문하여 우선순위가 지정된 요약과 제안된 변경 사항을 즉시 받을 수 있습니다. * **프로그래밍 방식의 처리:** AI가 피드백을 반영한 후 `glab mr note resolve` 명령을 직접 실행하여 토론을 해결 상태로 변경하는 등 코드 리뷰의 전 과정을 자동화된 루프 내에서 처리할 수 있습니다. ### 실시간 데이터 기반의 이슈 분석 및 디버깅 * **정확한 정보 제공:** 웹 UI에서 텍스트를 복사해 붙여넣는 방식은 정보가 누락되거나 왜곡될 위험이 크지만, `glab`은 이슈 번호, 마일스톤, 라벨 등의 속성을 정확한 구조로 제공합니다. * **훈련 데이터 한계 극복:** AI가 과거의 학습 데이터나 웹 스크래핑에 의존하지 않고, API를 통해 실시간 프로젝트 상태를 조회하므로 파이프라인 실패 원인 분석이나 이슈 분류 시 정확도가 비약적으로 향상됩니다. * **워크플로우 마찰 감소:** 에이전트가 직접 GitLab 데이터를 가져오고 보고하기 때문에 개발자는 정보 전달자 역할에서 벗어나 실제 문제 해결에 더 집중할 수 있습니다. 반복적인 코드 리뷰 분석이나 이슈 트리이징(Triage) 시간을 줄이고 싶다면 `glab` CLI를 MCP 서버로 활용해 보세요. 특히 Claude나 Cursor와 같은 최신 AI 도구를 사용 중이라면, `glab mcp serve`를 통해 AI 에이전트에게 GitLab 프로젝트에 대한 직접적인 실행력을 부여함으로써 진정한 자율 개발 환경을 구축할 수 있습니다.

figma4분 읽기큐레이션 요약

Figma Make에서 더 많은 맥락과 제어력으로 빌드하기 | Figma Blog

Figma Make가 **Make kits**와 **Make attachments**를 통해 디자인 시스템과 실제 프로젝트 자료를 반영한 프로토타입을 생성하도록 개선됐다. Make kits는 코드 패키지나 Figma 라이브러리의 컴포넌트·스타일·토큰과 사용 지침을 제공하고, attachments는 데이터·법률 문구·스크린샷 등 프로젝트별 맥락을 전달한다. 이를 통해 범용적인 초안에서 출발해 반복적으로 수정하는 대신, 실제 제품 구조와 제약에 가까운 결과물을 더 빠르게 만들 수 있다. ## AI 초안이 실제 제품과 어긋나는 문제 - 기존 AI 생성 UI는 레이아웃과 인터랙션은 그럴듯하지만 다음과 같은 문제가 있었다. - 팀의 실제 디자인 시스템 컴포넌트를 사용하지 않음 - 카피가 placeholder로 남음 - 예외 상황과 중요한 edge case가 반영되지 않음 - 프로덕션 코드의 구조와 다른 방식으로 구현됨 - 그 결과 초기 생성 속도는 빨라도, 리뷰 전에 디자인 시스템에 맞게 다시 작성하고 조정하는 데 많은 시간이 필요했다. - Figma는 이 문제의 원인을 생성 품질 자체가 아니라 **팀이 실제 개발에 사용하는 맥락의 부족**으로 설명한다. ## Make kits: 디자인 시스템을 학습시키는 패키지 - Make kit은 디자인 시스템의 컴포넌트나 스타일과, 이를 어떻게 사용해야 하는지 설명하는 세부 가이드라인을 하나의 재사용 가능한 패키지로 결합한다. - 다음과 같은 소스를 사용할 수 있다. - 공개 npm 레지스트리의 JavaScript 패키지 - Figma의 보안 비공개 레지스트리에 저장된 코드 패키지 - Figma 라이브러리의 스타일과 디자인 토큰 - 가이드라인은 단순히 “어떤 컴포넌트가 존재하는가”뿐 아니라 다음까지 전달한다. - 컴포넌트를 어떤 상황에 사용해야 하는지 - 컴포넌트가 어떤 구조와 패턴을 따라야 하는지 - 디자인 시스템의 규칙을 프로토타입에 어떻게 적용해야 하는지 - 따라서 Make는 일반적인 UI 요소를 조합하는 대신, 팀의 코드베이스와 가까운 구조로 프로토타입을 시작할 수 있다. ## Make kits가 팀 협업에 주는 효과 - 폼, 대시보드, 설정 화면, 온보딩 플로우 등 여러 팀이 공유하는 화면에서 일관성이 높아진다. - 여러 팀이 동시에 프로토타입을 제작해도 디자인 시스템에서 벗어날 가능성이 줄어든다. - 리뷰 전에 spacing, 컴포넌트 선택, UI 패턴을 다시 맞추는 작업이 감소한다. - 엔지니어 입장에서는 익숙한 컴포넌트와 코드 패턴을 바로 확인할 수 있다. - “이 부분은 커스텀 구현인가?”와 같은 확인 질문이 줄어들어, 디자인을 코드로 번역하는 시간보다 제안 자체를 검토하고 개선하는 데 집중할 수 있다. - Figma는 향후 Figma 라이브러리의 컴포넌트 구조를 더욱 정확히 재현하는 방향으로 Make kits를 발전시킬 계획이다. ## Make attachments: 프로젝트의 실제 맥락 반영 - 디자인 시스템만으로는 각 프로젝트의 고유한 요구사항을 모두 설명할 수 없다. - 실제 프로젝트에는 다음과 같은 정보가 추가로 필요하다. - 실제 사용자 데이터 - 마이그레이션 제약 - 예외 처리와 edge case - 규정 및 컴플라이언스 요구사항 - 브랜드 콘텐츠와 법률 문구 - Make attachments는 이런 자료를 긴 프롬프트로 요약하지 않고 원본 파일 형태로 Make에 전달한다. - 지원되는 자료에는 다음이 포함된다. - PDF와 Markdown 문서 - CSV·JSON 데이터셋 - 스크린샷과 이미지 - 브랜드 가이드라인 - 법률 문구 - 미디어 파일과 SVG - 코드 및 관련 프로젝트 파일 ## 실제 데이터와 제약을 반영하는 프로토타이핑 - 예를 들어 디지털 제품의 전체 온보딩 플로우를 만들 때는 다음 정보가 동시에 필요할 수 있다. - 실제 사용자 데이터 - 법률상 반드시 표시해야 하는 문구 - 여러 입력 검증 상태 - 정상 흐름 외의 예외 상황 - 첨부 파일 없이 프롬프트만 사용하면 Make가 법률 문구를 임의로 줄이거나, 검증 상태를 단순화하거나, 이상적인 정상 흐름만 생성할 수 있다. - 원본 PDF, 데이터셋, 스크린샷 등을 첨부하면 Make가 프로젝트 자료를 직접 참조하므로, 보다 현실적인 콘텐츠와 제약을 포함한 프로토타입을 만들 수 있다. ## 디자인 시스템과 프로젝트 자료의 결합 - Make kits는 **제품 전반에 공통으로 적용되는 규칙**을 제공한다. - Make attachments는 **특정 프로젝트에만 존재하는 데이터와 제약**을 제공한다. - 두 기능을 함께 사용하면 다음과 같은 흐름이 가능하다. - Make kits로 실제 코드 또는 Figma 라이브러리 기반의 컴포넌트 사용 - attachments로 실제 데이터, 콘텐츠, 법률 요구사항, 시각 자료 반영 - 생성 결과를 프로덕션 구조에 가깝게 유지하면서 프로젝트의 세부 조건까지 검증 - 결과적으로 프로토타입 제작은 “일반적인 UI 초안 생성”에서 “실제 제품 조건을 반영한 탐색과 검증”으로 이동한다. 실무에서는 공통 컴포넌트와 토큰을 Make kit으로 정리하고, 기능별 요구사항·데이터·법률 문구·예외 상태는 attachments로 함께 제공하는 방식이 효과적이다. 이렇게 하면 생성 후 대규모 수정에 쓰는 시간을 줄이고, 초기 단계부터 개발·디자인 리뷰에 적합한 프로토타입을 만들 수 있다.

원문 읽기(새 탭에서 열림)
line원문

도메인에 의존하지 않는 채팅 플랫폼은 어떻게 만들었을까? (새 탭에서 열림)

MessagingHub는 서비스마다 개별적으로 구축해야 했던 채팅 기능을 통합하여 플랫폼화함으로써 개발 비용을 절감하고 시스템 복잡도를 낮춘 메시징 플랫폼입니다. 특정 도메인에 의존하지 않는 독립성과 범용성을 바탕으로 챗봇, 상담 채팅, 1:1 대화 등 다양한 요구사항을 레고처럼 조합할 수 있는 구조로 설계되었습니다. 결과적으로 연동 서비스는 비즈니스 로직에만 집중하고, 채팅의 핵심 기능과 연결 관리는 플랫폼이 전담하여 효율적인 서비스 운영이 가능해졌습니다. ### 도메인 독립적인 인증 및 사용자 식별 * **연동 측 책임 중심의 인증:** MessagingHub는 직접 사용자를 관리하지 않고, 연동 시스템이 인증을 마친 후 요청한 연결 토큰(connection token)을 검증하여 웹소켓 연결을 허용합니다. * **유연한 사용자 식별:** 도메인 정보와 연동 측 식별자를 조합한 ‘client ID’를 사용해 여러 서비스의 사용자를 구분하며, 닉네임이나 프로필 같은 부가 정보는 연동 측에서 실시간으로 갱신하도록 설계되었습니다. * **서비스 컨텍스트 기반 제어:** '누가 누구와 대화하는지(Driver2CS 등)'를 정의하는 서비스 컨텍스트와 채팅방 유형(1:1, 그룹, 챗봇 등)의 조합을 통해 세밀한 접근 권한과 메시지 허용 정책을 관리합니다. ### 관심사 분리를 통한 모듈형 아키텍처 * **컴포넌트 기반 구조:** 연결 관리(connection-manager), 비즈니스 로직(chat-app), 메시지 중계(message-router), 알림(notification-app) 등 각 기능을 독립적인 컴포넌트로 분리하여 R&R을 명확히 했습니다. * **커맨드(Command) 패턴 활용:** 채팅의 모든 동작을 커맨드 단위로 정의하여 챗봇이나 상담 채팅 등 서비스 성격에 맞게 기능을 유연하게 조합하고 확장할 수 있습니다. * **이벤트 기반 연동:** 각 컴포넌트는 이벤트 기반으로 느슨하게 결합되어 있어, 특정 기능의 변경이 전체 시스템에 미치는 영향을 최소화했습니다. ### 효율적인 데이터 관리와 메시지 순서 보장 * **메시지 체이닝 및 상태 관리:** `prev_chat_log_id`를 사용하여 메시지 간 순서를 보장하며, 읽음 위치(`last_seen_chat_log_id`)와 전체 메시지 범위를 비교하여 정확한 안 읽은 메시지 수를 산출합니다. * **JSON 컬럼을 통한 확장성:** 연동 측에서 필요로 하는 도메인 특화 데이터(검색용 데이터, 사용자 상세 정보 등)를 MessagingHub가 해석하지 않고 JSON 형태로 그대로 보관 및 전달함으로써 범용성을 확보했습니다. * **보안 및 자동 삭제:** 모든 메시지는 암호화하여 저장되며, 참여자 이탈에 따른 즉시 삭제나 설정된 보관 기간에 따른 자동 삭제 정책을 지원합니다. ### 챗봇 시나리오의 안정적인 배포와 SOFT STOP 정책 * **계층적 시나리오 구조:** 관리자 도구를 통해 시나리오를 편집하고 배포할 수 있으며, 답변과 선택지 및 외부 연동을 위한 웹훅 기능을 지원합니다. * **SOFT STOP 상태 도입:** 새로운 시나리오 배포 시, 기존 대화 중인 사용자는 이전 버전을 유지하고 신규 사용자에게만 새 버전을 노출하는 'SOFT STOP' 단계를 두어 사용자 경험의 단절을 방지합니다. * **지능형 스케줄링:** 스케줄러가 이전 버전 시나리오의 잔여 연결 정보를 주기적으로 체크하여, 더 이상 사용하는 사용자가 없을 때 자동으로 해당 버전을 종료 처리합니다. ### 상담 효율을 높이는 문의형 채팅 최적화 * **상담 컨텍스트 제공:** 상담원이 사용자 정보를 별도로 조회할 필요가 없도록, 채팅방 생성 시 연동 측으로부터 전달받은 검색 데이터, 추적 데이터 등 풍부한 메타데이터를 상담 화면에 함께 제공합니다. * **생명 주기 관리:** 상담 대기(PENDING)부터 종료(DISABLE) 및 재진입 방지(BLOCK)까지 이어지는 상담 전용 상태 관리를 통해 상담 프로세스의 일관성을 유지합니다. MessagingHub와 같은 채팅 플랫폼 도입은 서비스 확장 속도가 빠르고 다양한 소통 창구가 필요한 환경에서 특히 유용합니다. 채팅 기능을 직접 구현하기보다는, 인증과 데이터 처리는 전문 플랫폼에 맡기고 도메인 특화 데이터(Metadata)를 적극 활용하는 방향으로 설계한다면 시스템의 유연성과 운영 효율을 동시에 확보할 수 있을 것입니다.

figma3분 읽기큐레이션 요약

에이전트, Figma 캔버스를 만나다 | Figma 블로그

Figma는 이제 AI 에이전트가 디자인 캔버스에서 직접 파일과 컴포넌트를 생성·수정할 수 있도록 지원한다. MCP 서버의 `use_figma` 도구와 Markdown 기반 스킬을 통해 에이전트가 팀의 디자인 시스템, 컴포넌트, 변수, 작업 규칙을 활용하게 되며, 결과적으로 코드와 디자인 사이의 단절을 줄이는 것이 목표다. 이 기능은 현재 베타 기간 동안 무료로 제공되지만 향후 사용량 기반 유료 기능으로 전환될 예정이다. ## AI 에이전트가 Figma 캔버스에서 작업 - Claude Code, Codex 등 MCP 클라이언트가 `use_figma` 도구를 통해 Figma 파일과 컴포넌트를 직접 생성하고 수정할 수 있다. - 에이전트는 색상, 버튼 패딩, 타이포그래피, 인터랙션 같은 팀의 디자인 결정을 Figma 안에서 참조한다. - 기존처럼 AI가 일반적이고 브랜드와 동떨어진 디자인을 만드는 대신, 조직의 디자인 시스템에 연결된 결과물을 생성할 수 있다. - 코드에서 시작한 작업도 Figma에서 검토·수정할 수 있고, Figma에서 결정한 내용을 다시 개발 과정에 반영할 수 있다. ## `generate_figma_design`과 `use_figma`의 역할 분담 - `generate_figma_design` - 실제 웹사이트나 애플리케이션의 HTML을 Figma 레이어로 변환한다. - 코드와 디자인이 달라졌을 때 최신 UI를 Figma로 가져오는 데 사용된다. - `use_figma` - Figma 캔버스에서 기존 디자인을 수정하거나 새로운 디자인 자산을 생성한다. - 팀의 컴포넌트, 변수, 자동 레이아웃 등 실제 디자인 시스템을 활용한다. - 두 도구를 함께 사용하면 코드의 최신 상태를 Figma로 가져온 뒤, 에이전트가 디자인 시스템에 맞춰 재구성하고 개선할 수 있다. ## Markdown으로 정의하는 Figma 스킬 - 스킬은 에이전트가 Figma에서 작업하는 방법을 설명하는 Markdown 파일 기반 지침이다. - 특정 작업의 순서, 적용해야 할 규칙, 팀의 디자인 관례와 품질 기준을 명시할 수 있다. - 플러그인을 개발하거나 별도의 코드를 작성하지 않아도 누구나 스킬을 만들 수 있다. - 기본 스킬인 `/figma-use`는 Figma의 구조와 핵심 원칙을 에이전트에게 알려주며, 팀은 이를 확장해 자체 업무 방식에 맞출 수 있다. - 스킬은 단순한 문서가 아니라 에이전트가 실제 작업 중 따라야 하는 실행 규칙으로 작동한다. ## 제공되는 스킬 사례 - `/figma-generate-library`: 코드베이스에서 Figma 컴포넌트 라이브러리 생성 - `/figma-generate-design`: 기존 컴포넌트와 변수를 사용해 새로운 디자인 생성 - `/create-voice`: UI 명세에서 VoiceOver, TalkBack, ARIA용 스크린 리더 사양 생성 - `/apply-design-system`: 기존 디자인을 디자인 시스템 컴포넌트와 연결 - `/rad-spacing`: 변수와 폴백을 사용해 계층적인 간격 적용 - `/sync-figma-token`: 코드와 Figma 변수 사이의 디자인 토큰 동기화 및 변경 감지 - `/multi-agent`: 여러 에이전트가 디자인 구현 작업을 병렬로 수행 - 커뮤니티 실무자가 만든 JSON 기반 컴포넌트 생성, 디자인 워크플로 오케스트레이션 등의 스킬도 제공된다. ## 구조 기반의 자기 수정 - 에이전트는 화면을 생성한 뒤 스크린샷을 찍고, 결과가 목표와 다른 부분을 확인해 반복적으로 수정할 수 있다. - 수정 대상이 단순한 픽셀이 아니라 실제 컴포넌트, 변수, 자동 레이아웃, 레이어 구조이므로 디자인 시스템과 상호작용하며 개선된다. - AI 모델의 비결정성 때문에 같은 프롬프트라도 결과가 달라질 수 있지만, 스킬이 작업 순서와 기준을 고정해 결과를 더 예측 가능하게 만든다. - 기존의 디자인 규칙과 팀 관례가 정적인 문서에 머무르지 않고, 에이전트가 작업 중 실제로 적용하는 규칙이 된다. ## 실용적인 의미 팀은 `use_figma`와 `/figma-use`를 기반으로 자체 디자인 스킬을 만들고, 컴포넌트·변수·토큰 사용 규칙을 명시하는 것이 좋다. 특히 코드와 Figma가 자주 어긋나는 조직이라면 `generate_figma_design`으로 최신 UI를 동기화한 뒤, `use_figma`와 스킬을 이용해 브랜드와 디자인 시스템에 맞게 다듬는 워크플로가 효과적이다.

원문 읽기(새 탭에서 열림)
dropbox원문

DSPy를 사용하여 Dash의 관련성 판별기를 최적화한 방법 (새 탭에서 열림)

Dropbox는 검색 및 답변 서비스인 Dash의 핵심 기능인 '관련성 판단 모델(relevance judge)'을 최적화하기 위해 DSPy 프레임워크를 도입했습니다. 기존의 수동 프롬프트 엔지니어링 방식에서 벗어나, 인간의 평가 점수와 모델 점수 간의 차이를 최소화하는 체계적인 최적화 루프를 구축함으로써 더 저렴한 오픈 소스 모델에서도 고성능을 유지할 수 있게 되었습니다. 결과적으로 모델 교체 시 발생하는 성능 저하 문제를 해결하고, 대규모 데이터 처리를 위한 비용 효율성과 신뢰성을 동시에 확보했습니다. **인간 평가 기반의 성능 측정 체계** * 관련성 판단 모델은 쿼리와 문서의 연관성을 1~5점 척도로 할당하며, 이를 인간 평가자의 점수와 비교하여 성능을 측정합니다. * 주요 평가지표로 NMSE(Normalized Mean Squared Error)를 사용하며, 이는 AI 점수가 인간의 판단에서 얼마나 벗어나는지를 0~100 사이의 수치로 나타냅니다. * 단순 점수 외에도 프로덕션 환경에서의 안정성을 위해 JSON 출력 형식이 올바른지, 구조적 가이드라인을 준수하는지를 엄격히 관리합니다. **고비용 모델에서 효율적인 모델로의 이식** * 초기에는 성능이 뛰어난 OpenAI의 o3 모델을 사용했으나, 서비스 규모가 확장됨에 따라 수천 배 더 많은 데이터 처리를 위한 비용 절감이 필요해졌습니다. * 상대적으로 저렴한 gpt-oss-120b 모델로 이전을 시도했으나, 기존 고성능 모델에 최적화된 프롬프트가 그대로 작동하지 않아 성능 저하가 발생했습니다. * 이를 해결하기 위해 수동으로 프롬프트를 수정하는 대신, DSPy를 통해 특정 모델에 최적화된 프롬프트를 자동 생성하는 방식을 선택했습니다. **DSPy와 GEPA를 활용한 프롬프트 최적화** * DSPy의 GEPA(Generalized Evaluation-based Prompt Adaptation) 옵티마이저를 사용하여 모델이 인간과 다른 판단을 내린 지점을 분석하고 피드백을 생성합니다. * 모델의 예측 점수와 인간의 점수 차이, 그리고 인간의 작성 이유(Rationale)를 결합하여 구체적인 피드백 루프를 구성합니다. * 피드백 과정에서 특정 키워드에 과적합(Overfitting)되지 않도록 일반적인 규칙을 도출하며, "최신성을 과소평가함"이나 "키워드 일치에 과도하게 비중을 둠" 같은 구체적인 오류 패턴을 수정합니다. * 이 최적화 루프는 '평가-피드백-프롬프트 수정-재평가' 과정을 반복하며 목표 지표인 NMSE를 최소화하는 최적의 프롬프트를 찾아냅니다. **결론 및 권장사항** LLM 시스템을 프로덕션 수준으로 확장할 때 가장 큰 장애물은 모델 변경이나 프롬프트 수정 시 발생하는 예기치 못한 성능 저하입니다. Dropbox의 사례처럼 DSPy와 같은 프레임워크를 활용해 프롬프트 엔지니어링을 '체계적인 최적화 프로세스'로 전환하면, 모델 이식성을 높이고 운영 비용을 획기적으로 낮추면서도 품질을 일정하게 유지할 수 있습니다. 특히 대규모 관련성 평가가 필요한 시스템이라면 수동 튜닝 대신 측정 가능한 지표 중심의 자동화된 최적화 루프를 구축하는 것을 권장합니다.

cloudflare원문

RFC 9457 준수 오류 응답으로 에이전트 토큰 비용 98% 절감하기 (새 탭에서 열림)

Cloudflare는 AI 에이전트가 에러 발생 시 불필요한 토큰을 낭비하지 않도록 RFC 9457 표준을 준수하는 마크다운(Markdown) 및 JSON 형식의 구조화된 에러 응답 기능을 도입했습니다. 기존의 무거운 HTML 페이지 대신 기계가 읽을 수 있는 지침을 제공함으로써 에러 응답의 페이로드 크기와 토큰 사용량을 98% 이상 절감했습니다. 이를 통해 AI 에이전트는 에러의 원인을 정확히 파악하고 재시도 여부나 대기 시간 등을 즉각적으로 판단하여 효율적인 워크플로우를 유지할 수 있게 되었습니다. ### 기존 HTML 에러 응답의 문제점 * 기존의 에러 페이지는 브라우저를 사용하는 사람을 위해 수백 줄의 HTML, CSS, 마크업으로 구성되어 있어 AI 에이전트에게는 불필요한 데이터가 너무 많았습니다. * 에이전트가 HTML을 파싱하더라도 단순히 "접근 거부"와 같은 상태만 알 수 있을 뿐, 재시도가 가능한지 또는 얼마나 기다려야 하는지에 대한 실행 가능한 지침을 얻기 어려웠습니다. * 에이전트 개발자들은 사이트별로 각기 다른 에러 페이지를 처리해야 하는 번거로움이 있었으며, 이는 높은 비용과 비효율성을 초래했습니다. ### RFC 9457 기반의 구조화된 응답 도입 * Cloudflare는 HTTP API의 에러 보고 표준인 RFC 9457(Problem Details for HTTP APIs)을 준수하는 응답을 제공합니다. * 에이전트가 요청 헤더에 `Accept: text/markdown`, `Accept: application/json`, 또는 `Accept: application/problem+json`을 포함하면 Cloudflare는 그에 맞는 구조화된 응답을 반환합니다. * 현재 DNS 오류, WAF 차단, 속도 제한(Rate limiting) 등을 포함하는 모든 '1xxx' 클래스 에러에 적용되었으며, 향후 Cloudflare가 생성하는 4xx 및 5xx 에러로 확대될 예정입니다. ### 에이전트를 위한 실행 가능한 지침 제공 * **마크다운 형식:** 기계가 읽을 수 있는 YAML 프론트매터(Frontmatter)와 사람이 읽을 수 있는 구체적인 지침(What happened, What you should do) 섹션으로 나뉩니다. * **핵심 데이터 필드:** 응답에는 `error_code`, `retryable`(재시도 가능 여부), `retry_after`(재시도 대기 시간), `owner_action_required`(소유자 조치 필요 여부) 등 에이전트의 제어 흐름에 직접 활용 가능한 필드가 포함됩니다. * **표준화된 스키마:** RFC 9457의 `type`, `status`, `title`, `detail`, `instance` 멤버를 사용하여 특정 API에 의존하지 않고도 범용적으로 에러를 해석할 수 있게 설계되었습니다. ### 효율성 및 구현 방식 * 실제 '1015(속도 제한)' 에러 응답을 기준으로 측정했을 때, HTML 대비 페이로드 크기와 토큰 사용량이 98% 이상 감소했습니다. * 이 기능은 Cloudflare 네트워크 전반에 자동으로 적용되므로 사이트 소유자가 별도로 설정할 필요가 없습니다. * 클라이언트가 명시적으로 마크다운이나 JSON을 요청하지 않는 한, 일반 브라우저 사용자에게는 이전과 동일한 HTML 페이지가 제공되어 하위 호환성을 유지합니다. AI 에이전트나 자동화 도구를 개발하고 있다면, 요청 헤더에 적절한 `Accept` 타입을 설정하는 것만으로도 인프라 비용을 획기적으로 줄이고 에러 처리 로직의 신뢰성을 높일 수 있습니다. 이는 더 이상 에러 페이지가 단순한 '차단벽'이 아니라 에이전트를 위한 '실행 지침'으로 기능함을 의미합니다.

datadog원문

에이전트를 위한 MCP 도구 설계: Datadog의 MCP 서버 구축을 통해 배운 교훈 (새 탭에서 열림)

AI 에이전트를 위한 관측성(Observability) 인터페이스 구축 시, 단순히 기존 API를 그대로 노출하는 방식은 컨텍스트 창의 한계와 비용 문제로 인해 한계가 명확합니다. Datadog은 MCP(Model Context Protocol) 서버를 구축하며 데이터 포맷 최적화, SQL 기반 쿼리 도입, 도구의 효율적 관리라는 세 가지 핵심 설계를 통해 에이전트의 작업 효율을 극대화했습니다. 결과적으로 이러한 설계 변경은 에이전트의 추론 정확도를 높이는 동시에 토큰 사용량을 줄여 운영 비용을 절감하는 효과를 가져왔습니다. ### 컨텍스트 창 효율성 극대화 * **데이터 포맷 최적화**: JSON은 프로그래밍 방식에는 적합하지만 토큰 소모가 큽니다. 평면적인 데이터에는 CSV(토큰 약 50% 절감)를, 계층 구조가 있는 데이터에는 YAML(약 20% 절감)을 사용하여 동일한 컨텍스트 내에 더 많은 정보를 담았습니다. * **필드 트리밍**: 에이전트에게 불필요한 필드를 기본 출력에서 제거하고 필요한 경우에만 요청하게 함으로써, 동일한 토큰 예산 내에서 레코드 수용량을 최대 5배까지 늘렸습니다. * **토큰 기반 페이지네이션**: 레코드 개수 단위로 데이터를 끊어 보내는 전통적인 방식 대신, 실제 소비되는 토큰량을 기준으로 응답을 제한하여 에이전트의 컨텍스트 창이 예기치 않게 가득 차는 문제를 방지했습니다. ### 단순 조회를 넘어선 SQL 기반 쿼리 도입 * **서버 측 집계**: 에이전트가 수천 개의 로그를 직접 내려받아 트렌드를 분석하는 대신, 서버에서 SQL을 실행하여 요약된 결과만 받도록 개선했습니다. * **비용 및 성능 개선**: SQL을 통해 꼭 필요한 필드만 선택(SELECT)하고 행을 제한(LIMIT)함으로써, 평가 시나리오에서 실행 비용을 약 40% 절감하고 정답률을 높였습니다. * **에이전트 적응력**: AI 에이전트는 SQL 작성에 매우 능숙하며, 이를 통해 컨텍스트 윈도우에 들어갈 데이터를 스스로 세밀하게 제어할 수 있게 되었습니다. ### 도구 비대화 방지 및 관리 전략 * **유연한 도구 설계**: 개별 API 엔드포인트마다 도구를 만드는 대신, 하나의 도구가 여러 유즈케이스를 처리할 수 있도록 스키마를 범용적으로 설계하여 도구의 총 개수를 줄였습니다. * **도구 세트(Toolsets) 분리**: 모든 도구를 한꺼번에 노출하지 않고, 핵심 도구와 특정 워크플로우를 위한 선택적 도구 세트를 구분하여 에이전트의 혼란을 방지하고 컨텍스트 소모를 최소화했습니다. * **도구 계층화**: "어떻게 작업을 수행할지"를 묻는 도구와 실제 동작 도구를 분리하여 검색 효율을 높였습니다. 다만, 이 방식은 레이턴시 증가라는 기회비용이 발생하므로 신중한 적용이 필요합니다. AI 에이전트를 위한 도구를 설계할 때는 인간 사용자를 위한 API 설계와는 다른 접근이 필요합니다. 에이전트가 데이터를 직접 처리하게 두기보다, 서버 측에서 데이터를 가공하고 요약할 수 있는 강력한 쿼리 기능을 제공하고 전송 포맷을 최적화하는 것이 성능과 비용 측면에서 모두 유리합니다.

toss원문

토스페이먼츠의 Open API 생태계 (새 탭에서 열림)

토스페이먼츠는 Open API를 단순한 통신 수단을 넘어 수십 년간 안정적으로 운영되어야 할 핵심 인프라로 정의합니다. 20만 개 이상의 가맹점이 사용하는 환경에서 개발자의 인지 부하를 줄이고 연동 신뢰성을 높이기 위해, 리소스 중심의 인터페이스 설계와 자동화된 생태계 구축을 최우선 과제로 삼고 있습니다. 이러한 철학은 기술적 완성도를 넘어 가맹점 개발자가 겪는 전반적인 경험(DX)의 질을 결정짓는 근간이 됩니다. ### 리소스 중심의 일관된 인터페이스 설계 * **직관적인 경로 규칙**: 가맹점이 URL 구조만 보고도 기능을 예측할 수 있도록 `버전/도메인/리소스 고유 ID` 순서의 일관된 경로 체계를 사용합니다. 특정 리소스 지정 외의 조건은 쿼리 파라미터나 JSON 필드로 분리하여 명확성을 높였습니다. * **중첩 객체를 활용한 모듈화**: 카드 정보나 현금영수증 내역처럼 여러 API에서 반복되는 데이터는 JSON의 계층 구조를 활용해 객체 형태로 모듈화합니다. 이는 데이터 중복을 줄이고 응답의 의미를 명확하게 전달하며, null 체크 등 가맹점의 코드 로직을 간소화합니다. * **도메인별 객체 재사용**: 승인, 조회, 취소 등 연관된 도메인의 API들이 동일한 응답 객체를 공유하도록 설계하여, 개발자가 새로운 API를 연동할 때 추가적인 학습 없이 결과를 예측할 수 있게 합니다. * **자연어 기반 데이터 표현**: 시스템 효율을 위한 코드 값(예: SC0010) 대신 "현대", "국민"과 같은 직관적인 한글 데이터를 제공합니다. 또한 `Accept-Language` 헤더에 따라 영문 등으로 응답을 자동 전환하는 로컬라이제이션(Localization)을 지원합니다. * **표준화된 오류 처리**: HTTP 상태 코드로 큰 틀의 성공/실패를 구분하고, 상세한 에러 코드와 메시지를 담은 표준 객체를 응답 바디에 포함하여 가맹점이 상황에 맞춰 유연하게 대응할 수 있도록 돕습니다. ### 비동기 처리를 위한 안정적인 웹훅 체계 * **이벤트 기반 처리**: 즉각적인 응답이 어려운 비동기 결제 상황에서 서버가 클라이언트에 처리 완료를 알리는 웹훅 인터페이스를 API와 함께 제공합니다. * **데이터 구조의 일관성**: 웹훅을 통해 전달되는 데이터 페이로드를 일반 API 응답과 동일한 리소스 객체 구조로 설계하여 가맹점의 파싱 로직 중복을 방지합니다. * **지수 백오프(Exponential Backoff) 재전송**: 네트워크 이슈나 가맹점 서버 장애로 인한 웹훅 전송 실패 시, 수신 서비스의 회복 시간을 고려하여 점진적으로 재시도 간격을 늘리는 전략을 사용합니다. * **자가 조치 도구 제공**: 개발자가 직접 웹훅 전송 내역을 조회하고 필요 시 수동으로 재전송할 수 있는 기능을 개발자 센터를 통해 지원하여 운영 편의성을 높였습니다. ### 개발자 경험(DX) 강화를 위한 문서 자동화 * **OAS 기반 실시간 동기화**: 수동 문서 작성의 한계를 극복하기 위해 OpenAPI Specification(OAS)과 Springdoc 라이브러리를 활용하여 서버 코드와 문서가 실시간으로 동기화되는 시스템을 구축했습니다. * **문서의 신뢰성 확보**: API 스펙이 변경될 때마다 연동 문서가 즉시 업데이트되므로, 가맹점 개발자는 항상 실제 동작하는 서버와 일치하는 최신 명세를 바탕으로 안심하고 개발할 수 있습니다. 토스페이먼츠의 사례처럼 좋은 Open API는 단순히 기능의 유무를 넘어, 개발자가 '설명 없이도 이해할 수 있는' 직관적인 구조와 자동화된 지원 환경을 갖추어야 합니다. 특히 리소스 중심 설계와 API-웹훅 간 데이터 일관성은 가맹점의 연동 비용을 획기적으로 낮추는 실용적인 전략이 될 수 있습니다.

datadog원문

수천 개의 예측 불가능한 엔드포인트에 안정적으로 로그를 전달한 방법 (새 탭에서 열림)

Datadog은 수천 개의 외부 엔드포인트로 로그를 안정적으로 전달하기 위해 물리적인 택배 배송 서비스의 원리를 소프트웨어 아키텍처에 도입했습니다. 특히 Kafka의 엄격한 순차 처리(FIFO) 특성으로 인해 발생하는 '특정 목적지의 장애가 전체 시스템을 마비시키는 문제'를 해결하는 데 집중했습니다. 이를 통해 저지연, 고처리량, 그리고 높은 신뢰성을 보장하는 멀티테넌트 로그 전달 시스템을 구축할 수 있었습니다. ### 로그 포워딩의 역할과 내부 데이터 흐름 * Datadog 로그 포워딩은 내부에서 처리된 JSON 형식의 로그를 ElasticSearch, Splunk, 또는 커스텀 HTTP 엔드포인트와 같은 외부 목적지로 전송하는 디지털 배송 서비스입니다. * 모든 로그 데이터는 내부적으로 Kafka 토픽을 통해 이동하며, 이는 마치 물류 센터의 컨베이어 벨트처럼 작동하여 데이터의 순서를 보장합니다. * 다양한 고객과 목적지로 향하는 로그들이 Kafka 파티션 내에 혼합되어 흐르기 때문에, 이를 목적지별로 다시 그룹화하여 효율적으로 전달하는 과정이 필요합니다. ### 외부 엔드포인트 연동 시 발생하는 병목 현상 * **엔드포인트 불확실성**: 외부 수신 서버는 Datadog의 통제 밖에 있으며, 수시로 응답이 느려지거나 일시적으로 오프라인 상태가 될 수 있습니다. * **Head-of-Line Blocking**: Kafka는 파티션 내의 데이터를 순서대로 처리(Commit)해야 합니다. 만약 특정 목적지의 서버가 응답하지 않아 전송에 실패하면, 해당 파티션에 담긴 다른 모든 목적지의 로그들까지 전송이 중단되는 병목 현상이 발생합니다. * **데이터 유실과 중복의 트레이드오프**: 전송 성공 확인 없이 다음 데이터를 읽으면 유실 위험이 있고, 성공할 때까지 무한히 재시도하면 전체 시스템의 지연 시간(Latency)이 급격히 증가합니다. ### 대규모 멀티테넌시 환경의 설계 제약 * **리소스 효율성**: 수만 개의 목적지마다 별도의 Kafka 토픽을 생성하는 것은 운영 오버헤드와 리소스 낭비가 너무 커서 현실적으로 불가능합니다. * **처리량 최적화**: 매 로그마다 HTTP 요청을 보내는 대신, 택배를 모아서 한 번에 배송하듯 적절한 '배치(Batch)' 처리를 통해 네트워크 오버헤드를 줄여야 합니다. * **보호 메커니즘**: 고객의 엔드포인트가 과부하로 인해 다운되지 않도록 전송 속도를 조절(Rate Limiting)하는 기능이 필수적입니다. ### 실용적인 결론 대규모 분산 시스템에서 외부 시스템과 연동하는 기능을 설계할 때는 **"단일 장애 지점이 전체 시스템에 미치는 영향"**을 최소화하는 격리 전략이 핵심입니다. Kafka와 같은 FIFO 기반 시스템을 사용할 경우, 장애가 발생한 데이터 스트림을 별도의 재시도 경로로 분리하여 정상적인 데이터 흐름이 방해받지 않도록 아키텍처를 구성해야 합니다.

datadog원문

Vale를 사용하여 문서 편집 프로세스를 개선하는 방법 (새 탭에서 열림)

데이터독(Datadog) 문서화 팀은 수많은 기여자 사이에서 일관된 문서 품질을 유지하기 위해 오픈 소스 산문 린터(Prose Linter)인 'Vale'을 도입하여 스타일 가이드 적용을 자동화했습니다. 개발자들이 코드 린터를 사용하듯 문서에도 자동화된 검사 도구를 통합함으로써, 1,400명이 넘는 기여자가 생성하는 방대한 양의 문서를 효율적으로 관리하고 기술 작가의 리뷰 부담을 획기적으로 줄였습니다. 결과적으로 이 시스템은 고품질의 문서를 더 빠르게 배포할 수 있는 '시프트 레프트(Shift-left)' 전략을 실현했습니다. **대규모 문서 관리의 한계와 자동화의 필요성** * 데이터독은 약 1,400명의 내부 및 외부 기여자가 생성하는 35개 이상의 제품 문서를 관리하며, 연간 20,000개 이상의 풀 리퀘스트(PR)를 처리합니다. * 기술 작가 한 명당 개발자 비율이 1:200에 달하는 상황에서, 모든 문서의 문법, 전문 용어, 시제, 성별 중립적 언어 등을 수동으로 검토하는 것은 불가능에 가깝습니다. * LLM(대형 언어 모델)을 사용하더라도 데이터독 특유의 스타일 가이드(예: 옥스퍼드 콤마 사용, 'currently' 같은 시간 표현 지양 등)를 완벽히 준수하기 어렵기 때문에 자동화된 검증 도구가 필수적입니다. **Vale를 활용한 문서 스타일 린팅** * 오픈 소스 도구인 Vale를 GitHub Actions와 통합하여 CI(지속적 통합) 워크플로우 내에서 문서 스타일을 자동으로 검사합니다. * 기여자가 PR을 생성하면 Vale가 `vale.ini` 설정 파일을 바탕으로 HTML 및 마크다운 파일을 스캔하고, 수정이 필요한 부분에 직접 자동 댓글을 남깁니다. * 이를 통해 기여자는 기술 작가가 리뷰를 시작하기 전에 스스로 문장을 수정할 수 있으며, 작가들은 반복적인 스타일 수정 작업에서 벗어나 콘텐츠의 기술적 정확성에 더 집중할 수 있습니다. **스타일 가이드의 코드화와 규칙 적용** * 기존에 Confluence나 위키에 흩어져 있던 복잡한 편집 지침을 YAML 형식의 린트 규칙으로 변환하여 관리합니다. * **불필요한 단어 제거**: `words.yml` 규칙을 통해 'easily', 'simply'와 같이 객관성이 떨어지는 수식어나 불필요한 전문 용어를 감지하여 경고를 보냅니다. * **구두점 및 문법 강제**: `oxfordcomma.yml`과 같은 규칙에 정규 표현식(Regex)을 사용하여 나열된 항목들 사이에 옥스퍼드 콤마가 누락된 경우를 찾아냅니다. * **약어 대체**: 라틴어 약어(e.g., i.e. 등)를 쉬운 영어 표현(for example, that is 등)으로 대체하도록 유도하는 `abbreviations.yml` 규칙을 적용하여 가독성을 높입니다. **실용적인 제언** 규모가 커지는 조직에서 문서의 일관성을 유지하고 싶다면, 스타일 가이드를 단순한 문서로 남겨두지 말고 Vale와 같은 도구를 통해 '코드로서의 문서(Docs-as-code)' 환경에 통합하는 것이 좋습니다. 처음에는 옥스퍼드 콤마나 금지어 목록 같은 간단한 규칙부터 시작하여 점진적으로 자동화 범위를 넓히면 리뷰 효율을 극대화할 수 있습니다.

figma3분 읽기큐레이션 요약

비하인드 스토리: 국제 키

Figma는 미국 키보드 기준으로 설계된 단축키가 국제 키보드 사용자에게 작동하지 않는 문제를 해결하기 위해 1년간 단축키 시스템을 개선했다. 문제는 단순히 키 조합을 추가하는 것이 아니라, 브라우저의 키보드 이벤트 처리, 문자 정규화, 키보드 레이아웃 감지 등 여러 계층에 걸쳐 있었다. 특히 독일어 `ß`처럼 대소문자 변환만으로는 안전하게 처리할 수 없는 문자와 수천 가지 키보드 레이아웃이 복잡성을 높였다. ### 국제 키보드에서 발생한 단축키 문제 - Figma의 기존 단축키는 미국 키보드를 기준으로 설계되었다. - 일부 사용자는 키보드에 존재하지 않는 키를 요구받았다. - `⌘ + \`로 UI를 전환해야 하지만 `\` 키가 없는 경우 - `/` 키를 누를 수 없어 Cursor Chat을 시작할 수 없는 경우 - 단축키는 작업 효율성과 접근성에 중요한 기능이므로, 모든 지역의 사용자가 동일한 기능을 이용할 수 있어야 했다. - 이를 해결하기 위해 에디터 사용성 팀을 중심으로 여러 직군이 참여한 프로젝트가 시작되었다. ### Figma의 단축키 처리 구조 - 사용자가 키를 누르면 브라우저가 `KeyboardEvent`를 Figma에 전달한다. - Figma는 이벤트를 에디터가 해석할 수 있는 내부 표현으로 변환한다. - 가능한 단축키와 실행할 동작은 JSON 파일에 정의되어 있다. - 단축키 활성화 여부는 다음과 같은 상태에 따라 달라진다. - 사용자 설정 - 현재 사용 중인 Figma 제품 - 운영체제 - 기타 제품 상태 - 입력된 키 조합을 정의된 단축키 목록과 비교해 일치하면 해당 동작을 실행한다. ### 단순한 단축키 추가로 해결되지 않은 이유 - 처음에는 키보드별 대체 조합을 JSON에 추가하면 될 것처럼 보였다. - 스웨덴어 키보드: `⌘ + ]` 대신 `Meta + Ä` - 한국어 키보드: `⌘ + \` 대신 `₩` - 그러나 단축키를 정규화하는 과정에서 언어별 문자의 특수성이 드러났다. - 독일어 키보드의 `Meta + Alt + ß`를 처리할 때 JavaScript의 `"ß".toUpperCase()`가 `SS`로 변환되었다. - 하나의 키 문자가 두 글자로 늘어나면서 단일 키 단축키라는 전제가 깨졌다. - 더 나아가 `"ß".toUpperCase().toLowerCase()`도 원래의 `ß`로 되돌아가지 않았다. - Figma는 대문자 에스체트인 `ẞ`를 사용해 우회했다. - `ẞ`는 대문자로 변환해도 동일하게 유지된다. - 이 문자는 2017년 독일 철자위원회에서 공식 채택되었지만, 프로그래밍 언어와 도구의 지원은 아직 완전하지 않았다. ### 키보드 레이아웃 감지의 어려움 - 전 세계에는 매우 많은 키보드 레이아웃이 있어, 처음부터 모두 지원하기는 어려웠다. - Figma는 사용자가 많이 사용하는 레이아웃부터 지원하기로 했다. - 데스크톱 앱에서는 운영체제의 키보드 설정을 직접 감지할 수 있었다. - 브라우저에서는 운영체제 정보를 충분히 얻기 어려워 실험적인 Keyboard API와 휴리스틱을 사용했다. - API가 제공하는 키 위치별 문자를 알려진 레이아웃과 비교해 사용자의 레이아웃을 추정했다. - 예를 들어 `Quote` 키 위치에 `ä`가 입력되는지 확인하고 다른 키 정보와 조합해 스웨덴어 키보드인지 추론한다. - 실제 사용 데이터를 수집한 결과, 30일 동안 Figma에서 2,500개가 넘는 서로 다른 키보드 레이아웃이 관찰되었다. - 이는 키보드 레이아웃의 다양성이 예상보다 훨씬 크며, 국제 단축키 지원이 단순한 지역별 매핑 이상의 문제임을 보여준다. 국제 키보드 단축키를 설계할 때는 특정 국가의 키 조합을 추가하는 데 그치지 말고, 문자 정규화의 언어적 예외, 브라우저와 데스크톱 환경의 감지 차이, 레이아웃의 폭넓은 다양성을 함께 고려해야 한다. 특히 키 이름이나 문자를 문자열로만 처리하면 `ß` 사례처럼 예기치 않은 변환이 발생할 수 있으므로, 키 위치와 입력 문자를 구분하는 견고한 설계가 필요하다.

원문 읽기(새 탭에서 열림)