Mempelajari Software Catalog dasar: konsep entity, delapan kind yang dikenal Backstage, struktur catalog-info.yaml dengan metadata dan spec, anotasi backstage.io, serta relasi antar entity seperti ownedBy, partOf, dan providesApi.

Di episode 3, kalian berhasil menjalankan Backstage pertama dengan yarn dev. Sekarang saatnya menyelami primitif yang paling sentral: Software Catalog. Episode 4 ini membahas dasar-dasarnya — apa itu entity, delapan kind yang dikenal Backstage, bagaimana file catalog-info.yaml mendeskripsikan sebuah entitas, dan bagaimana hubungan antar entity terbentuk.
Software Catalog adalah salah satu halaman yang paling sering kalian buka saat memakai Backstage. Ia bukan sekadar daftar — ia grafik pengetahuan yang merepresentasikan seluruh software organization. Setiap entri bisa diklik untuk melihat detail, pemilik, dependensi, dan dokumentasinya. Memahami model data di baliknya adalah bekal untuk semua episode berikutnya, karena scaffolder, TechDocs, dan search semuanya bekerja di atas katalog.
Dalam Software Catalog, segala sesuatu direpresentasikan sebagai entity. Sebuah service, website, API, tim, hingga domain bisnis bisa menjadi entity. Setiap entity dideskripsikan oleh file YAML dan dibaca oleh catalog untuk dijadikan entri yang bisa dicari, dijelajahi, dan direlasikan. Entity inilah yang menjawab masalah discoverability yang kalian pelajari di episode 1.
Setiap entity punya kind — jenis yang menentukan makna dan kolom yang tersedia. Backstage mengenal delapan kind inti:
| Kind | Peran |
|---|---|
Component | Service, website, library, atau dataset yang bisa dijalankan |
System | Kumpulan component yang bekerja sebagai satu kesatuan |
API | Antarmuka yang diekspos oleh component |
Domain | Kumpulan sistem yang mewakili satu area bisnis |
Resource | Infrastruktur pendukung seperti database atau cluster |
Group | Tim atau unit organisasi yang memiliki entitas |
User | Pengguna individual |
Location | Sumber tempat entity dibaca — repo, URL, atau file |
Component adalah kind yang paling sering dipakai — setiap service di repositori kalian biasanya dideskripsikan sebagai Component. Kind lainnya berfungsi mengelompokkan dan menghubungkan entity.
Cara mendeskripsikan entity adalah lewat file catalog-info.yaml yang disimpan di dalam repositori masing-masing. Contohnya:
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
name: order-service
description: Layanan pemrosesan pesanan
annotations:
backstage.io/techdocs-ref: dir:.
spec:
type: service
owner: team-checkout
system: e-commerce
providesApis:
- order-apiFile ini punya tiga blok besar: apiVersion, metadata, dan spec.
Blok metadata berisi informasi umum entity: name sebagai identitas unik, description untuk penjelasan, dan annotations. Anotasi adalah ruang untuk metadata tambahan yang bisa dibaca plugin. Beberapa anotasi memakai namespace khusus backstage.io/* — misalnya backstage.io/techdocs-ref yang menunjuk ke lokasi dokumentasi TechDocs entity tersebut. Anotasi semacam ini menjadi semacam kontrak antara entity dan plugin yang memakainya.
Blok spec berisi detail yang spesifik per kind. Untuk Component, kolom type menentukan apakah entity adalah service, website, atau library; kolom owner menunjuk siapa yang bertanggung jawab; kolom system mengelompokkan component ke dalam sistem; dan providesApis mendaftar API yang disediakan. Isi spec sangat bergantung pada kind — kind yang berbeda punya kolom spec yang berbeda.
Note
apiVersion dan kind adalah pasangan yang wajib ada di setiap catalog-info.yaml. Keduanya menandai bahwa file ini valid sebagai deskripsi entity Backstage, mirip seperti header pada file konfigurasi Kubernetes.
Entity tidak berdiri sendiri — mereka saling terhubung lewat relations. Tiga relasi yang paling umum adalah:
| Relation | Arah | Arti |
|---|---|---|
ownedBy | entity menunjuk ke pemilik | Menunjukkan Group atau User yang bertanggung jawab |
partOf | entity menunjuk ke wadahnya | Menandakan bagian dari System, Domain, atau Group |
providesApi | entity menunjuk ke API | Menandakan API yang disediakan entity |
Relasi ini biasanya tidak ditulis eksplisit sebagai daftar, melainkan disimpulkan dari isi spec. Ketika kalian menulis owner: team-checkout, catalog membacanya menjadi relasi ownedBy ke Group team-checkout. Ketika kalian menulis system: e-commerce, terbentuk relasi partOf ke System tersebut. Dengan cara ini, grafik hubungan seluruh service bisa digambar secara otomatis — dan kalian bisa melihat siapa memiliki apa hanya dengan menjelajahi catalog.
Agar relasi terbentuk, entity yang dirujuk juga harus ada di catalog. Perhatikan System dan Group yang menjadi tujuan rujukan pada catalog-info.yaml di atas:
apiVersion: backstage.io/v1alpha1
kind: System
metadata:
name: e-commerce
spec:
owner: group:commerce-platform
---
apiVersion: backstage.io/v1alpha1
kind: Group
metadata:
name: team-checkout
spec:
type: team
children: []Tanda --- pada contoh di atas memisahkan dua entity dalam satu file — Backstage memperbolehkan lebih dari satu entity per file. Dengan adanya System e-commerce dan Group team-checkout, semua relasi yang dirujuk Component order-service bisa tersambung: partOf menuju System, ownedBy menuju Group, dan providesApi menuju API yang didaftarkan.
Tip
Referensi yang belum lengkap tidak membuat catalog gagal total — entity tetap masuk, tetapi relasinya menggantung. Saat kalian melihat entity tanpa pemilik atau tanpa parent yang jelas di UI, kemungkinan besar entity tujuan belum didaftarkan di catalog.
Pada episode 4 ini, kalian memahami dasar Software Catalog: konsep entity, delapan kind yang dikenal Backstage, struktur catalog-info.yaml dengan metadata dan spec, anotasi backstage.io/*, serta relasi antar entity seperti ownedBy, partOf, dan providesApi.
Inti yang harus dibawa pulang:
catalog-info.yaml adalah sumber deskripsi — disimpan di dalam repositori masing-masing.spec — owner, system, dan providesApi membentuk jaringan otomatis.Di episode 5 berikutnya, kita membahas bagaimana catalog mendapatkan semua entity tersebut: catalog ingestion dan processing — dari static locations, URL dan file locations, hingga entity providers, beserta pipeline pengolahan dari provider sampai entity siap dipakai.