Membangun pencarian dan discovery di Backstage: memahami indexing pipeline dengan collators, decorators, dan indexers, mengenal search types dan query API, serta membandingkan search provider untuk catalog entities, TechDocs, Stack Overflow, GitHub issues, dan custom collator.

Di episode 15, kalian mengamankan deployment dari jaringan hingga cookie. Episode 16 ini memanfaatkan keamanan itu untuk satu tujuan yang paling dirasakan developer: search & discovery. Masalah utama developer portal justru bukan kurangnya informasi, melainkan tersebarnya informasi — dokumentasi di satu tempat, kode di tempat lain, tim di tempat yang lain lagi. Search di Backstage menarik semua sumber itu ke satu kotak pencarian, sehingga developer menemukan entity, dokumentasi, dan konteks dalam satu query.
Search di Backstage terdiri dari tiga lapisan besar:
Lapisan-lapisan ini saling bertukar dokumen dan query lewat API terpisah, sehingga kalian bisa mengganti search engine atau menambah sumber baru tanpa menyentuh frontend.
Proses mengindeks berjalan dalam pipeline dengan tiga peran:
search:
backend:
engine: postgres
auth:
enableProtectedResult: trueSatu collator bisa memproduksi banyak dokumen, dan beberapa collator bisa berjalan paralel. Pipeline ini berjalan di latar belakang, terus menyinkronkan index dengan perubahan di sumber.
Pipeline indexing berjalan otomatis di backend, tetapi saat pertama kali menyiapkan search, kalian perlu memastikan collator benar-benar mengambil data:
curl -s http://localhost:7007/api/search/index -H "Authorization: Bearer ${BACKSTAGE_TOKEN}"Responsnya menunjukkan dokumen yang sudah terindeks per collator. Jika angka ini tidak bertambah setelah data baru ditambahkan ke catalog, periksa log backend untuk error di collator atau indexer terkait. Jadwalkan juga sinkronisasi berkala — index yang basi hanya menyesatkan developer.
Jika kalian menjalankan beberapa instance backend, pastikan hanya satu instance yang menangani indexing (atau gunakan task scheduler) agar collator tidak menduplikasi pekerjaan.
Setiap collator menandai dokumennya dengan search type — identitas yang menentukan bagaimana hasil dirender dan difilter. Tipe bawaan yang umum antara lain software-catalog untuk entity, techdocs untuk dokumentasi, dan tipe dari collator lain untuk sumber masing-masing. Saat frontend menerima hasil, tipe ini dipakai untuk memilih tampilan yang tepat — hasil entity menampilkan jenis dan owner, hasil TechDocs menampilkan jalur dokumentasi.
Frontend berkomunikasi dengan backend search lewat query API. Query menggabungkan istilah pencarian, filter tipe, dan opsi pagination, lalu backend search meneruskannya ke engine dan mengembalikan hasil yang sudah diberi skor. URL relatif yang dipakai adalah /api/search/query — memanggilnya dari plugin frontend adalah satu pemanggilan yang sama untuk semua jenis sumber, sehingga pengalaman pencarian tetap seragam.
Dari sisi keamanan, ingat pelajaran episode 15: hasil pencarian bisa berisi informasi sensitif, jadi pastikan hasil yang dilindungi tidak bocor ke user yang tidak berhak. Backstage menyediakan mekanisme hasil terlindungi yang memfilter dokumen berdasarkan permission — aktifkan fitur ini sebelum search dipakai secara luas.
| Provider | Sumber | Tipe hasil | Kapan dipakai |
|---|---|---|---|
| Catalog entities | Entity catalog | software-catalog | Mencari service, sistem, atau API |
| TechDocs | Dokumentasi MkDocs | techdocs | Mencari prosedur dan panduan |
| Stack Overflow | API Stack Overflow | stack-overflow | Mencari jawaban teknis |
| GitHub issues | Repositori GitHub | github-issues | Mencari masalah yang sedang terbuka |
| Custom collator | Sumber internal | custom | Menghubungkan sistem proprietary |
Provider resmi tersedia sebagai modul search backend, misalnya untuk Stack Overflow dan GitHub issues. Yang penting: setiap provider hanya perlu collator dan indexer — engine dan query API dipakai bersama.
Saat sumber tidak punya provider resmi, kalian menulis custom collator — fungsi yang menghasilkan dokumen search dari sumber apa pun yang bisa diakses Backstage. Modul collator didaftarkan di @backstage/plugin-search-backend-node:
const myCollator = {
async execute() {
const documents = [];
const services = await myInternalApi.listServices();
for (const service of services) {
documents.push({
title: service.name,
text: service.description,
location: `/service/${service.slug}`,
metadata: { owner: service.owner },
});
}
return documents;
},
};Dokumen yang dihasilkan lalu didaftarkan sebagai tipe search baru dan diindeks lewat indexer yang sama. Dengan pola ini, collator apa pun — dari registry internal sampai wiki perusahaan — bisa masuk ke satu kotak pencarian Backstage.
Tip
Isi field text dengan konten yang benar-benar bisa dicari orang, bukan
sekadar judul. Kalian bisa menambahkan sinonim, nama lama, atau akronim di
sini — ini cara murah untuk meningkatkan kualitas hasil tanpa mengubah engine.
Episode 16 ini menghadirkan search & discovery: arsitektur tiga lapis, pipeline indexing dengan collators, decorators, dan indexers, search types untuk kontrol rendering dan filter, query API yang seragam, provider bawaan untuk catalog, TechDocs, Stack Overflow, dan GitHub issues, serta custom collator untuk sumber internal.
Inti yang harus dibawa pulang:
Di episode 17 berikutnya, kalian masuk ke Fase 5: frontend plugin development — bagaimana membangun plugin dengan New Frontend System, dari createFrontendPlugin dan extension points sampai React hooks seperti useEntity dengan styling MUI.