[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:devops-cloud\u002Fsenior":4,"config":256},null,{"field_key":5,"field_name":6,"seniority":7,"topic_key":8,"topic_name":8,"spec_key":8,"spec_name":8,"locale":9,"cell_total":10,"field_total":11,"seniorities":12,"topics":15,"specs":152,"samples":172},"devops-cloud","DevOps \u002F Cloud","senior","","tr",2104,3375,[13,14,7],"junior","mid",[16,20,23,26,29,32,35,38,41,44,47,50,53,56,59,62,65,68,71,74,77,80,83,86,89,92,95,98,101,104,107,110,113,116,119,122,125,128,131,134,137,140,143,146,149],{"key":17,"name":18,"count":19},"aws-compute-ec2-lambda","Aws Compute Ec2 Lambda",75,{"key":21,"name":22,"count":19},"aws-databases-rds-dynamodb","Aws Databases Rds Dynamodb",{"key":24,"name":25,"count":19},"aws-iam-security","Aws Iam Security",{"key":27,"name":28,"count":19},"aws-messaging-eventing","Aws Messaging Eventing",{"key":30,"name":31,"count":19},"aws-networking-vpc","Aws Networking Vpc",{"key":33,"name":34,"count":19},"aws-storage-s3-ebs","Aws Storage S3 Ebs",{"key":36,"name":37,"count":19},"azure-compute-vm-appservice","Azure Compute Vm Appservice",{"key":39,"name":40,"count":19},"azure-databases-sql-cosmosdb","Azure Databases Sql Cosmosdb",{"key":42,"name":43,"count":19},"azure-iam-security","Azure Iam Security",{"key":45,"name":46,"count":19},"azure-messaging-eventing","Azure Messaging Eventing",{"key":48,"name":49,"count":19},"azure-networking-vnet","Azure Networking Vnet",{"key":51,"name":52,"count":19},"azure-storage-blob-managed-disk","Azure Storage Blob Managed Disk",{"key":54,"name":55,"count":19},"ci-cd-pipelines","Ci Cd Pipelines",{"key":57,"name":58,"count":19},"cloud-architecture-scaling","Cloud Architecture Scaling",{"key":60,"name":61,"count":19},"containers-orchestration","Containers Orchestration",{"key":63,"name":64,"count":19},"deployment-release-strategies","Deployment Release Strategies",{"key":66,"name":67,"count":19},"gcp-compute-gce-cloudrun","Gcp Compute Gce Cloudrun",{"key":69,"name":70,"count":19},"gcp-databases-cloudsql-spanner-firestore","Gcp Databases Cloudsql Spanner Firestore",{"key":72,"name":73,"count":19},"gcp-iam-security","Gcp Iam Security",{"key":75,"name":76,"count":19},"gcp-messaging-eventing","Gcp Messaging Eventing",{"key":78,"name":79,"count":19},"gcp-networking-vpc","Gcp Networking Vpc",{"key":81,"name":82,"count":19},"gcp-storage-gcs-persistent-disk","Gcp Storage Gcs Persistent Disk",{"key":84,"name":85,"count":19},"infrastructure-as-code","Infrastructure As Code",{"key":87,"name":88,"count":19},"k8s-config-secrets","K8s Config Secrets",{"key":90,"name":91,"count":19},"k8s-observability-troubleshooting","K8s Observability Troubleshooting",{"key":93,"name":94,"count":19},"k8s-scheduling-resources","K8s Scheduling Resources",{"key":96,"name":97,"count":19},"k8s-services-networking","K8s Services Networking",{"key":99,"name":100,"count":19},"k8s-storage","K8s Storage",{"key":102,"name":103,"count":19},"k8s-workloads","K8s Workloads",{"key":105,"name":106,"count":19},"linux-filesystem-permissions-links","Linux Filesystem Permissions Links",{"key":108,"name":109,"count":19},"linux-networking-tools-troubleshooting","Linux Networking Tools Troubleshooting",{"key":111,"name":112,"count":19},"linux-performance-monitoring-resource-limits","Linux Performance Monitoring Resource Limits",{"key":114,"name":115,"count":19},"linux-process-management-signals","Linux Process Management Signals",{"key":117,"name":118,"count":19},"linux-shell-scripting-ops-automation","Linux Shell Scripting Ops Automation",{"key":120,"name":121,"count":19},"linux-systemd-service-management","Linux Systemd Service Management",{"key":123,"name":124,"count":19},"networking-dns-loadbalancing","Networking Dns Loadbalancing",{"key":126,"name":127,"count":19},"observability-monitoring","Observability Monitoring",{"key":129,"name":130,"count":19},"reliability-incident-sre","Reliability Incident Sre",{"key":132,"name":133,"count":19},"security-iam-secrets","Security Iam Secrets",{"key":135,"name":136,"count":19},"terraform-hcl-language-expressions","Terraform Hcl Language Expressions",{"key":138,"name":139,"count":19},"terraform-modules-workspaces","Terraform Modules Workspaces",{"key":141,"name":142,"count":19},"terraform-plan-apply-drift-import","Terraform Plan Apply Drift Import",{"key":144,"name":145,"count":19},"terraform-providers-lifecycle-provisioners","Terraform Providers Lifecycle Provisioners",{"key":147,"name":148,"count":19},"terraform-state-backend-locking","Terraform State Backend Locking",{"key":150,"name":151,"count":19},"terraform-testing-policy-cicd","Terraform Testing Policy Cicd",[153,157,160,163,166,169],{"key":154,"name":155,"count":156},"aws","AWS",450,{"key":158,"name":159,"count":156},"azure","Azure",{"key":161,"name":162,"count":156},"gcp","GCP",{"key":164,"name":165,"count":156},"kubernetes","Kubernetes",{"key":167,"name":168,"count":156},"linux","Linux",{"key":170,"name":171,"count":156},"terraform","Terraform",[173,191,204,217,230,243],{"id":174,"topic":55,"difficulty":175,"body":176,"options":177,"correct_key":179,"explanation":190},"019f56bb-b909-7008-92e5-751a3c4fdf13",3,"GitOps kurulumunda, bir ortamın istenen durumu bir Git repository'sinde deklaratif olarak tanımlanır ve otomatik bir controller, canlı ortamı sürekli olarak orada commit edilenle eşleşecek şekilde reconcile eder. Ortama doğrudan `deploy` komutları çalıştıran bir pipeline'a kıyasla, GitOps'un getirdiği temel yapısal fark nedir?",[178,181,184,187],{"key":179,"text":180},"a","Git, istenen durum için tek doğru kaynak hâline gelir ve reconciliation yalnızca deploy anında değil sürekli olarak çekilip uygulanır.",{"key":182,"text":183},"b","GitOps herhangi bir pipeline ihtiyacını tamamen ortadan kaldırır, çünkü uygulama kodunu tek başına Git build edip test edebilir.",{"key":185,"text":186},"c","GitOps, tüm ortamların aralarında hiçbir ayrım olmadan tek bir Git repository'sini paylaşmasını zorunlu kılar.",{"key":188,"text":189},"d","GitOps, otomatik reconciliation tasarım gereği devre dışı olduğundan deploy'ların yalnızca manuel tetiklenebileceği anlamına gelir.","GitOps'taki belirleyici değişim, Git'in deklare edilen istenen durumu tutması ve bir controller'ın canlı ortamı buna doğru sürekli çekip reconcile etmesidir; bu, yalnızca pipeline bir deploy komutu çalıştırdığında olan tek seferlik bir push'tan farklıdır. Bu ayrıca tek seferlik bir apply değil, sürekli drift düzeltmesi de sağlar. b yanlıştır — GitOps yine de build\u002Ftest için bir pipeline'a ihtiyaç duyar, değiştirdiği şey deploy reconciliation'ının nasıl olduğudur, pipeline'ın var olup olmadığı değil. c gereksiz bir kısıtlama uydurur; ortamlar genelde repo, branch veya dizin ile yine ayrılabilir. d, GitOps'a ters düşer; GitOps özellikle reconciliation'ı devre dışı bırakmak yerine otomatikleştirir.",{"id":192,"topic":55,"difficulty":175,"body":193,"options":194,"correct_key":182,"explanation":203},"019f56bb-b909-78d1-b5bb-feba73c38317","İki ekip de pipeline'larının \"testler geçtikten sonra otomatik olarak production'a deploy ettiğini\" söylüyor. A ekibinde deploy adımı çalışmadan önce birinin manuel onay butonuna tıklaması gerekiyor. B ekibinde ise hiçbir manuel kapı yok — geçen bir pipeline doğrudan production'a deploy ediyor. Sırasıyla A ve B ekibinin pratiğini en doğru etiketleyen terim çifti hangisidir?",[195,197,199,201],{"key":179,"text":196},"A ekibi continuous integration uygular; B ekibi continuous delivery uygular.",{"key":182,"text":198},"A ekibi continuous delivery uygular; B ekibi continuous deployment uygular.",{"key":185,"text":200},"A ekibi continuous deployment uygular; B ekibi continuous delivery uygular.",{"key":188,"text":202},"A ve B ekibi ikisi de aynı continuous deployment'ı uygular, çünkü ikisi de otomatik deploy ediyor.","Continuous delivery, her doğrulanmış değişikliği release'e hazır tutar ama nihai production release kararını bir insana bırakır (A ekibinin manuel kapısı). Continuous deployment ise bu kapıyı tamamen kaldırır, böylece pipeline'ı geçen her değişiklik otomatik olarak canlıya çıkar (B ekibi). a şıkkı iki ekibi de gerçekte oldukları aşamadan daha geriye etiketler. c iki tanımı yer değiştirir. d, iki pratiği ayıran manuel onay farkını yok sayarak yanlış biçimde herhangi bir ayrım olmadığını iddia eder.",{"id":205,"topic":55,"difficulty":175,"body":206,"options":207,"correct_key":185,"explanation":216},"019f56bb-b90c-7643-a573-781470f580b4","Bir soruşturma sırasında bir mühendis, üç hafta önce çalışan bir job'un pipeline log'larında bir database şifresinin düz metin olarak yazdırıldığını fark ediyor; çünkü bir script, kaldırılmadan önce debug amacıyla `echo $DB_PASSWORD` kullanmış. Log'lar hâlâ saklanıyor ve pipeline'a okuma erişimi olan herkes tarafından görüntülenebiliyor. En uygun acil tepki nedir?",[208,210,212,214],{"key":179,"text":209},"Başka bir şey yapmamak, çünkü şifreyi yazdıran debug satırı script'ten zaten kaldırılmış.",{"key":182,"text":211},"Saklanan eski log'larda şifreyi geriye dönük olarak maskelemesi için pipeline'ın log masking özelliğine güvenmek.",{"key":185,"text":213},"Debug satırını kaldırmaya ek olarak, ifşa olan credential'ı rotate etmek ve ele geçirilmiş kabul etmek.",{"key":188,"text":215},"Kullanılmayan eski bir log'un okunması pek olası olmadığı için bir sonraki planlı credential rotation döngüsünü beklemek.","Bir secret, okuma erişimi olan herkesin görebileceği log'lara yazdırıldıktan sonra, buna neden olan debug satırı sonradan kaldırılmış olsa bile ele geçirilmiş kabul edilmelidir — rotate etmek gerçek ifşa penceresini kapatır. a yalnızca gelecekteki ifşayı önler, saklanan log'larda zaten görünür olan credential hakkında hiçbir şey yapmaz. b yaygın bir yanılgıdır: masking tipik olarak ileriye dönük yazdırma anında uygulanır, zaten depolanmış log içeriğine geriye dönük değil. d, bilinen ve zaten ifşa olmuş bir secret'ın düzeltilmesini gereksiz yere geciktirir.",{"id":218,"topic":55,"difficulty":175,"body":219,"options":220,"correct_key":185,"explanation":229},"019f56bb-b90f-7329-ad97-08e1c7bae2cd","Bir monorepo birkaç bağımsız servis içeriyor. Şu anda, bir değişiklik yalnızca bir servisin dizinine dokunsa bile her push tüm servisler için tam pipeline'ı çalıştırıyor. Bu, her çalışmayı gerekenden çok daha uzun sürdürüyor. Bunu en iyi çözecek pipeline tasarım değişikliği hangisidir?",[221,223,225,227],{"key":179,"text":222},"Monorepo'yu servis başına ayrı bir repository'ye bölmek, çünkü path bazlı filtreleme başka türlü mümkün değildir.",{"key":182,"text":224},"Doğrudan dokunulmamış servisler için test stage'ini kaldırmak, ama build ve deploy stage'lerini yine de çalıştırmak.",{"key":185,"text":226},"Pipeline'ı değişen path'leri tespit edecek ve yalnızca dizini değişen servisler için job çalıştıracak şekilde yapılandırmak.",{"key":188,"text":228},"Tüm servisler için tam pipeline aynı anda bitsin diye paralel runner makine sayısını artırmak.","Path bazlı tetikleme (dizin\u002Fdosyalarda değişiklik tespiti), bir monorepo pipeline'ının yalnızca gerçekten değişenle ilgili job'ları çalıştırmasını sağlar, test kapsamını azaltmadan çalışma süresini kısaltır. a gereksiz derecede sert bir yapısal değişikliktir; çoğu CI\u002FCD aracı tek bir monorepo içinde path filtrelerini destekler. b güvensizdir — dokunulmamış görünen bir servisi hâlâ deploy ederken testlerini atlamak, bayat doğrulamaya dayanarak deploy etme riski taşır. d, gereksiz işten kaçınmak yerine soruna sadece daha fazla donanım atar ve boşa harcanan hesaplamayı azaltmaz.",{"id":231,"topic":55,"difficulty":175,"body":232,"options":233,"correct_key":179,"explanation":242},"019f56bb-b910-7145-8c95-c5351f289b77","Belirli bir integration test, ilgisiz pull request'lerde aralıklı olarak, kabaca beş çalışmadan birinde, hatalarla tutarlı biçimde ilişkilendirilebilecek bir kod değişikliği olmadan başarısız oluyor. Geliştiriciler daha fazla araştırma yapmadan pipeline her başarısız olduğunda rutin olarak yeniden çalıştırmaya başladı. Bu örüntünün ele alınmadan bırakılmasının temel uzun vadeli riski nedir?",[234,236,238,240],{"key":179,"text":235},"Ekip pipeline hatalarına giderek güvenini kaybeder ve bir gün gerçek bir regresyonu da refleks olarak yeniden çalıştırıp geçebilir.",{"key":182,"text":237},"Pipeline aracı sonunda aynı job'u iki kez çalıştırmayı reddedecek ve daha fazla yeniden çalıştırmayı kalıcı olarak engelleyecektir.",{"key":185,"text":239},"Flaky test otomatik olarak her branch'te zorunlu bir check'e yükseltilecek ve tüm gelecekteki merge'leri engelleyecektir.",{"key":188,"text":241},"Tekrarlanan yeniden çalıştırmalar yüzünden build caching sessizce bozulacak ve bundan böyle geçersiz artifact'ler üretecektir.","İnsanların alışkanlıkla düzeltmek veya karantinaya almak yerine yeniden çalıştırıp geçtiği bilinen bir flaky test, pipeline'a bir sinyal olarak duyulan güveni aşındırır — gerçek tehlike, gerçek bir regresyonun bir gün 'muhtemelen sadece flaky test' diye görmezden gelinip araştırılmak yerine yeniden çalıştırılıp geçilebilecek olmasıdır. b, c ve d şıklarının hepsi pipeline araçlarının gerçekte sergilemediği mekanik arızalar uydurur; buradaki gerçek risk aracın kendisinin teknik bir arızası değil, insan\u002Fsüreç kaynaklı (aşınan güven) bir risktir.",{"id":244,"topic":58,"difficulty":175,"body":245,"options":246,"correct_key":185,"explanation":255},"019f56bb-b91b-7957-b842-c1847f4371e6","Bir ekip, gün içinde trafiği değişen ama taban yükü yıl boyunca öngörülebilir ve istikrarlı olan bir servis işletiyor. En maliyet-etkin altyapı stratejisi hangisidir?",[247,249,251,253],{"key":179,"text":248},"Tüm kapasiteyi tamamen on-demand çalıştırmak, çünkü reserved kapasiteye taahhüt vermek değişken bir iş yükü için gereken esnekliği her zaman azaltır",{"key":182,"text":250},"Günlük tepe yükü karşılayacak tüm kapasiteyi reserve etmek, çünkü reserved fiyatlandırma autoscaling'i düşünme ihtiyacını tamamen ortadan kaldırır",{"key":185,"text":252},"Öngörülebilir taban yükü reserved kapasiteyle karşılamak, değişken\u002Ftepe trafiği ise autoscaling ile eklenen on-demand instance'larla karşılamak",{"key":188,"text":254},"Kurulumu basit tutmak için autoscaling'i tamamen devre dışı bırakıp her zaman tepe yüke göre boyutlandırılmış sabit sayıda büyük on-demand instance çalıştırmak","Bilinen, istikrarlı taban yük için reserved kapasite ile öngörülemeyen tepe için on-demand (genelde autoscale edilen) kapasiteyi birleştirmek, istikrarlı kullanım için indirimi yakalarken değişken kısım için esnekliği korur. b, günün çoğunda gerçekleşmeyen tepe yükü karşılamak için reserved kapasiteye aşırı taahhüt verir ve para kaybettirir. d ise autoscaling'i tamamen terk eder ve 7\u002F24 tepe seviyesinde maliyet öder; anlatılan en pahalı seçenektir.",{"fields":257,"seniorities":430,"interview_shapes":431,"locales":436,"oauth":438,"question_count":441,"coach_enabled":442,"jd_match_enabled":442},[258,284,305,321,331,344,363,382,404,411,417,424],{"key":259,"name_tr":260,"name_en":260,"sort":261,"specializations":262},"backend","Backend",1,[263,266,269,272,275,278,281],{"key":264,"name":265,"field":259},"general","Genel",{"key":267,"name":268,"field":259},"go","Go",{"key":270,"name":271,"field":259},"python","Python",{"key":273,"name":274,"field":259},"java","Java",{"key":276,"name":277,"field":259},"csharp","C#\u002F.NET",{"key":279,"name":280,"field":259},"nodejs","Node.js",{"key":282,"name":283,"field":259},"php","PHP",{"key":285,"name_tr":286,"name_en":286,"sort":287,"specializations":288},"frontend","Frontend",2,[289,290,293,296,299,302],{"key":264,"name":265,"field":285},{"key":291,"name":292,"field":285},"javascript","JavaScript",{"key":294,"name":295,"field":285},"typescript","TypeScript",{"key":297,"name":298,"field":285},"react","React",{"key":300,"name":301,"field":285},"vue","Vue",{"key":303,"name":304,"field":285},"angular","Angular",{"key":306,"name_tr":307,"name_en":307,"sort":175,"specializations":308},"fullstack","Fullstack",[309,310,311,312,313,314,315,316,317,318,319,320],{"key":264,"name":265,"field":306},{"key":267,"name":268,"field":259},{"key":270,"name":271,"field":259},{"key":273,"name":274,"field":259},{"key":276,"name":277,"field":259},{"key":279,"name":280,"field":259},{"key":282,"name":283,"field":259},{"key":291,"name":292,"field":285},{"key":294,"name":295,"field":285},{"key":297,"name":298,"field":285},{"key":300,"name":301,"field":285},{"key":303,"name":304,"field":285},{"key":5,"name_tr":6,"name_en":6,"sort":322,"specializations":323},4,[324,325,326,327,328,329,330],{"key":264,"name":265,"field":5},{"key":154,"name":155,"field":5},{"key":161,"name":162,"field":5},{"key":158,"name":159,"field":5},{"key":164,"name":165,"field":5},{"key":170,"name":171,"field":5},{"key":167,"name":168,"field":5},{"key":332,"name_tr":333,"name_en":333,"sort":334,"specializations":335},"ai-engineer","AI Engineer",5,[336,337,338,341],{"key":264,"name":265,"field":332},{"key":270,"name":271,"field":332},{"key":339,"name":340,"field":332},"llm-rag","LLM\u002FRAG",{"key":342,"name":343,"field":332},"mlops","MLOps",{"key":345,"name_tr":346,"name_en":347,"sort":348,"specializations":349},"database","Veritabanı","Database",6,[350,351,354,357,360],{"key":264,"name":265,"field":345},{"key":352,"name":353,"field":345},"postgresql","PostgreSQL",{"key":355,"name":356,"field":345},"mysql","MySQL",{"key":358,"name":359,"field":345},"mongodb","MongoDB",{"key":361,"name":362,"field":345},"redis","Redis",{"key":364,"name_tr":365,"name_en":366,"sort":367,"specializations":368},"mobile","Mobil","Mobile",7,[369,370,373,376,379],{"key":264,"name":265,"field":364},{"key":371,"name":372,"field":364},"ios-swift","iOS (Swift)",{"key":374,"name":375,"field":364},"android-kotlin","Android (Kotlin)",{"key":377,"name":378,"field":364},"flutter","Flutter",{"key":380,"name":381,"field":364},"react-native","React Native",{"key":383,"name_tr":384,"name_en":385,"sort":386,"specializations":387},"security","Güvenlik","Security",8,[388,389,392,395,398,401],{"key":264,"name":265,"field":383},{"key":390,"name":391,"field":383},"appsec","AppSec",{"key":393,"name":394,"field":383},"offensive-pentest","Offensive \u002F Pentest",{"key":396,"name":397,"field":383},"cloud-security","Cloud Security",{"key":399,"name":400,"field":383},"devsecops","DevSecOps",{"key":402,"name":403,"field":383},"blue-team-incident","Blue Team \u002F Incident",{"key":405,"name_tr":406,"name_en":407,"sort":408,"specializations":409},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[410],{"key":264,"name":265,"field":405},{"key":412,"name_tr":413,"name_en":413,"sort":414,"specializations":415},"data-engineer","Data Engineer",10,[416],{"key":264,"name":265,"field":412},{"key":418,"name_tr":419,"name_en":420,"sort":421,"specializations":422},"game-dev","Oyun Geliştirme","Game Development",11,[423],{"key":264,"name":265,"field":418},{"key":425,"name_tr":426,"name_en":426,"sort":427,"specializations":428},"ml-engineer","ML Engineer",12,[429],{"key":264,"name":265,"field":425},[13,14,7],{"junior":432,"mid":434,"senior":435},{"questions":433,"median_sec":3},20,{"questions":433,"median_sec":3},{"questions":433,"median_sec":3},[9,437],"en",[439,440],"google","github",21750,true]