
Backstage, yazılım geliştirme ve operasyon süreçlerini iyileştirmek için kullanılan popüler bir açık kaynaklı geliştirme portalıdır. Backstage, farklı türlerde entity’leri yönetme ve organize etme imkanı sunar. Bu makalede, Backstage’deki entity kayıtları, konumlar, orphaned entity’ler, silme işlemleri ve Backstage’in farklı türdeki entity’leri nasıl ele aldığını detaylı bir şekilde inceleyeceğiz.
Entity Kayıtları ve Çalışma Süreci
Backstage’de, bir entity kaydetmek için, bir YAML dosyasının yerini belirtmeniz gerekmektedir. Bu işlem, Catalog’a ilk bileşeninizi eklediğinizde gerçekleşir. Arka planda, Backstage bir entity sağlayıcı kullanarak bu veriyi veritabanına ham bir entity olarak kaydeder ve ardından bir dizi işlemden geçirerek final bir entity oluşturur. Bu işlemler sonunda, entity sayfası Catalog’da görünebilir.

Backstage’deki tüm entity’ler, veri sağlayıcıları (entity providers) tarafından sağlanır. Bu sağlayıcılar, veriyi güvenilir kaynaklardan alır ve veritabanına kaydeder. Örneğin, GitHub depo verileri, Okta kullanıcı verileri veya AWS S3 kaynakları gibi veriler, entity sağlayıcıları tarafından alınır. Entity sağlayıcıları, verileri işleme zamanlarını belirler ve bu süreçte güncellemeler yayımlayabilir.
Entity işleme süreci, her entity’yi tek tek işleyen ve ilişkiler çıkaran, hata mesajları veren veya yeni entity’ler oluşturan bir dizi işleme adımından oluşur. İşleme tamamlandıktan sonra, tüm işlem verileri final bir entity’de birleştirilir ve Catalog API aracılığıyla erişilebilir hale gelir.
Konumlar (Locations) ve Yönetimi
Backstage’de entity’ler kaydedilirken, her bir entity bir konuma dayanır. Konum, Catalog’daki bilgilere ulaşılabilen bir referans noktasıdır ve her entity sağlayıcısı, ilgili entity’nin konumunu belirlemekle sorumludur. Örneğin, bir monorepo içerisinde bulunan birden fazla hizmeti referans almak için tek bir konum kullanılabilir.

Backstage, konumları genellikle arka planda yönetir, bu nedenle çoğu kullanıcı bu entity’lerle doğrudan etkileşimde bulunmaz. Ancak, konumlar bir sorunla karşılaşıldığında, Backstage’in dış kaynaklarla iletişim kurduğu nokta olduklarından, doğru şekilde çalışıp çalışmadığını kontrol etmek önemlidir.
Orphaned Entity’ler ve Silme İşlemleri
Backstage’de orphaned entity, bir üst entity tarafından artık yayımlanmayan ve ilişkisi kesilen bir alt entity’yi ifade eder. Bu durum, özellikle silme işlemleri için önemlidir. Orphaned entity’ler, bir üst entity’nin alt entity’yi artık yayımlamaması sonucu oluşur. Bu durumda, işleme süreci alt entity’ye bir backstage.io/orphan: 'true'
etiketi ekler ancak otomatik olarak Catalog’dan silmez, bu işlem ancak orphanStrategy: delete
seçeneği ile yapılabilir.
Orphaned entity’ler, depoda bir catalog-info dosyasının taşınması sonucu veya bir kullanıcının entity’nin kaydını silmesiyle oluşabilir. Orphaned entity’ler, genellikle toplu işlem sırasında da meydana gelir, örneğin, bir crawler, beklediği referansı bulamazsa orphaned entity oluşabilir.
Backstage’de iki tür silme işlemi vardır: implict deletion (dolaylı silme) ve explicit deletion (açık silme). Dolaylı silme, entity sağlayıcıları üzerinden yapılır ve bu işlem, ilişkili diğer entity’lere de bağlıdır. Eğer bir entity orphaned durumda ise, işlem sırasının bir parçası olarak silinir. Açık silme, Catalog API üzerinden yapılır ve genellikle terkedilmiş veya güncel tutulmayan entity’ler için tercih edilir. Ancak, açık silme işleminden sonra bir üst entity, bu entity’yi tekrar referans alırsa, o entity yeniden Catalog’da görünebilir.
Backstage’de Entity Türleri
Backstage, farklı türde entity’leri tanımak için çeşitli “kinds” (türler) ve her tür için daha spesifik “types” (alt türler) kullanır. Backstage, dokuz temel türü tanır, ancak ihtiyacınıza göre özel türler tanımlamak mümkündür.
Bileşen (Component): Yazılım bileşenini temsil eder ve genellikle bir depoya bağlıdır. Bileşenler, genellikle hizmet, web sitesi veya kütüphane gibi türlere sahiptir.
API: Bir bileşenin sunduğu arayüzü ifade eder. OpenAPI, AsyncAPI, GraphQL ve gRPC gibi farklı API türleri Backstage tarafından desteklenir.
Kaynak (Resource): Veritabanları, depolama alanları veya CDN’ler gibi altyapıları ifade eder. Bu türler, sisteminizi görselleştirmek ve optimize etmek için Catalog’a eklenebilir.
Grup (Group): Kullanıcıları ekipler veya iş birimleri olarak düzenlemek için kullanılır. Backstage, organizasyonel hiyerarşinizi modellemenize olanak tanır.
Kullanıcı (User): Bir kişi, örneğin bir çalışan veya taşeron temsil eder. Backstage, tüm kullanıcıları bir gruba atamanızı gerektirir.
Sonuç
Backstage, yazılım geliştirme süreçlerini daha verimli hale getirecek güçlü bir platform sunar. Catalog, konumlar, orphaned entity’ler, silme işlemleri ve entity türlerinin anlaşılması, Backstage’in verimli kullanılabilmesi için kritik öneme sahiptir. Bu özelliklerin doğru kullanımı, organizasyonların yazılım geliştirme süreçlerini daha kolay yönetmelerine ve optimize etmelerine yardımcı olur. Backstage’in sunduğu esneklik sayesinde, organizasyonlar kendi ihtiyaçlarına göre özelleştirilmiş çözümler oluşturabilir ve daha etkili bir yazılım geliştirme deneyimi sağlayabilir.