9월, 2026의 블로그

새롭게 개편된 배포 경험 소개

출처:

Introducing the redesigned deployments experience

작성자:

Darshan Ail

발행일: 2026년 08월 10일



코드가 어디에 배포되어 있는지 확인하기 위해 복잡한 대시보드를 헤맬 필요는 없습니다.

Deployments 페이지는 팀이 빠르게 답을 확인하는 공간입니다:

테스트 환경에 무엇이 있는지, 스테이징 환경에는 무엇이 배포되었는지, 어떤 변경 사항이 운영 환경(Production)까지 도달했는지, 그리고 지금 바로 확인이 필요한 항목이 무엇인지 파악할 수 있어야 합니다.

하지만 기존 페이지는 이러한 확인 과정을 필요 이상으로 어렵게 만들었습니다.


새로운 Pipelines Deployments 페이지는 배포 현황을 더 쉽게 확인하고, 필터링하고, 필요한 조치를 취할 수 있도록 개선되었습니다.

새로운 경험에서는 환경 정보를 명확하게 구성하고, 가장 중요한 배포 세부 정보를 한곳에서 확인할 수 있으며, 파이프라인 실행 상태에 따라 실시간으로 업데이트됩니다.



주요 개선 사항

기존 Deployments 페이지는 기능적으로는 충분했지만, 사용자가 필요한 정보를 찾고 이해하는 과정은 복잡했습니다.

이번 개편은 핵심 배포 개념은 그대로 유지하면서, 일상적인 사용 과정에서 발생하던 불편을 해결합니다:

  • 더 빠른 결과 필터링

    • 새로운 경험에서는 강력한 필터 기능을 화면 전면에 배치해, 스크롤하거나 수동으로 검색하지 않고도 필요한 정보를 빠르게 찾을 수 있습니다.

  • 더 쉽게 확인할 수 있는 레이아웃

    • 배포 정보가 시각적으로 정리되어, 여러 환경을 쉽게 비교할 수 있습니다.

  • 전체 배포 이력 확인

    • 환경별 배포 이력이 눈에 잘 띄게 표시되고 쉽게 접근할 수 있어, 중요한 정보가 묻히거나 누락되지 않습니다.


새로운 기능

개선된 컬럼 기반 레이아웃

환경은 Test, Staging, Production 컬럼으로 명확하게 구분됩니다.

환경 유형과 개별 환경 간의 관계를 한눈에 이해할 수 있습니다.

컬럼은 비어 있는 경우에도 동일한 구조를 유지하므로, 전체 페이지 구성이 일관되게 유지되고 필요한 정보를 빠르게 확인할 수 있습니다.


필요한 정보를 빠르게 찾는 필터 기능

여러 필터를 조합해 결과를 좁히고, 필요한 배포 정보를 빠르게 찾을 수 있습니다:

  • 작성자(Author)

    • 특정 커밋 작성자와 관련된 배포만 필터링할 수 있습니다.

  • 환경 이름(Environment name)

    • 확인하려는 환경을 빠르게 찾을 수 있습니다.

  • 상태(Status)

    • 실패, 일시 중지, 진행 중인 배포만 빠르게 확인할 수 있습니다.


개선된 배포 카드

각 환경은 새롭게 설계된 단일 카드로 구성되어, 필요한 주요 정보를 한곳에서 확인할 수 있습니다.

사용자는 다음 정보를 빠르게 확인할 수 있습니다:

  • 배포 상태

  • 환경 이름

  • 빌드 번호

  • 커밋 해시 및 메시지

  • 커밋 작성자

  • 배포 시간


더 쉽게 확인할 수 있는 배포 이력

각 카드에서 배포 이력에 바로 접근할 수 있습니다.

히스토리 패널은 메인 페이지와 함께 열리므로, 현재 화면의 맥락을 유지한 상태에서 특정 환경의 최근 배포 내역을 확인할 수 있습니다.


파이프라인 실행 중 실시간 업데이트

배포 이벤트가 발생할 때마다 페이지가 실시간으로 업데이트됩니다.

배포 시작, 상태 변경, 완료와 같은 주요 변경 사항은 브라우저를 새로고침하지 않아도 자동으로 페이지에 반영됩니다.




다음 단계

향후 업데이트는 팀이 배포 상태를 확인하는 단계에서 실제 조치로 더 빠르게 이어갈 수 있도록 지원하는 데 초점을 맞출 예정입니다.

또한 컨텍스트 전환을 줄일 수 있도록, 런북(runbook) 및 Splunk와 같은 운영 도구로 연결되는 링크를 추가하는 방안도 검토하고 있습니다.



아직 Deployments를 사용하지 않으셨다면, 지금 시작해 보세요

팀에서 아직 배포에 Bitbucket Pipelines를 활용하지 않고 있다면, 지금 바로 시작해 보세요.

아래는 production 환경으로 배포를 실행하도록 구성한 예시 bitbucket-pipelines.yml입니다:
 
 

image: atlassian/default-image:5

pipelines:

  branches:

    main:

      - step:

          name: Deploy to production

          deployment: production

          script:

            - echo "Deploying to production"




출처:

Coding at the speed of thought: how I talk to Rovo Dev from Slack

작성자:

Anuj Shah (Software Engineer)

발행일: 2026년 08월 05일



약 300줄의 Python 브리지를 구축해 Slack에서 바로 Rovo Dev와 AI 지원 코딩을 수행할 수 있도록 구성했습니다.

터미널을 열거나 작업 환경을 전환할 필요 없이, 기존 업무 공간에서 AI 기반 코딩 지원을 활용할 수 있습니다.


이 글은 Rovo Dev CLI를 Slack에 연결하는 실험 과정을 소개하며, 터미널을 열지 않고도 AI와 함께 코딩하는 방법을 다룹니다.

 

환경 구성: 터미널에서 Slack으로 전환하기


평소 업무는 대부분 Slack에서 이루어집니다.

반면 터미널을 사용하는 경우는 많지 않습니다.

그래서 이런 생각을 하게 되었습니다.

“Slack에서 바로 Rovo Dev(Atlassian의 AI 코딩 에이전트)와 대화할 수 있다면 어떨까?”

작업 맥락을 전환할 필요도 없고, 터미널을 열 필요도 없으며, 매번 acli rovodev run --yolo 명령을 실행할 필요도 없습니다.


결과적으로 이는 충분히 구현 가능했습니다.
이 글에서는 주말 동안 어떻게 구축했는지 소개합니다.


전체 구조 살펴보기



주요 특징


  • 터미널 없이 사용 가능

    • Slack에서 바로 AI 코딩 에이전트와 작업할 수 있습니다.

  • Socket Mode 지원

    • 공개 URL, ngrok, 방화벽 설정이 필요 없습니다.

  • 지정된 메시지만 처리

    • 지정된 사용자의 메시지만 처리하며, 다른 사용자의 메시지는 자동으로 무시됩니다.

  • 부팅 시 자동 실행

    • systemd 서비스로 실행되어 항상 사용할 수 있습니다.

  • Rovo Dev 기능 그대로 활용

    • 파일 읽기, bash 실행, Jira 조회, Confluence 검색 등을 지원합니다.


동작 방식: 단계별 살펴보기



기술 스택 


구성 요소

기술

목적

AI 에이전트

acli rovodev serve

Rovo Dev CLI의 HTTP API 모드

Slack 연동

Slack Bolt(Python) + Socket Mode

Slack 메시지 수신 및 전송

브리지

Python 3 (약 300줄)

Slack과 Rovo Dev 연결

프로세스 관리자

systemd

부팅 시 자동 실행 및 장애 발생 시 자동 재시작


핵심 기능: acli rovodev serve


이 구성의 핵심은 acli rovodev serve PORT입니다.

이는 잘 알려지지 않은 Rovo Dev CLI 모드 중 하나로, 간단한 API를 제공하는 로컬 HTTP 서버를 실행합니다:

  

acli rovodev serve 18888 --disable-session-token


이를 통해 두 가지 주요 엔드포인트를 사용할 수 있습니다:


  • POST /v3/set_chat_message – AI에 메시지 전달

  • GET /v3/stream_chat – Server-Sent Events(SSE) 스트림 형태로 응답 수신


브리지는 Slack 메시지를 POST 요청으로 전달한 뒤, SSE 스트림을 읽어 전체 응답을 수집하고 완료된 결과를 다시 Slack으로 전송합니다.


보안: 지정된 메시지만 처리


누구나 봇에게 DM을 보내거나 @mention으로 호출할 수 있지만, 지정된 Slack 사용자 ID에서 보낸 메시지만 처리됩니다.
다른 사용자의 메시지는 별도의 알림 없이 자동으로 무시됩니다.

구현은 한 줄의 로직으로 처리할 수 있습니다:


ALLOWED_USER_ID = os.environ.get("ALLOWED_USER_ID", "")

def is_allowed(event) -> bool:

if not ALLOWED_USER_ID:

return True # no restriction set

return event.get("user") == ALLOWED_USER_ID



  • “홈 디렉터리에 어떤 파일이 있나요?”

    • Rovo Dev가 ls -la ~ 명령을 실행하고 결과를 전달합니다.

  • “해결되지 않은 Jira 이슈를 보여주세요.”
    → Jira를 조회하고 미해결 이슈 목록을 제공합니다.

  • “해결되지 않은 Jira 이슈를 보여주세요.”

    • Jira를 조회하고 미해결 이슈 목록을 제공합니다.

  • “feature/xyz라는 새 브랜치를 만들어 주세요.”

    • git 명령을 실행해 브랜치를 생성합니다.

  • “이 함수의 단위 테스트를 작성해 주세요. [코드 붙여넣기]”

    • 테스트 코드를 생성합니다.

다음 단계


  • 스트리밍 응답

    • ChatGPT처럼 Rovo Dev가 응답을 생성하는 동안 부분 결과를 실시간으로 전송합니다.

  • 멀티 세션 지원

    • Slack의 각 스레드를 서로 다른 Rovo Dev 세션으로 관리합니다.

  • 슬래시 명령어 지원

    • /rv plan, /rv ask, /rv review와 같은 명령어를 제공합니다.

  • 파일 업로드 지원

    • Slack에 파일을 첨부하면 Rovo Dev가 해당 파일을 읽고 처리합니다.


핵심 요약 


acli rovodev serve를 HTTP + SSE 방식으로 연결하는 Slack 봇을 구축했습니다.

이 봇은 systemd 서비스로 실행되어 부팅 시 자동으로 시작되며, 지정된 사용자의 메시지에만 응답합니다.

이를 통해 터미널을 사용하지 않고도 Slack에서 AI 지원 코딩 환경을 활용할 수 있습니다.

전체 코드는 약 300줄의 Python으로 구성되었으며, 구축에는 약 2시간이 소요되었습니다.

대부분의 시간은 Slack 권한 설정 작업에 사용되었습니다.