[backstage] Technical overview

히니·2026년 3월 1일

workLogs

목록 보기
7/8

Purpose

Backstage is an open source framework for building developer portals that was created at Spotify to simplify end-to-end software development. As Spotify grew, their infrastructure became more fragmented and teams couldn't find the APIs they were supposed to use, or who owned a service, or documentation on anything.

Backstage is powered by a centralized software catalog and utilizes an abstraction layer that sits on top of all of your infrastructure and developer tooling, allowing you to manage all of your software, services, tooling, and testing in one place.

Backstage uses a plugin-architecture which allows you to customize the functionality of your Backstage application using a wide variety of available plugins or you can write your own. It also includes automated templates that your teams can use to create new microservices, helping to ensure consistency and adherence to your best practices. Backstage also provides the ability to create, maintain, and find the documentation for all of your software.

Backstage is now a CNCF incubation project.
  1. 목적 및 탄생 배경
    -> Backstage는 end-to-end 소프트웨어 개발을 단순화하기 위해 만든 오픈소스프레임워크입니다.

  2. 핵심구조 : 추상화 계층(Abstraction Layer)
    -> Backstage는 모든 인프라와 개발도구 위에 위치하는 추상화 계층을 활용합니다.

  1. 확장성과 표준화(Plugins& Templates)
    -> 플러그인 아키텍쳐 : 다양한 기존 플러그인을 가져다 쓰거나 직접 만들어서 기능을 무한히 확장 할 수 있습니다.

-> 자동화된 템플릿(Software Templates) : 새로운 마이크로 서비스를 만들떄 팀이 사용할 수 있는 템플릿을 제공합니다. 이는 모든 팀이 회사의 베스트프랙티스를 따르게 하고 서비스간의 일관성을 유지하도록 합니다.

  1. 문서화 및 커뮤니티
    -> TechDocs : 모든 소프트웨어 문서를 생성, 유지 관리, 검색할 수 있는 기능을 제공합니다.

Core Feature

  1. 인증 및 신원 (Authentication and Identity)
    내용: 사용자 로그인 및 신원 확인 기능입니다. 기본 제공되는 인증 제공자(Google, GitHub, Okta 등)를 통해 사용자를 식별하고, 외부 리소스에 대한 접근 권한을 위임(delegating)할 수 있습니다.

실무 의미: "회사 계정으로 로그인하면, 내가 권한을 가진 프로젝트들만 자동으로 연결된다"는 뜻입니다.

  1. 쿠버네티스 (Kubernetes)
    내용: 서비스가 로컬 환경이나 실제 운영(Production) 환경 어디에 있든, 그 상태(Health)를 개발자가 직접 확인할 수 있게 해주는 도구입니다.

실무 의미: 복잡한 인프라 명령어를 몰라도, Backstage 화면에서 내 서비스가 잘 돌아가는지(Pod 상태 등) 바로 볼 수 있습니다.

  1. 알림 (Notifications)
    내용: 플러그인이나 외부 서비스가 개별 사용자나 그룹에게 메시지를 보낼 수 있는 수단을 제공합니다.

실무 의미: "내 코드 리뷰가 승인되었을 때"나 "배포가 실패했을 때" 포털 내에서 알림을 받을 수 있습니다.

  1. 권한 (Permissions)
    내용: 특정 데이터, API, 또는 화면상의 액션에 대해 사용자가 어떤 접근 권한을 가질지 규칙을 강제하는 기능입니다.

실무 의미: 보안이 중요한 프로젝트는 담당 팀원만 수정하거나 볼 수 있게 제한할 수 있습니다.

  1. 검색 (Search)
    내용: Backstage 생태계 내의 모든 정보를 검색합니다. 검색 결과의 디자인을 커스터마이징하거나, 회사 고유의 검색 엔진을 연동할 수도 있습니다.

실무 의미: "서비스 이름, API 이름, 문서 내용"까지 한 번에 검색해서 찾아낼 수 있는 '사내 구글' 같은 역할입니다.

  1. 소프트웨어 카탈로그 (Software Catalog)
    내용: 모든 소프트웨어(서비스, 웹사이트, 라이브러리, ML 모델, 데이터 파이프라인 등)와 이를 구동하는 인프라의 메타데이터를 담고 있는 중앙 집중식 시스템입니다. UI를 통해 조회 및 검색이 가능합니다.

실무 의미: 앞서 말한 '우리 회사의 디지털 지도' 그 자체입니다.

  1. 소프트웨어 템플릿 (Software Templates)
    내용: Backstage 내부에서 새로운 컴포넌트를 생성하도록 돕는 도구입니다. 코드의 뼈대(Skeletons)를 불러오고 변수를 입력받은 뒤, GitHub 같은 곳에 자동으로 게시(Publish)해 줍니다.

실무 의미: "새 프로젝트 시작할 때 설정하는 데만 이틀 걸리던 걸, 버튼 클릭 한 번으로 5분 만에 끝낸다"는 기능입니다.

  1. 테크독스 (TechDocs)
    내용: 'Docs-like-code(코드처럼 다루는 문서)' 솔루션입니다. 문서는 코드와 함께 Markdown 파일로 작성되며, Backstage에서 예쁘게 렌더링되어 보여집니다.

실무 의미: 문서를 별도 위키(Wiki)에 적는 게 아니라, 코드 저장소(Git) 안에 넣어서 관리하므로 코드와 문서의 동기화가 아주 쉬워집니다.

Plugin Architecture Overview

백스테이지는 3가지 타입의 플러그인을 제공한다.

  • standalone : API를 요청하지 않고 오로지 브라우저에서 계산된 결과값을 보여주는 서비스
  • Service backend : 회사내의 API를 요청해서 통신할 수 있는 시스템
  • Third-party backend : 회사내가 아닌 외부 시스템 API 요청해서 통신하는 시스템

Software Catalog System Model

소프트웨어 카탈로그의 시스템 모델은 'Entity'를 기반으로 하며 크게 두가지 주요 유형으로 모델링 합니다. : 핵심 엔티티(Core Entity)와 조직 엔티티입니다.

  1. Core Entity
  • Component : 소스코드(git repo)
  • API : 서비스간의 대화 규칙
  • Resource : 인프라 자원(DB, S3...)
  • 핵심질문 : 무엇(what)이 돌아가고 있는가?
  1. 조직 엔티티
    소프트웨어를 만드는 사람과 조직의 구조를 정의합니다. 기술자산과 사람을 연결시키는 고리
  • User(사용자) : 개별 개발자
  • Group(그룹) : 팀, 부서, 본부단위
  • 핵심질문 : who(누가) 이 소프트웨어를 책임지는가?

왜 이두가지를 묶어서 관리할까?
-> 단순히 이코드는 이팀꺼다 라는 메모만 하는게 아니라 시스템적으로 관계를 맺기 위함입니다.

profile
안녕하세요

0개의 댓글