{"id":332,"date":"2024-11-09T20:02:00","date_gmt":"2024-11-09T20:02:00","guid":{"rendered":"http:\/\/blog.firatyasar.com\/?p=332"},"modified":"2025-03-23T20:04:39","modified_gmt":"2025-03-23T20:04:39","slug":"backstagede-entity-kayitlari-ve-yonetimi","status":"publish","type":"post","link":"https:\/\/blog.firatyasar.com\/?p=332","title":{"rendered":"Backstage\u2019de Entity Kay\u0131tlar\u0131 ve Y\u00f6netimi"},"content":{"rendered":"\n<p>Backstage, yaz\u0131l\u0131m geli\u015ftirme ve operasyon s\u00fcre\u00e7lerini iyile\u015ftirmek i\u00e7in kullan\u0131lan pop\u00fcler bir a\u00e7\u0131k kaynakl\u0131 geli\u015ftirme portal\u0131d\u0131r. Backstage, farkl\u0131 t\u00fcrlerde entity&#8217;leri y\u00f6netme ve organize etme imkan\u0131 sunar. Bu makalede, Backstage\u2019deki entity kay\u0131tlar\u0131, konumlar, orphaned entity\u2019ler, silme i\u015flemleri ve Backstage\u2019in farkl\u0131 t\u00fcrdeki entity&#8217;leri nas\u0131l ele ald\u0131\u011f\u0131n\u0131 detayl\u0131 bir \u015fekilde inceleyece\u011fiz.<\/p>\n\n\n\n<h3>Entity Kay\u0131tlar\u0131 ve \u00c7al\u0131\u015fma S\u00fcreci<\/h3>\n\n\n\n<p>Backstage&#8217;de, bir entity kaydetmek i\u00e7in, bir YAML dosyas\u0131n\u0131n yerini belirtmeniz gerekmektedir. Bu i\u015flem, Catalog\u2019a ilk bile\u015feninizi ekledi\u011finizde ger\u00e7ekle\u015fir. Arka planda, Backstage bir entity sa\u011flay\u0131c\u0131 kullanarak bu veriyi veritaban\u0131na ham bir entity olarak kaydeder ve ard\u0131ndan bir dizi i\u015flemden ge\u00e7irerek final bir entity olu\u015fturur. Bu i\u015flemler sonunda, entity sayfas\u0131 Catalog\u2019da g\u00f6r\u00fcnebilir.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"826\" height=\"969\" src=\"\/wp-content\/uploads\/2025\/03\/image-5.png\" alt=\"\" class=\"wp-image-334\" srcset=\"\/wp-content\/uploads\/2025\/03\/image-5.png 826w, \/wp-content\/uploads\/2025\/03\/image-5-256x300.png 256w, \/wp-content\/uploads\/2025\/03\/image-5-768x901.png 768w, \/wp-content\/uploads\/2025\/03\/image-5-660x774.png 660w\" sizes=\"(max-width: 826px) 100vw, 826px\" \/><\/figure>\n\n\n\n<p>Backstage\u2019deki t\u00fcm entity&#8217;ler, veri sa\u011flay\u0131c\u0131lar\u0131 (entity providers) taraf\u0131ndan sa\u011flan\u0131r. Bu sa\u011flay\u0131c\u0131lar, veriyi g\u00fcvenilir kaynaklardan al\u0131r ve veritaban\u0131na kaydeder. \u00d6rne\u011fin, GitHub depo verileri, Okta kullan\u0131c\u0131 verileri veya AWS S3 kaynaklar\u0131 gibi veriler, entity sa\u011flay\u0131c\u0131lar\u0131 taraf\u0131ndan al\u0131n\u0131r. Entity sa\u011flay\u0131c\u0131lar\u0131, verileri i\u015fleme zamanlar\u0131n\u0131 belirler ve bu s\u00fcre\u00e7te g\u00fcncellemeler yay\u0131mlayabilir.<\/p>\n\n\n\n<p>Entity i\u015fleme s\u00fcreci, her entity&#8217;yi tek tek i\u015fleyen ve ili\u015fkiler \u00e7\u0131karan, hata mesajlar\u0131 veren veya yeni entity&#8217;ler olu\u015fturan bir dizi i\u015fleme ad\u0131m\u0131ndan olu\u015fur. \u0130\u015fleme tamamland\u0131ktan sonra, t\u00fcm i\u015flem verileri final bir entity\u2019de birle\u015ftirilir ve Catalog API arac\u0131l\u0131\u011f\u0131yla eri\u015filebilir hale gelir.<\/p>\n\n\n\n<h3>Konumlar (Locations) ve Y\u00f6netimi<\/h3>\n\n\n\n<p>Backstage&#8217;de entity&#8217;ler kaydedilirken, her bir entity bir konuma dayan\u0131r. Konum, Catalog\u2019daki bilgilere ula\u015f\u0131labilen bir referans noktas\u0131d\u0131r ve her entity sa\u011flay\u0131c\u0131s\u0131, ilgili entity&#8217;nin konumunu belirlemekle sorumludur. \u00d6rne\u011fin, bir monorepo i\u00e7erisinde bulunan birden fazla hizmeti referans almak i\u00e7in tek bir konum kullan\u0131labilir.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"713\" height=\"215\" src=\"\/wp-content\/uploads\/2025\/03\/image-4.png\" alt=\"\" class=\"wp-image-333\" srcset=\"\/wp-content\/uploads\/2025\/03\/image-4.png 713w, \/wp-content\/uploads\/2025\/03\/image-4-300x90.png 300w, \/wp-content\/uploads\/2025\/03\/image-4-660x199.png 660w\" sizes=\"(max-width: 713px) 100vw, 713px\" \/><\/figure>\n\n\n\n<p>Backstage, konumlar\u0131 genellikle arka planda y\u00f6netir, bu nedenle \u00e7o\u011fu kullan\u0131c\u0131 bu entity&#8217;lerle do\u011frudan etkile\u015fimde bulunmaz. Ancak, konumlar bir sorunla kar\u015f\u0131la\u015f\u0131ld\u0131\u011f\u0131nda, Backstage\u2019in d\u0131\u015f kaynaklarla ileti\u015fim kurdu\u011fu nokta olduklar\u0131ndan, do\u011fru \u015fekilde \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 kontrol etmek \u00f6nemlidir.<\/p>\n\n\n\n<h3>Orphaned Entity\u2019ler ve Silme \u0130\u015flemleri<\/h3>\n\n\n\n<p>Backstage\u2019de orphaned entity, bir \u00fcst entity taraf\u0131ndan art\u0131k yay\u0131mlanmayan ve ili\u015fkisi kesilen bir alt entity\u2019yi ifade eder. Bu durum, \u00f6zellikle silme i\u015flemleri i\u00e7in \u00f6nemlidir. Orphaned entity&#8217;ler, bir \u00fcst entity\u2019nin alt entity\u2019yi art\u0131k yay\u0131mlamamas\u0131 sonucu olu\u015fur. Bu durumda, i\u015fleme s\u00fcreci alt entity\u2019ye bir <code>backstage.io\/orphan: 'true'<\/code> etiketi ekler ancak otomatik olarak Catalog\u2019dan silmez, bu i\u015flem ancak <code>orphanStrategy: delete<\/code> se\u00e7ene\u011fi ile yap\u0131labilir.<\/p>\n\n\n\n<p>Orphaned entity\u2019ler, depoda bir catalog-info dosyas\u0131n\u0131n ta\u015f\u0131nmas\u0131 sonucu veya bir kullan\u0131c\u0131n\u0131n entity\u2019nin kayd\u0131n\u0131 silmesiyle olu\u015fabilir. Orphaned entity\u2019ler, genellikle toplu i\u015flem s\u0131ras\u0131nda da meydana gelir, \u00f6rne\u011fin, bir crawler, bekledi\u011fi referans\u0131 bulamazsa orphaned entity olu\u015fabilir.<\/p>\n\n\n\n<p>Backstage\u2019de iki t\u00fcr silme i\u015flemi vard\u0131r: <strong>implict deletion<\/strong> (dolayl\u0131 silme) ve <strong>explicit deletion<\/strong> (a\u00e7\u0131k silme). Dolayl\u0131 silme, entity sa\u011flay\u0131c\u0131lar\u0131 \u00fczerinden yap\u0131l\u0131r ve bu i\u015flem, ili\u015fkili di\u011fer entity\u2019lere de ba\u011fl\u0131d\u0131r. E\u011fer bir entity orphaned durumda ise, i\u015flem s\u0131ras\u0131n\u0131n bir par\u00e7as\u0131 olarak silinir. A\u00e7\u0131k silme, Catalog API \u00fczerinden yap\u0131l\u0131r ve genellikle terkedilmi\u015f veya g\u00fcncel tutulmayan entity\u2019ler i\u00e7in tercih edilir. Ancak, a\u00e7\u0131k silme i\u015fleminden sonra bir \u00fcst entity, bu entity\u2019yi tekrar referans al\u0131rsa, o entity yeniden Catalog\u2019da g\u00f6r\u00fcnebilir.<\/p>\n\n\n\n<h3>Backstage\u2019de Entity T\u00fcrleri<\/h3>\n\n\n\n<p>Backstage, farkl\u0131 t\u00fcrde entity\u2019leri tan\u0131mak i\u00e7in \u00e7e\u015fitli \u201ckinds\u201d (t\u00fcrler) ve her t\u00fcr i\u00e7in daha spesifik \u201ctypes\u201d (alt t\u00fcrler) kullan\u0131r. Backstage, dokuz temel t\u00fcr\u00fc tan\u0131r, ancak ihtiyac\u0131n\u0131za g\u00f6re \u00f6zel t\u00fcrler tan\u0131mlamak m\u00fcmk\u00fcnd\u00fcr.<\/p>\n\n\n\n<p><strong>Bile\u015fen (Component)<\/strong>: Yaz\u0131l\u0131m bile\u015fenini temsil eder ve genellikle bir depoya ba\u011fl\u0131d\u0131r. Bile\u015fenler, genellikle hizmet, web sitesi veya k\u00fct\u00fcphane gibi t\u00fcrlere sahiptir.<\/p>\n\n\n\n<p><strong>API<\/strong>: Bir bile\u015fenin sundu\u011fu aray\u00fcz\u00fc ifade eder. OpenAPI, AsyncAPI, GraphQL ve gRPC gibi farkl\u0131 API t\u00fcrleri Backstage taraf\u0131ndan desteklenir.<\/p>\n\n\n\n<p><strong>Kaynak (Resource)<\/strong>: Veritabanlar\u0131, depolama alanlar\u0131 veya CDN&#8217;ler gibi altyap\u0131lar\u0131 ifade eder. Bu t\u00fcrler, sisteminizi g\u00f6rselle\u015ftirmek ve optimize etmek i\u00e7in Catalog\u2019a eklenebilir.<\/p>\n\n\n\n<p><strong>Grup (Group)<\/strong>: Kullan\u0131c\u0131lar\u0131 ekipler veya i\u015f birimleri olarak d\u00fczenlemek i\u00e7in kullan\u0131l\u0131r. Backstage, organizasyonel hiyerar\u015finizi modellemenize olanak tan\u0131r.<\/p>\n\n\n\n<p><strong>Kullan\u0131c\u0131 (User)<\/strong>: Bir ki\u015fi, \u00f6rne\u011fin bir \u00e7al\u0131\u015fan veya ta\u015feron temsil eder. Backstage, t\u00fcm kullan\u0131c\u0131lar\u0131 bir gruba ataman\u0131z\u0131 gerektirir.<\/p>\n\n\n\n<h3>Sonu\u00e7<\/h3>\n\n\n\n<p>Backstage, yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerini daha verimli hale getirecek g\u00fc\u00e7l\u00fc bir platform sunar. Catalog, konumlar, orphaned entity\u2019ler, silme i\u015flemleri ve entity t\u00fcrlerinin anla\u015f\u0131lmas\u0131, Backstage&#8217;in verimli kullan\u0131labilmesi i\u00e7in kritik \u00f6neme sahiptir. Bu \u00f6zelliklerin do\u011fru kullan\u0131m\u0131, organizasyonlar\u0131n yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerini daha kolay y\u00f6netmelerine ve optimize etmelerine yard\u0131mc\u0131 olur. Backstage\u2019in sundu\u011fu esneklik sayesinde, organizasyonlar kendi ihtiya\u00e7lar\u0131na g\u00f6re \u00f6zelle\u015ftirilmi\u015f \u00e7\u00f6z\u00fcmler olu\u015fturabilir ve daha etkili bir yaz\u0131l\u0131m geli\u015ftirme deneyimi sa\u011flayabilir.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Backstage, yaz\u0131l\u0131m geli\u015ftirme ve operasyon s\u00fcre\u00e7lerini iyile\u015ftirmek i\u00e7in kullan\u0131lan pop\u00fcler bir a\u00e7\u0131k kaynakl\u0131 geli\u015ftirme portal\u0131d\u0131r. Backstage, farkl\u0131 t\u00fcrlerde entity&#8217;leri y\u00f6netme ve organize etme imkan\u0131 sunar. Bu makalede, Backstage\u2019deki entity kay\u0131tlar\u0131, konumlar, orphaned entity\u2019ler, silme i\u015flemleri ve Backstage\u2019in farkl\u0131 t\u00fcrdeki entity&#8217;leri nas\u0131l ele ald\u0131\u011f\u0131n\u0131 detayl\u0131 bir \u015fekilde inceleyece\u011fiz. Entity Kay\u0131tlar\u0131 ve \u00c7al\u0131\u015fma S\u00fcreci Backstage&#8217;de, bir entity\u2026 <span class=\"read-more\"><a href=\"https:\/\/blog.firatyasar.com\/?p=332\">Read More &raquo;<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":320,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[85,127,142,143,130],"_links":{"self":[{"href":"https:\/\/blog.firatyasar.com\/index.php?rest_route=\/wp\/v2\/posts\/332"}],"collection":[{"href":"https:\/\/blog.firatyasar.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.firatyasar.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.firatyasar.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.firatyasar.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=332"}],"version-history":[{"count":1,"href":"https:\/\/blog.firatyasar.com\/index.php?rest_route=\/wp\/v2\/posts\/332\/revisions"}],"predecessor-version":[{"id":335,"href":"https:\/\/blog.firatyasar.com\/index.php?rest_route=\/wp\/v2\/posts\/332\/revisions\/335"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.firatyasar.com\/index.php?rest_route=\/wp\/v2\/media\/320"}],"wp:attachment":[{"href":"https:\/\/blog.firatyasar.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=332"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.firatyasar.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=332"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.firatyasar.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=332"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}