yaml

6 개의 포스트

CI 전문가 및 데이터 분석가 AI 에이전트, 개발 격차 해소 겨냥 (새 탭에서 열림)

GitLab 18.11 버전에서 새롭게 출시된 'CI Expert Agent'와 'Data Analyst Agent'는 AI로 인해 급증한 코드 생산량과 이를 뒷받침하지 못하는 기존 시스템 사이의 간극을 메우는 데 집중합니다. 이 에이전트들은 GitLab Duo Agent Platform을 기반으로 개발되었으며, 외부 도구와 달리 GitLab 내부의 실제 파이프라인 데이터와 개발 주기 맥락을 실시간으로 파악하여 맞춤형 해결책을 제시합니다. 결과적으로 개발팀은 복잡한 CI 설정이나 데이터 분석에 소요되는 시간을 획기적으로 줄이고 실제 혁신과 배포에 더 집중할 수 있게 되었습니다. ### 효율적인 파이프라인 구축을 위한 CI Expert Agent (Beta) 개발자가 코드를 작성한 후 실제 실행 가능한 파이프라인을 구축하기까지 발생하는 병목 현상을 해결합니다. * **저장소 자동 분석:** 저장소 내 코드를 직접 검사하여 사용된 언어와 프레임워크, 테스트 환경을 스스로 감지합니다. * **YAML 자동 생성:** 수동으로 `.gitlab-ci.yml` 파일을 작성할 필요 없이, 해당 프로젝트에 최적화된 실행 가능한 빌드 및 테스트 구성을 즉시 제안합니다. * **대화형 가이드:** Agentic Chat을 통해 파이프라인의 각 단계가 왜 필요한지 평이한 언어로 설명해주어, CI 설정 경험이 적은 개발자도 쉽게 이해할 수 있습니다. * **맥락 기반 최적화:** GitLab 내부에서 실행되므로 과거 파이프라인의 성공 및 실패 패턴을 학습하여 팀의 작업 방식에 맞게 지속적으로 개선됩니다. ### 자연어 기반 데이터 분석을 지원하는 Data Analyst Agent (GA) 소프트웨어 개발 수명 주기(SDLC)에서 발생하는 방대한 데이터를 복잡한 쿼리 없이 자연어로 간단히 분석할 수 있게 돕습니다. * **자연어 질의 및 시각화:** "MR 리뷰에 시간이 얼마나 걸리나요?"와 같은 질문을 던지면 즉시 데이터를 분석하여 시각화된 차트와 답변을 제공합니다. * **역할별 맞춤 인사이트:** 엔지니어링 매니저는 사이클 타임을, 개발자는 플래키(Flaky) 테스트 패턴을, 플랫폼 엔지니어는 러너 활용률을 즉각적으로 파악할 수 있습니다. * **확장된 분석 범위:** 정식 출시(GA) 단계인 이번 버전에서는 MR과 이슈를 넘어 프로젝트, 파이프라인, 개별 작업(Jobs)까지 분석 범위가 대폭 확대되었습니다. * **쿼리 호환성:** 생성된 GLQL(GitLab Query Language)은 복사하여 대시보드나 마크다운 문서 등 GitLab 내 어디서든 재사용할 수 있습니다. ### 통합 플랫폼 환경에서의 실용적 가치 GitLab은 AI가 단순히 코드 작성을 돕는 수준을 넘어, 생성된 코드를 안전하게 배포하고 그 성과를 측정하는 전 과정을 가속화해야 한다고 강조합니다. CI Expert Agent와 Data Analyst Agent는 GitLab 플랫폼의 고유한 데이터를 직접 활용하므로 별도의 외부 도구 동기화가 필요 없으며, 사용할수록 팀의 특성에 맞는 정교한 어시스턴트로 진화합니다. 현재 GitLab Duo Agent Platform 무료 체험을 통해 이러한 에이전트들의 성능을 직접 경험해 볼 수 있습니다.

자동 종료 정책으로 대규모 취약점 노이즈 관리하기 (새 탭에서 열림)

GitLab의 자동 취약점 상태 해제(auto-dismiss) 정책은 보안 스캐너에서 발생하는 막대한 양의 노이즈를 효과적으로 관리하여 보안팀이 실제 중요한 취약점에 집중할 수 있게 돕습니다. 테스트 코드, 외부 라이브러리, 자동 생성된 파일 등 실제 수정이 필요 없는 항목들을 정책에 따라 자동으로 제외함으로써 보안 심사 효율을 높이고 개발 부서와의 마찰을 줄일 수 있습니다. 이 기능은 단순히 경고를 숨기는 것이 아니라 해제 사유를 투명하게 기록하고 대규모 프로젝트에 일관된 기준을 적용한다는 점에서 핵심적인 보안 운영 도구입니다. ### 자동 취약점 상태 해제의 필요성과 장점 * **트리아지(Triage) 노이즈 제거:** 테스트 코드나 벤더링된 의존성 파일에서 반복적으로 발생하는 불필요한 보안 경고를 자동으로 처리하여 보안팀의 업무 과부하를 방지합니다. * **조직적 일관성 유지:** 조직 전체에 공통적으로 적용되는 오탐(False Positive) 기준을 중앙에서 정책으로 관리하여 모든 프로젝트에 일관되게 적용할 수 있습니다. * **감사 투명성 및 데이터 보존:** 스캐너 제외 방식과 달리, 해제된 취약점도 보고서에 기록으로 남으며 정책 링크와 해제 사유가 포함되어 사후 검토 및 감사가 용이합니다. ### 정책 작동 원리 및 적용 단계 * **YAML 기반 정책 정의:** 취약점 관리 정책 파일에 파일 경로, 디렉토리명 또는 특정 식별자(CVE, CWE)를 매칭 기준으로 설정하고, 해제 사유(예: 테스트 용도, 완화 제어 등)를 명시합니다. * **정책 활성화:** GitLab의 '보안 > 정책' 메뉴에서 취약점 관리 정책을 새로 생성하고 머지 요청(MR)을 통해 활성화합니다. * **파이프라인 연동:** 기본 브랜치 파이프라인이 실행될 때마다 정책이 적용되며, 실행당 최대 1,000개의 일치하는 취약점을 자동으로 '해제(Dismissed)' 상태로 변경합니다. * **결과 분석:** 취약점 보고서에서 '해제됨' 상태로 필터링하여 정책이 의도대로 작동했는지 확인하고 보안 임팩트를 측정할 수 있습니다. ### 주요 활용 사례 및 구성 시나리오 * **테스트 및 스펙 코드 제외:** `test/**/*`, `spec/**/*` 등 테스트 디렉토리에서 발견되는 하드코딩된 자격 증명이나 안전하지 않은 픽스처 관련 경고를 '테스트 사용' 사유로 자동 해제합니다. * **외부 의존성 및 벤더링 코드 관리:** `vendor/`, `node_modules` 등 직접 수정 권한이 없거나 상류(Upstream)에서 관리되는 외부 코드의 취약점을 필터링합니다. * **알려진 오탐 CVE 처리:** 조직 환경에서 위협이 되지 않는 것으로 확인된 특정 CVE 번호를 식별자로 등록하여 반복적인 수동 개입을 방지합니다. * **자동 생성된 코드 예외 처리:** Protobuf, gRPC, OpenAPI 생성기 등이 만든 파일(`**/*.pb.go` 등)에서 발생하는 수정 불가능한 패턴을 관리 대상에서 제외합니다. * **인프라 수준의 완화 조치 반영:** WAF(웹 방화벽)나 런타임 보호 도구에 의해 이미 방어되고 있는 XSS(CWE-79), SQL 주입(CWE-89) 등의 취약점에 '완화 제어 적용' 사유를 부여합니다. 효율적인 보안 운영을 위해서는 무분별한 경고 확인보다 정교한 정책 수립이 중요합니다. 처음에는 테스트 디렉토리와 같이 명확한 영역부터 자동 해제 정책을 적용해보고, 점진적으로 오탐으로 확인된 CVE나 CWE로 범위를 넓혀가며 보안 팀의 생산성을 극대화할 것을 추천합니다.

에이전트를 위한 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 설계와는 다른 접근이 필요합니다. 에이전트가 데이터를 직접 처리하게 두기보다, 서버 측에서 데이터를 가공하고 요약할 수 있는 강력한 쿼리 기능을 제공하고 전송 포맷을 최적화하는 것이 성능과 비용 측면에서 모두 유리합니다.

플로우 이해하기: 멀티 (새 탭에서 열림)

GitLab Duo Agent Platform의 '플로우(Flows)'는 여러 전문 AI 에이전트가 협업하여 복잡한 개발 과업을 자율적으로 수행하는 멀티 에이전트 워크플로우 시스템입니다. 사용자와 대화하며 협력하는 개별 에이전트와 달리, 플로우는 특정 이벤트에 의해 트리거되어 백그라운드에서 분석부터 실제 구현 및 결과 도출까지 엔드 투 엔드(end-to-end) 작업을 독립적으로 처리합니다. 이를 통해 개발자는 반복적인 파이프라인 관리나 단순 구현 업무에서 벗어나 보다 고차원적인 설계에 집중할 수 있는 자율형 자동화 환경을 구축할 수 있습니다. ### 에이전트와 플로우의 차이 및 주요 특징 * **자율성:** 에이전트가 사용자와 상호작용하며 실시간으로 도움을 준다면, 플로우는 사용자를 대신해 독립적으로 워크플로우를 완수하는 데 초점을 맞춥니다. * **플랫폼 통합:** 별도의 외부 인프라 구축 없이 GitLab 플랫폼의 컴퓨팅 자원에서 직접 실행되는 내장형 시스템입니다. * **비동기 및 이벤트 기반:** 멘션(@), 담당자 할당, 리뷰어 지정 등의 이벤트로 트리거되며, 작업이 진행되는 동안 개발자는 다른 업무를 중단 없이 수행할 수 있습니다. * **기본 및 커스텀 옵션:** GitLab이 직접 관리하는 생산 준비 완료 단계의 '기본 플로우'와 팀의 특정 요구에 맞춰 구성하는 '커스텀 플로우'를 모두 지원합니다. ### 커스텀 플로우의 활용과 트리거 방식 * **팀 맞춤형 자동화:** 조직 고유의 보안 정책 검토, 특정 기술 스택에 맞춘 코드 리뷰, API 문서 자동 생성 등 범용 AI가 해결하기 어려운 구체적인 워크플로우를 자동화할 수 있습니다. * **다양한 실행 경로:** 이슈나 머지 리퀘스트(MR)에서 `@flow-name`으로 멘션하거나, `/assign @flow-name` 명령어를 통해 담당자 또는 리뷰어로 지정하는 즉시 실행됩니다. * **실제 활용 사례:** 핀테크 기업의 경우 컴플라이언스 플로우를 구축하여, 모든 MR에 대해 PCI-DSS 위반 여부를 스캔하고 보안 코딩 표준 준수 여부를 확인한 뒤 자동으로 보고서를 게시하도록 설정할 수 있습니다. ### YAML 기반의 플로우 설계 및 구성 요소 * **구조적 정의:** 플로우는 YAML 구성을 통해 정의되며 구성 요소(Components), 프롬프트(Prompts), 라우터(Routers), 도구 모음(Toolsets)으로 이루어집니다. * **에이전트 컴포넌트:** 워크플로우의 각 단계를 담당할 에이전트의 유형과 동작 방식을 정의하며, 특정 AI 모델의 행동 지침을 프롬프트 ID로 연결합니다. * **강력한 도구 연결:** `get_issue`, `create_commit`, `create_merge_request`와 같은 GitLab API 도구를 에이전트에게 부여하여 실제로 코드를 수정하고 저장소에 반영할 수 있는 권한을 제공합니다. * **전문성 주입:** 프롬프트 템플릿 내에 도메인 지식(예: 여행 예약 시스템의 특수성)과 코드 표준을 명시하여 AI가 조직의 맥락에 맞는 최적의 결과물을 내놓도록 정교하게 제어합니다. 단순한 코드 생성을 넘어 복잡한 프로세스의 완전 자동화를 목표로 한다면, 팀 내에서 가장 반복적으로 발생하는 작업부터 커스텀 플로우로 전환해 보길 권장합니다. 처음에는 GitLab에서 제공하는 기본 플로우로 기능을 탐색한 뒤, 점진적으로 팀의 정책이 반영된 YAML 정의 플로우를 확장해 나가는 것이 생산성 향상에 가장 효과적입니다.

Secure publication of Datadog Agent integrations with TUF and in-toto (새 탭에서 열림)

Datadog은 에이전트 통합 기능의 배포 주기를 에이전트 본체와 분리하여 자동화하는 동시에, 전체 공급망의 보안을 보장하기 위해 TUF(The Update Framework)와 in-toto를 도입했습니다. 기존의 TLS나 GPG 방식이 해결하지 못하는 인프라 침해 공격에 대응하기 위해, 개발자의 코드 커밋부터 최종 사용자의 설치 단계까지 모든 과정을 검증 가능한 구조로 설계했습니다. 이를 통해 Datadog은 자동화된 배포의 효율성과 '침해 저항성(Compromise-resilience)'을 갖춘 강력한 보안을 동시에 달성했습니다. ## 자동 배포의 필요성과 보안 과제 * **배포 주기 분리:** 수백 개의 통합 패키지를 에이전트 릴리스와 분리하여 독립적으로 업데이트함으로써 사용자에게 최신 기능을 신속하게 제공하고자 했습니다. * **기존 보안의 한계:** TLS 암호화나 단순 GPG 서명은 중간자 공격(MitM)은 방어할 수 있지만, 개발자와 사용자 사이의 인프라가 침해되어 코드가 변조되는 상황에는 취약합니다. * **침해 저항 시스템 구축:** 인프라의 일부가 장악되더라도 소프트웨어의 진본성과 무결성을 보호할 수 있는 CI/CD 시스템이 필요했습니다. ## in-toto를 통한 소프트웨어 공급망 검증 * **단계별 무결성 보장:** 소프트웨어 공급망을 코드 작성, 패키징(Wheel 파일 생성), 서명 등 일련의 고정된 단계로 정의하고 각 단계마다 입력과 출력에 대한 서명된 메타데이터를 생성합니다. * **최종 검증 과정:** Datadog 에이전트는 설치 시 서명된 메타데이터를 검사하여, 해당 패키지가 지정된 담당자에 의해 정의된 절차대로 생성되었는지 확인합니다. * **4단계 워크플로우:** 1. 개발자가 Python 소스 코드와 YAML 설정 파일을 작성합니다. 2. CI/CD 시스템이 소스 코드를 수신하여 Python Wheel(ZIP 파일)로 패키징합니다. 3. CI/CD 시스템이 동일한 Wheel 파일들에 대해 TUF 서명을 수행합니다. 4. 에이전트가 파일을 다운로드하여 개발자가 서명한 코드와 정확히 일치하는지 최종 확인합니다. ## TUF를 활용한 안전한 키 관리 및 전송 * **신뢰의 뿌리(Root of Trust):** in-toto가 공급망 단계를 검증한다면, TUF는 검증에 사용되는 공개키를 안전하게 배포, 취소, 교체하는 역할을 담당합니다. * **공격 방어:** 메타데이터의 일관성과 진본성을 보장하며, 공격자가 이전 버전으로 되돌리는 롤백(Rollback) 공격이나 무한 재생(Replay) 공격을 방지합니다. * **오프라인 부트스트래핑:** TUF를 통해 신뢰를 오프라인에서 구축하고 하드웨어 키로 개발자 서명 키를 보호함으로써 in-toto의 보안 보장을 더욱 공고히 합니다. ## Yubikey 기반의 하드웨어 보안 서명 * **키 유출 방지:** 개발자는 GPG 서명 키를 생성하고 저장할 수 있는 하드웨어 키(Yubikey)를 사용하며, 키는 장치 외부로 내보낼 수 없습니다. * **다중 보호 계층:** 서명 작업을 승인하기 위해서는 비밀번호(PIN) 입력과 장치에 대한 물리적인 터치가 반드시 필요합니다. * **사용 편의성:** CLI 도구를 통해 in-toto와 GPG 호출 과정을 투명하게 처리하여, 개발자의 업무 흐름을 방해하지 않으면서도 키 침해 위험을 최소화했습니다. ## 사용자 경험과 실용적 결론 * **투명한 보안:** 사용자는 평소와 다름없이 에이전트를 통해 통합 기능을 설치하지만, TUF나 in-toto가 공격을 감지하면 즉시 설치를 차단하고 상세한 오류 메시지를 표시합니다. * **업계 표준 지향:** Datadog은 이처럼 두 기술을 밀접하게 통합함으로써 보안 소프트웨어 배포가 단순히 '선택 사항'이 아닌 업계의 '표준'이 되도록 기여하고 있습니다. * **추천 사항:** 자동화된 CI/CD 환경에서 보안을 강화하려는 조직은 소프트웨어 공급망의 각 단계를 투명하게 기록하는 in-toto와 키 관리 체계를 담당하는 TUF의 조합을 검토할 필요가 있습니다.

해커톤 프로젝트: 마인크래프트에서 Datadog 메트릭 보기 (새 탭에서 열림)

Datadog의 엔지니어들은 사내 해커톤을 통해 시스템 모니터링 대시보드를 마인크래프트 게임 내부에서 구현하는 실험적인 프로젝트를 진행했습니다. 파이썬과 Datadog API를 활용해 실시간 인프라 메트릭을 게임 내 블록 형태로 시각화했으며, 이를 통해 온콜(on-call) 업무 중인 엔지니어가 게임을 즐기면서도 시스템 상태를 직관적으로 확인할 수 있는 환경을 구축했습니다. 이 프로젝트는 기술적인 재미와 더불어 대용량 데이터를 게임 환경에 효율적으로 렌더링하기 위한 성능 최적화 과정을 잘 보여줍니다. ### 마인크래프트 제어와 데이터 연동 * 파이썬의 익숙함과 풍부한 라이브러리를 활용하기 위해 `py3minepi`와 Raspberry Juice API를 사용하여 마인크래프트 환경을 제어했습니다. * `mc.setBlock(x, y, z, block_id)`와 같은 간단한 함수 호출을 통해 게임 내 특정 좌표에 블록을 생성하거나 제거하며 시각화의 기초를 마련했습니다. * Datadog 파이썬 라이브러리를 통해 API 및 애플리케이션 키로 인증한 뒤, `Metric.query` 기능을 사용하여 CPU 사용량과 같은 실시간 데이터를 스트리밍했습니다. ### 설정 기반의 대시보드 및 모니터 구현 * 그래프의 위치, 크기, 방향, 색상 및 투명도와 같은 시각적 요소를 코드와 분리하기 위해 YAML 설정 파일을 도입했습니다. * 실시간 데이터를 기반으로 모니터링 상태를 반영하여, 시스템에 경고가 발생하면 빨간색 블록이 켜지고 정상 상태가 되면 초록색으로 돌아오는 시각적 알람 기능을 구현했습니다. * 단순한 그래프를 넘어 여러 메트릭을 동시에 확인할 수 있는 복합 대시보드 레이아웃을 구성하여 게임 내에서도 실제 모니터링 도구와 유사한 경험을 제공했습니다. ### 영속성 관리와 성능 최적화 과제 * **블록 영속성 문제:** 마인크래프트 블록은 한 번 생성되면 계속 유지되므로, 데이터가 갱신될 때마다 이전 블록을 지워주는 '진공(vacuum)' 함수를 작성하여 화면을 정제했습니다. * **대역폭 및 렌더링 최적화:** 웹 기반의 대시보드와 달리 JS나 CSS를 사용할 수 없으므로 데이터를 행 단위로 단순화하여 시각화했습니다. * **캐싱 도입:** 대규모 그래프를 출력할 때 데이터 파이프라인에 과부하가 걸리는 문제를 해결하기 위해, 실제 업무에서 사용하는 것과 유사한 캐싱 메커니즘을 적용하여 성능을 개선했습니다. 이 프로젝트는 엔지니어링의 본질적인 즐거움인 '해킹'을 통해 익숙한 도구를 전혀 새로운 환경에 이식한 사례입니다. 단순히 재미를 넘어 실시간 데이터 처리와 렌더링 최적화라는 기술적 도전을 담고 있으며, 관련 소스 코드는 GitHub에 공개되어 있어 누구나 자신의 메트릭을 마인크래프트 세상에 구현해 볼 수 있습니다.