본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 15. 07:01

Cosmic으로 DevOps Slack 에이전트 구축하기: "무엇이 고장 났나요?"라는 질문부터 PR 생성까지 단 한 번의 대화로

요약

Cosmic을 사용하여 Slack 내에서 작동하는 DevOps 에이전트를 구축하는 튜토리얼입니다. 에이전트는 로그 분석부터 GitHub PR 생성까지의 과정을 단 한 번의 대화로 자동화하여 컨텍스트 스위칭을 최소화합니다.

핵심 포인트

  • Slack 대화만으로 로그 분석 및 PR 생성 자동화 가능
  • Cosmic의 Code Read/Write 기능을 통한 리포지토리 제어
  • Vercel, GitHub, Slack 간의 네이티브 통합 활용
  • 에이전트의 지속성(Persistent Memory) 설정 방법 안내

만약 새벽 2시에 호출을 받고 Slack을 열어 '무엇이 고장 났나요?(what broke?)'라고 입력한 뒤, 답을 찾기 위해 터미널, 대시보드, GitHub 탭 사이를 20분 동안 오간 적이 있다면, 이 튜토리얼은 당신을 위한 것입니다.

우리는 여러분의 Slack 채널에 상주하는 DevOps 에이전트를 구축할 것입니다. 엔지니어가 "운영 환경(prod)에서 무엇이 고장 났나요?"라고 물으면, 에이전트는 다음과 같은 작업을 수행합니다:

  1. Vercel 배포 환경에서 최근 액세스 로그(access logs)를 가져옵니다.
  2. 에러 패턴(500 에러, 실패한 경로, 콘솔 예외 등)을 식별합니다.
  3. GitHub 리포지토리(repo)에서 관련 파일을 찾아냅니다.
  4. 기능 브랜치(feature branch)를 생성하고 수정 사항을 커밋(commit)합니다.
  5. 명확한 설명이 포함된 PR(Pull Request)을 생성합니다.
  6. 동일한 스레드 내의 Slack에 PR 링크를 다시 게시합니다.

이 모든 과정은 단 한 번의 대화 턴(conversation turn) 내에서 이루어집니다. 컨텍스트 스위칭(context switching)도, 별도의 도구도 필요 없습니다.

구축하게 될 내용

이것은 네 가지 기능이 활성화된 Cosmic Team Agent입니다:

  • CMS Read: 필요할 경우 콘텐츠 모델(content model)을 참조할 수 있습니다.
  • Code Read: 리포지토리를 탐색하고, 파일을 읽고, 배포 상태를 확인하며, 액세스 로그를 가져옵니다.
  • Code Write: 브랜치를 생성하고, 파일을 커밋하며, PR을 생성합니다.
  • Send Notifications: 구조화된 결과와 함께 Slack에 다시 게시합니다.

이 에이전트는 Cosmic의 네이티브 통합(native integrations)을 통해 여러분의 Slack 워크스페이스 및 GitHub 리포지토리에 연결됩니다. 커스텀 웹훅(custom webhooks)이나 제3자 연결 도구(third-party glue)는 필요하지 않습니다.

사전 요구 사항

시작하기 전에 다음이 필요합니다:

  • Cosmic 계정 (무료 티어 사용 가능: cosmicjs.com)
  • Vercel 프로젝트에 연결된 GitHub 리포지토리
  • Cosmic Slack 통합이 설치된 Slack 워크스페이스 (Bucket Settings > Integrations)

1단계: Team Agent 생성하기

Cosmic 프로젝트로 이동하여 사이드바의 Team Agents를 클릭합니다. Create Team Agent를 클릭하고 다음 내용을 입력하세요:

Name (이름): DevOps Agent (또는 'Morgan', 'Sam' 등 사람의 이름을 붙여도 됩니다)

Persona prompt (페르소나 프롬프트):

당신은 [회사 이름]의 DevOps 에이전트입니다. 당신은 운영 로그(production logs),
GitHub 리포지토리, 그리고 Slack에 접근할 수 있습니다. 운영 환경 에러에 대해 질문을 받으면:

...

Capabilities to enable (활성화할 기능):

  • Code Read ( get_access_logs, get_deployments, read_file, list_repository_files 에 대한 접근 권한 부여)
  • Code Write ( create_branch, commit_files, create_pull_request 에 대한 접근 권한 부여)
  • Send Notifications (구조화된 Slack 메시지 게시용)

Memory (메모리): 에이전트가 세션 전반에 걸쳐 최근의 장애(incidents)를 기억할 수 있도록 **Persistent (지속성)**로 설정합니다.

Step 2: GitHub 리포지토리 연결하기

Team Agent 편집 양식에서 Repository (리포지토리) 섹션을 찾으세요. 드롭다운 메뉴에서 연결된 GitHub 리포지토리를 선택합니다. 아직 연결하지 않았다면, **Project Settings (프로젝트 설정) > Integrations (연동)**로 이동하여 GitHub 리포지토리를 먼저 추가하세요.

연결이 완료되면, 에이전트는 해당 리포지토리에 범위가 지정된 모든 Code Read 및 Code Write 도구에 접근할 수 있습니다.

Step 3: Slack 연결하기

에이전트 양식의 Channels (채널) 섹션에서 Slack을 활성화하고 에이전트가 상주할 채널을 선택합니다. #devops, #engineering, 또는 #incidents 채널이 적합합니다.

에이전트가 명시적으로 태그될 때만 응답하게 하려면 Only respond when @mentioned (멘션 시에만 응답) 옵션을 선택적으로 활성화하세요. 전용 장애(incidents) 채널의 경우, 에이전트가 모든 메시지에 응답할 수 있도록 이 옵션을 꺼두는 것이 좋습니다.

에이전트를 저장합니다.

Step 4: 테스트하기

Slack 채널로 이동하여 다음과 같이 메시지를 보내보세요:

what broke in prod in the last hour?
(지난 한 시간 동안 운영 환경에서 무엇이 고장 났나요?)

에이전트는 다음과 같이 동작합니다:

  1. time_range: "1h"status_filter: "errors" 파라미터와 함께 get_access_logs를 호출합니다.
  2. 응답을 파싱하여 에러 패턴을 분석합니다.
  3. Slack에 구조화된 요약본을 답장합니다.

응답 예시는 다음과 같습니다:

Found 14 errors in the last hour:
(지난 한 시간 동안 14개의 에러가 발견되었습니다:)

• POST /api/contact — 11x 500 (11:42–12:03 PT)
...

Step 5: 진단에서 PR 생성까지

에러를 진단한 후, 에이전트에게 수정을 요청하세요:

go ahead and open a PR for the contact route fix
(contact 경로 수정을 위한 PR을 생성해줘)

에이전트는 다음과 같이 동작합니다:

  1. src/app/api/contact/route.ts에 대해 read_file 호출
  2. 누락된 null-check (null-check) 식별
  3. fix/contact-route-null-check를 생성하기 위해 create_branch 호출
  4. 수정된 버전의 파일로 commit_files 호출
  5. 명확한 제목과 설명을 포함하여 create_pull_request 호출
  6. Slack에 PR URL을 다시 게시:
PR opened: fix(contact): add null check for email field before send

...

전체 흐름인 로그 추출 (log pull), 진단 (diagnosis), 브랜치 (branch), 커밋 (commit), PR, Slack 게시가 엔지니어가 Slack을 떠나지 않고도 2분 이내에 완료됩니다.

단계 6: Cosmic SDK 연결하기 (선택 사항)

만약 앱이 Cosmic에서 콘텐츠(블로그 포스트, 제품 페이지, 문서)를 가져온다면, 에이전트에게 CMS 읽기 (CMS Read) 권한을 부여하여 콘텐츠 변경 사항과 운영 환경의 오류를 교차 참조(cross-reference)할 수 있게 할 수 있습니다. 예를 들어:

import { createBucketClient } from '@cosmicjs/sdk';

const cosmic = createBucketClient({
...

CMS 읽기가 활성화되면 에이전트에게 다음과 같이 물어볼 수 있습니다:

최근 콘텐츠 게시와 오류 급증 사이에 상관관계가 있나요?

그러면 에이전트는 액세스 로그 (access log)의 타임스탬프와 최근에 게시된 객체들을 교차 참조하여 인과 관계를 찾습니다.

에이전트 확장하기

기본 에이전트가 작동하기 시작하면, 다음과 같은 세 가지 자연스러운 확장 기능이 가능합니다:

하트비트 스케줄 (Heartbeat schedule): 오전 9시에 매일 하트비트를 활성화하여 지난 24시간 동안의 오류 요약을 Slack에 자동으로 게시합니다. 아무도 요청할 필요가 없습니다.

배포 시 이벤트 트리거 (Event trigger on deploy): 인바운드 웹훅 (inbound webhook)을 에이전트의 웹훅 채널 엔드포인트에 연결합니다. Vercel이 각 배포 후에 해당 웹훅으로 POST 요청을 보내도록 구성합니다. 에이전트는 배포 후 로그를 자동으로 확인하고 배포로 인해 발생한 새로운 오류를 표시합니다.

에스컬레이션 로직 (Escalation logic): 에이전트 프롬프트에 '한 시간 내에 20개 이상의 오류가 발견되면 즉시 프로젝트 소유자에게 이메일을 보내라'는 내용을 추가합니다. 에이전트는 send_email 기능을 사용할 수 있으므로 이 지침을 따를 것입니다.

이것이 Cosmic 에이전트에 대해 보여주는 것

이 튜토리얼은 DevOps 활용 사례를 넘어선 패턴, 즉 여러분의 기술 스택(stack)에 대한 운영 인터페이스로서의 Cosmic Team Agent 패턴을 보여줍니다.

이 에이전트는 미리 작성된 답변을 내놓는 챗봇이 아닙니다. 에이전트는 실시간 데이터를 읽고, 발견한 내용을 바탕으로 의사결정을 내리며, 코드를 작성하고, 외부 시스템에서 직접 조치를 취합니다. 이 모든 과정은 팀이 이미 사용 중인 커뮤니케이션 채널 안에서 이루어집니다.

동일한 패턴은 고객 지원(문서 버킷을 읽고 Slack에서 에스컬레이션 수행), 콘텐츠 운영(CMS를 모니터링하고 게시 시 워크플로우 실행), 경쟁사 인텔리전스(정해진 일정에 따라 실행되며 요청 없이도 조사 결과 게시) 등에도 적용될 수 있습니다.

행동하는 에이전트(Agents that act)는 단순히 답변하는 에이전트(agents that answer)와 근본적으로 다릅니다. 이것이 바로 중요한 차이점입니다.

다음에 구축할 것

이제 DevOps 에이전트가 실행 중이므로, 이 시리즈의 다음 튜토리얼은 다음과 같습니다:

  • 고객 지원 에이전트 (WhatsApp/Telegram): 문서 버킷에 대한 CMS Read 기능과 함께 WhatsApp에 연결된 Team Agent입니다. 인간의 에스컬레이션이 포함된 Tier-1 지원 자동화입니다.
  • 경쟁사 인텔리전스 에이전트: Heartbeat 일정에 따라 작동하는 Content Agent로, 경쟁사 블로그를 크롤링하고 매주 월요일 아침 Slack에 요약본을 게시합니다.
  • 현지화 파이프라인 에이전트: 게시 시 새로운 블로그 포스트를 스페인어, 프랑스어, 독일어로 자동 번역하는 이벤트 트리거 방식의 Content Agent입니다.

시작하기

자신만의 DevOps 에이전트를 구축할 준비가 되셨나요?

무료로 가입하세요, 신용카드 필요 없음

이미 계정이 있으신가요? Team Agents로 이동

여러분의 특정 스택에 맞춘 가이드가 필요하신가요? Tony와 15분 상담 예약

또는 전체 에이전트 문서를 읽어보세요: cosmicjs.com/docs/dashboard/ai/agents

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0