pile·
인프라 / DevOps·spotify-engSpotify Engineering·

Spotify 앱은 이렇게 릴리스한다: 대시보드와 자동화 로봇 (Part 2)

Spotify 모바일 앱은 Android, iOS, Desktop을 각각 릴리스해야 해 릴리스 매니저의 인지 부담이 컸다. 흩어진 릴리스 정보를 한 화면에 모으는 Release Manager Dashboard와 릴리스 상태 머신을 자동으로 진행시키는 로봇을 5년간 운영하며 평균 릴리스 사이클을 약 8시간 줄인 과정을 다룬다.

핵심 포인트
  • 과거엔 릴리스 정보가 Jira에 흩어져 매니저가 여러 티켓과 탭을 오가며 상태를 수동 추적했고 누락으로 인한 재작업이 잦았다.
  • 첫 백엔드는 새로고침마다 약 10개 시스템에 대규모 쿼리를 날려 느리고 비용이 컸다.
  • 캐싱과 5분 단위 사전 집계를 도입해 대시보드 로드를 8초로 줄이고 운영 비용을 크게 낮췄다.
  • Release Conductor 로봇이 릴리스 상태 머신을 자동 진행해 근무 외 시간에 완료된 단계로 생기던 지연을 없앴다.
상세 정리
  • 배경: Android, iOS, Desktop이 각자 track으로 독립 릴리스돼 릴리스 차단 버그와 회귀 테스트 상태, 충돌률을 플랫폼별로 일일이 확인해야 했다.
  • 대시보드 구조: Production은 현재 프로덕션 버전의 충돌 메트릭과 24시간 DAU를, Current는 릴리스 준비 버전의 차단 버그와 회귀 테스트와 충돌률과 ITGC 검증을, Upcoming은 다음 예정 버전을 보여준다.
  • 상태 표시: 초록은 완료, 노랑은 주의, 빨강은 즉시 조치로 색상 코딩해 매니저가 한눈에 파악하게 했다.
  • 기술 스택: 내부 개발자 포털 Backstage 기반 React와 TypeScript 플러그인이고, 백엔드는 약 10개 기존 시스템에서 데이터를 모으는 게이트웨이 역할을 한다.
  • 성능 최적화: 매 새로고침마다 대규모 쿼리로 느리고 비쌌던 첫 버전을 캐싱과 5분 사전 집계로 로드 8초와 저비용으로 개선했다.
  • Release Conductor 로봇: 릴리스 브랜치 생성, 최종 RC 빌드, 스토어 검토 신청, 1% 롤아웃, 100% 롤아웃의 상태 머신을 조건 충족 시 자동 전환한다.
  • 자동 전환 예: 수동 테스트 승인과 오픈 버그 없음과 최신 커밋 자동화 테스트 성공이 모두 만족되면 스토어 검토 신청을 자동 트리거한다.
  • 효과: 사람이 다음 단계를 눌러줄 때까지 기다리며 생기던 지연을 로봇이 제거해 평균 사이클을 약 8시간 단축했다.
  • Backstage 통합 이점: Software Catalog로 다른 팀도 릴리스 데이터를 쿼리하고 Band Manager 플러그인으로 버그 자동 할당과 팀 알림을 붙였다.
  • 한계: 앱 스토어 승인 지연은 통제 밖이고, 가벼운 릴리스를 쓰는 소규모 앱에 적용하려면 더 많은 모듈화가 필요하다.
왜 읽나멀티 플랫폼 앱의 릴리스 오케스트레이션과 상태 머신 자동화를 고민하는 릴리스 엔지니어와 플랫폼 팀에게 대시보드 설계와 자동화 경계 사례를 준다.
spotify-eng
Spotify Engineering 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. 인프라 / DevOps·vercel-blogVercel Blog·

    Vercel CLI 드라이런 배포로 실제 배포 전 구성 미리 확인하기

    Vercel CLI v54.17.2부터 vercel deploy --dry 명령으로 실제 파일 업로드 없이 배포 구성을 미리 검사할 수 있다. 프레임워크 감지 결과, 포함/제외 파일 목록, 디렉터리 크기 분포, 콘텐츠 해시까지 사전에 확인하고 나서 배포를 결정할 수 있어 의도치 않은 배포 실패를 예방한다.

    #deployment#ci-cd#vercel-cli+1