Search 아키텍처
Backstage 검색 기능의 아키텍처를 소개하는 문서예요.
출처: 문서
본문
아래에서 Search 아키텍처를 살펴볼 수 있어요. 이 아키텍처의 목표는 다양한 검색 엔진을 지원하면서, 플러그인 개발자에게는 단순한 개발 경험을, Backstage 최종 사용자에게는 좋은 기본 경험(out-of-the-box)을 제공하는 것이에요.
기본 수준에서 우리가 지원하고자 하는 것은 다음과 같아요.
-
Backstage 생태계 전체(소프트웨어 카탈로그의 엔티티뿐 아니라)를 검색할 수 있는 기능을 제공하는 것을 목표로 해요. 검색 가능 콘텐츠가 소프트웨어 카탈로그와 직접적인 관련이 있을 필요는 없지만, 관례적으로 잘 알려진 필드 이름이나 속성을 사용해 느슨한 관계를 장려할 수 있어요.
-
핵심 검색 플러그인과 검색 엔진별 로직 사이에 통합·변환 계층을 제공해서, 어떤 검색 엔진으로든 Backstage를 배포할 수 있는 기능을 제공하는 것을 목표로 해요. 이 계층은 다른 검색 엔진을 위해 확장할 수 있답니다. 또한 더 단순한 사용자 지정을 위해 백엔드 API 엔드포인트를 사용자 지정 엔드포인트로 교체하는 기능도 도입할 수 있어요.
이 아키텍처로 지원하고자 하는 더 고급 사용 사례는 다음과 같아요.
-
어떤 플러그인이든 검색에 새 콘텐츠를 노출할 수 있어야 해요. (예: 엔티티 메타데이터, TechDocs의 문서)
-
어떤 플러그인이든 검색의 기존 콘텐츠에 관련 메타데이터를 추가할 수 있어야 해요. (예: TechDocs 페이지의 위치(path))
-
검색 쿼리를 정제할 수 있어야 해요. (예: 랭킹, 스코어링 등)
-
검색 UI를 사용자 지정할 수 있어야 해요.
-
어떤 Backstage 플러그인이나 배포에든 검색 기능을 추가할 수 있어야 해요.
아키텍처의 비목표(non-goals)는 다음과 같아요.
- 현재 시점에서는 이벤트 기반 또는 증분 인덱스 관리를 직접 지원할 생각은 없어요. 대신 예약된 일괄(bulk) 인덱스 관리에 집중할 거예요.
Tech Stack (기술 스택)
| Stack | Location | |
|---|---|---|
| Frontend Plugin | @backstage/plugin-search | |
| Frontend Plugin Library | @backstage/plugin-search-react | |
| Isomorphic Plugin Library | @backstage/plugin-search-common | |
| Backend Plugin | @backstage/plugin-search-backend | |
| Backend Plugin Library | @backstage/plugin-search-backend-node | |
| Backend Plugin Module | @backstage/plugin-search-backend-module-elasticsearch | |
| Backend Plugin Module | @backstage/plugin-search-backend-module-pg |