Kubernetes Yatay Pod Otomatik Ölçekleyiciyi (HPA) Metrics Server ile Yapılandırma
Kubernetes, modern uygulama dağıtımı ve yönetiminde endüstri standardı haline gelmiş güçlü bir konteyner orkestrasyon platformudur. Bu platformun en kritik yeteneklerinden biri, değişen iş yüklerine uyum sağlayabilen dinamik ölçekleme yeteneğidir. Uygulamalarınızın performansını ve kullanılabilirliğini artırmanın yanı sıra, gereksiz kaynak tüketimini önleyerek maliyetleri optimize etmek için otomatik ölçekleme vazgeçilmezdir. Kubernetes Yatay Pod Otomatik Ölçekleyici (Horizontal Pod Autoscaler – HPA), bu otomatik ölçekleme stratejilerinin temel taşlarından biridir. HPA, iş yüküne bağlı olarak pod replikalarının sayısını otomatik olarak artırıp azaltarak uygulamaların esnekliğini ve verimliliğini sağlar. Bu makalede, HPA’nın ne olduğunu, nasıl çalıştığını ve özellikle metrik verilerini sağlamak için kritik bir bileşen olan Metrics Server ile nasıl yapılandırılacağını detaylı bir şekilde inceleyeceğiz.
Kubernetes’te Ölçekleme Kavramları
Kubernetes, farklı ölçekleme stratejileri sunarak çeşitli senaryolara uyum sağlar. Temel olarak iki ana otomatik ölçekleme türü vardır:
Dikey Pod Otomatik Ölçekleyici (Vertical Pod Autoscaler – VPA)
VPA, bir pod’un CPU ve bellek gibi kaynak gereksinimlerini otomatik olarak ayarlar. Bu, bir pod’un daha fazla veya daha az kaynağa ihtiyaç duyduğunda, pod’u yeniden başlatarak veya kaynak tanımlarını güncelleyerek yapılır. VPA, genellikle sabit bir pod sayısıyla çalışırken, pod başına en uygun kaynak tahsisini sağlamak için kullanılır. Ancak, aynı anda hem HPA hem de VPA’yı CPU veya bellek gibi çakışan metrikler için kullanmak, beklenmedik davranışlara yol açabilir.
Yatay Pod Otomatik Ölçekleyici (Horizontal Pod Autoscaler – HPA)
HPA, bir uygulamanın pod sayısını, tanımlanan metrik hedeflerine göre otomatik olarak artırıp azaltır. Örneğin, bir uygulamanın CPU kullanımı belirli bir eşiği aştığında, HPA daha fazla pod başlatarak yükü dağıtır. CPU kullanımı düştüğünde ise gereksiz pod’ları sonlandırır. Bu yaklaşım, uygulamanın değişen taleplere anında uyum sağlamasına olanak tanır ve böylece hem performans hem de maliyet etkinliği optimize edilir. Makalemizin odak noktası HPA olacaktır.
Horizontal Pod Autoscaler (HPA) Nedir ve Nasıl Çalışır?
HPA, Kubernetes’in bir kontrol düzlemi bileşeni olan kube-controller-manager tarafından yönetilen bir API kaynağıdır. Temel amacı, bir Deployment, ReplicaSet, StatefulSet veya diğer ölçeklenebilir kaynakların pod replikası sayısını otomatik olarak ayarlamaktır.
HPA Kontrol Döngüsü
HPA, belirli aralıklarla (varsayılan olarak 15 saniyede bir) çalışır ve aşağıdaki adımları izler:
1. Metrik Toplama: HPA, hedeflediği kaynak (örneğin bir Deployment) ile ilişkili pod’ların metriklerini toplar. Bu metrikler genellikle CPU ve bellek kullanımı gibi temel kaynak metrikleri veya özel metrikler olabilir. Temel metrikler için Metrics Server’dan, özel metrikler için ise Custom Metrics API’den veya External Metrics API’den veri alır.
2. Hedef Analizi: Toplanan metrikler, HPA tanımında belirtilen hedeflerle karşılaştırılır. Örneğin, pod’ların ortalama CPU kullanımı %50’nin üzerine çıktığında ölçekleme tetiklenir.
3. Ölçekleme Kararı: HPA, mevcut pod sayısı ile hedeflenen metrik değerine ulaşmak için gereken pod sayısı arasındaki farkı hesaplar. Bu hesaplama sonucunda, pod sayısının artırılması (scale-out) veya azaltılması (scale-in) gerektiğine karar verir.
4. Kaynak Güncelleme: HPA, belirlenen ölçekleme kararına göre hedef kaynağın (örneğin Deployment) replika sayısını günceller. Deployment, bu değişikliği algılayarak yeni pod’ları başlatır veya mevcut pod’ları sonlandırır.
Ölçekleme Algoritmaları
HPA, temel olarak pod’ların ortalama CPU veya bellek kullanımını hedefler. Ancak, Kubernetes v1.6’dan itibaren özel metrikleri (Custom Metrics API aracılığıyla) ve v1.10’dan itibaren harici metrikleri (External Metrics API aracılığıyla) de destekleyerek çok daha esnek ölçekleme senaryolarına olanak tanır.
Ölçekleme Kısıtlamaları
Her HPA tanımı, minReplicas ve maxReplicas alanlarını içerir. Bu alanlar, HPA’nın pod sayısını hangi aralıkta tutabileceğini belirler. Bu sayede, uygulamanın performansının belirli bir seviyenin altına düşmesi veya gereksiz yere çok fazla kaynak tüketmesi engellenir.
Metrics Server Nedir ve Neden Gereklidir?
Metrics Server, Kubernetes kümesi içindeki düğümlerden ve pod’lardan metrik verilerini toplayan ve bu verileri Kubernetes API aracılığıyla kullanıma sunan küme çapında bir toplayıcıdır. HPA’nın temel CPU ve bellek metriklerini alabilmesi için Metrics Server’a mutlak suretle ihtiyacı vardır.
Metrics Server’ın Görevleri
1. Metrik Toplama: Her düğümde çalışan kubelet, cAdvisor aracılığıyla kendi düğümündeki ve üzerindeki pod’lardaki kaynak kullanım metriklerini (CPU, bellek) toplar.
2. API Sunumu: Metrics Server, kubelet’lerden gelen bu metrikleri toplar, işler ve /apis/metrics.k8s.io/v1beta1 adresinde bir API sunar.
3. HPA’ya Veri Sağlama: HPA, ölçekleme kararları için bu API üzerinden metrik verilerini sorgular. kubectl top nodes ve kubectl top pods gibi komutlar da aslında Metrics Server’ın sağladığı verileri kullanır.
Metrik Akışı
Metriklerin akışı şu şekildedir:
cAdvisor (her düğümde kubelet içinde çalışır) -> Kubelet Summary API -> Metrics Server -> Kube-API Server -> HPA/kubectl
Metrics Server’ın varlığı, HPA’nın doğru ve güncel metrik verilerine erişmesini sağlar. Eğer Metrics Server kümede kurulu değilse veya düzgün çalışmıyorsa, HPA temel CPU/bellek metriklerini okuyamaz ve ölçekleme yapamaz.
HPA ve Metrics Server İlişkisi
HPA, ölçekleme kararlarını vermek için gerekli olan CPU ve bellek metriklerini doğrudan Kubernetes API sunucusundan ister. Ancak, API sunucusu bu metrikleri kendisi toplamaz; bunun yerine, Metrics Server tarafından sağlanan /apis/metrics.k8s.io API’sini sorgulayarak bu verilere ulaşır. Bu nedenle, Metrics Server, HPA’nın temel metrikler üzerinden otomatik ölçekleme yapabilmesi için vazgeçilmez bir önkoşuldur. Metrics Server olmadan, kubectl top komutları çalışmayacağı gibi, HPA da no metrics currently available gibi hatalar vererek işlevsiz kalacaktır.
HPA Yapılandırması: Adım Adım Kılavuz
Bu bölümde, basit bir web uygulamasını Metrics Server kullanarak CPU kullanımına göre ölçeklendirmek için HPA’yı nasıl yapılandıracağımızı adım adım göreceğiz.
Önkoşullar
* Çalışır durumda bir Kubernetes kümesi (minikube, kind, kubeadm ile kurulmuş bir küme vb.).
* kubectl komut satırı aracı yüklü ve kümenize bağlı.
* Metrics Server’ın kümenizde kurulu ve çalışır durumda olması.
Adım 1: Uygulama Dağıtma ve Kaynak İstekleri Tanımlama
HPA’nın CPU veya bellek kullanımına göre ölçekleme yapabilmesi için, pod’larınızın kaynak isteklerini (requests) tanımlaması zorunludur. HPA, bir pod’un kullanımını, tanımlanan isteklere (request) oranla yüzde olarak hesaplar. Eğer kaynak istekleri tanımlanmamışsa, HPA CPU veya bellek kullanımını doğru bir şekilde değerlendiremez.
Aşağıda, CPU isteği 100m (0.1 CPU çekirdeği) olan basit bir Nginx uygulamasını dağıtan bir Deployment ve bir Service YAML dosyası bulunmaktadır.
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: hpa-demo-app
labels:
app: hpa-demo
spec:
replicas: 1
selector:
matchLabels:
app: hpa-demo
template:
metadata:
labels:
app: hpa-demo
spec:
containers:
- name: hpa-demo-container
image: k8s.gcr.io/hpa-example
ports:
- containerPort: 80
resources:
requests:
cpu: "100m" # HPA için kritik: CPU isteği tanımlanmalı
memory: "128Mi"
limits:
cpu: "200m"
memory: "256Mi"
---
service.yaml
apiVersion: v1
kind: Service
metadata:
name: hpa-demo-service
spec:
selector:
app: hpa-demo
ports:
- protocol: TCP
port: 80
targetPort: 80
type: ClusterIP
Bu dosyaları kaydedin ve kümenize uygulayın:
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
Pod’unuzun çalıştığını doğrulayın:
kubectl get pods -l app=hpa-demo
Adım 2: Metrics Server Kurulumu ve Doğrulaması
Eğer kümenizde Metrics Server kurulu değilse, kurmanız gerekmektedir. Çoğu Kubernetes dağıtımında (minikube gibi) varsayılan olarak kurulu olabilir. Eğer kurulu değilse, genellikle aşağıdaki komutlarla kurulabilir:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
Kurulumdan sonra, Metrics Server pod’unun çalıştığını ve metrikleri topladığını doğrulayın:
kubectl get pods -n kube-system -l k8s-app=metrics-server
kubectl top nodes
kubectl top pods -l app=hpa-demo
Eğer kubectl top komutları düğüm ve pod metriklerini gösteriyorsa, Metrics Server düzgün çalışıyor demektir. Aksi takdirde, Metrics Server pod’unun loglarını kontrol ederek sorunları gidermeniz gerekebilir.
Adım 3: HPA Kaynağını Oluşturma
Şimdi, dağıttığımız hpa-demo-app Deployment’ı için bir HPA kaynağı oluşturalım. Bu HPA, pod’ların ortalama CPU kullanımının %50’sini hedefleyecek ve pod sayısını minimum 1, maksimum 10 arasında tutacaktır.
# hpa.yaml
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: hpa-demo-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: hpa-demo-app
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50 # Pod'ların ortalama CPU kullanımını %50 hedefle
Bu HPA tanımını kaydedin ve uygulayın:
kubectl apply -f hpa.yaml
Adım 4: HPA Durumunu Gözlemleme
HPA’nın durumunu kontrol etmek için aşağıdaki komutları kullanabilirsiniz:
kubectl get hpa
Çıktı şöyle bir şeye benzeyecektir:
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
hpa-demo-hpa Deployment/hpa-demo-app /50% 1 10 1 30s
Başlangıçta TARGETS sütununda görebilirsiniz. Bu normaldir, çünkü HPA’nın metrikleri toplaması ve ilk ölçekleme kararını vermesi birkaç saniye sürebilir. Birkaç saniye sonra tekrar kontrol ettiğinizde gerçek CPU kullanımını göreceksiniz:
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
hpa-demo-hpa Deployment/hpa-demo-app 0%/50% 1 10 1 1m
Daha detaylı bilgi için describe komutunu kullanın:
kubectl describe hpa hpa-demo-hpa
Bu komut, HPA’nın mevcut durumunu, olayları (events) ve aldığı ölçekleme kararlarını gösterir.
Adım 5: Yük Oluşturarak HPA’yı Test Etme
Şimdi, hpa-demo-app pod’una yük bindirerek HPA’nın nasıl ölçeklendiğini gözlemleyelim. Bunun için geçici bir “yük üreteci” pod’u kullanabiliriz:
kubectl run -it --rm load-generator --image=busybox -- /bin/sh -c "while true; do wget -q -O- http://hpa-demo-service; done"
Bu komut, hpa-demo-service‘e sürekli istek gönderen bir busybox pod’u başlatır. Bu, hpa-demo-app pod’unun CPU kullanımını artıracaktır.
Yeni bir terminal açın ve HPA’nın durumunu sürekli izleyin:
watch kubectl get hpa hpa-demo-hpa
CPU kullanımı %50’yi aştığında, HPA’nın REPLICAS sütunundaki pod sayısını artırdığını (scale-out) göreceksiniz. Örneğin:
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
hpa-demo-hpa Deployment/hpa-demo-app 250%/50% 1 10 5 5m
Yük üreteci pod’unu durdurmak için ilk terminaldeki load-generator komutunu Ctrl+C ile sonlandırın. Yük azaldığında, HPA’nın pod sayısını tekrar minimuma düşürdüğünü (scale-in) gözlemleyeceksiniz. Bu ölçekleme işlemleri, HPA’nın stabilizationWindow (kararlılık penceresi) ayarları nedeniyle hemen gerçekleşmeyebilir; bir süre beklemeniz gerekebilir.
Gelişmiş HPA Yapılandırmaları
HPA, temel CPU kullanımının ötesinde daha karmaşık ölçekleme senaryolarını destekler.
Bellek Kullanımına Göre Ölçekleme
CPU gibi, bellek kullanımı da bir kaynak metriği olarak HPA tarafından izlenebilir. Bellek kullanımına göre ölçekleme için HPA tanımınızı aşağıdaki gibi güncelleyebilirsiniz:
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: hpa-demo-hpa-memory
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: hpa-demo-app
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: 70 # Pod'ların ortalama bellek kullanımını %70 hedefle
Bellek kullanımına göre ölçekleme yaparken, uygulamanızın bellek sızıntıları veya ani bellek tüketim artışları gibi davranışlarını dikkate almanız önemlidir.
Özel Metrikler (Custom Metrics) ile Ölçekleme
Bazen CPU veya bellek gibi temel kaynak metrikleri, bir uygulamanın gerçek yükünü veya performansını yansıtmayabilir. Bu durumlarda, uygulamanızın veya iş mantığınızın ürettiği özel metrikleri kullanarak ölçekleme yapabilirsiniz. Örneğin, bir kuyruktaki mesaj sayısı, bir API’ye gelen istek sayısı veya bir veritabanı bağlantı havuzunun doluluğu gibi metrikler.
Özel metrikleri kullanmak için, Prometheus gibi bir metrik toplama sistemi ve Prometheus Adapter gibi bir Custom Metrics API adaptörü kurmanız gerekir. Bu adaptör, Prometheus’tan metrikleri alıp bunları Kubernetes Custom Metrics API’sine sunar.
Özel bir metriğe göre HPA tanımı örneği:
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: hpa-demo-hpa-custom
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: hpa-demo-app
minReplicas: 1
maxReplicas: 10
metrics:
- type: Object # Belirli bir Kubernetes objesine ait metrik
object:
metric:
name: http_requests_per_second # Özel metrik adı
describedObject:
apiVersion: apps/v1
kind: Deployment
name: hpa-demo-app
target:
type: Value
value: "100" # Saniyede 100 HTTP isteği hedefle
Bu örnekte, HPA, hpa-demo-app Deployment’ına gelen HTTP isteklerinin saniyede 100’ü aşması durumunda ölçeklenecektir. type: Value yerine type: AverageValue kullanarak pod başına ortalama değeri hedefleyebilirsiniz.
Harici Metrikler (External Metrics) ile Ölçekleme
Harici metrikler, Kubernetes kümesinin dışındaki kaynaklardan gelen metriklerdir. Örneğin, AWS SQS kuyruğundaki mesaj sayısı, Google Cloud Pub/Sub’daki abonelik boyutu veya harici bir izleme sisteminden gelen herhangi bir özel metrik. Harici metrikler için de bir External Metrics API adaptörü (örneğin KEDA veya farklı bir Prometheus adaptörü) gereklidir.
Harici bir metriğe göre HPA tanımı örneği:
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: hpa-demo-hpa-external
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: hpa-demo-app
minReplicas: 1
maxReplicas: 10
metrics:
- type: External # Harici bir kaynaktan gelen metrik
external:
metric:
name: sqs_queue_length # Harici metrik adı
selector: # İsteğe bağlı etiket seçici
matchLabels:
queue_name: my-app-queue
target:
type: AverageValue
averageValue: "50" # Pod başına ortalama 50 kuyruk mesajı hedefle
Bu örnekte, HPA, my-app-queue adlı SQS kuyruğundaki mesaj sayısının pod başına ortalama 50’yi aşması durumunda ölçeklenecektir.
Birden Fazla Metrik ile Ölçekleme
HPA, aynı anda birden fazla metriği izleyebilir. Birden fazla metrik tanımlandığında, HPA her bir metrik için ayrı ayrı ölçekleme önerileri hesaplar ve en yüksek pod sayısını öneren metriğin kararını uygular. Bu, uygulamanızın her zaman en kritik yük koşuluna göre ölçeklenmesini sağlar.
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: hpa-demo-hpa-multi
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: hpa-demo-app
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: 70
- type: Object
object:
metric:
name: http_requests_per_second
describedObject:
apiVersion: apps/v1
kind: Deployment
name: hpa-demo-app
target:
type: Value
value: "100"
Bu HPA, CPU, bellek ve HTTP istekleri metriklerinden herhangi biri hedefi aştığında ölçeklenecektir.
HPA ve Metrics Server En İyi Uygulamaları
* Kaynak İstekleri (Requests) Tanımlama: HPA’nın CPU ve bellek kullanımına göre doğru ölçekleme yapabilmesi için tüm pod’larınızda resources.requests.cpu ve resources.requests.memory tanımlarının yapılması zorunludur. Bu, HPA’nın pod’ların kullanım oranlarını hesaplaması için bir referans noktası sağlar.
* minReplicas ve maxReplicas Değerleri: Uygulamanızın minimum ve maksimum kapasite gereksinimlerini dikkatlice belirleyin. minReplicas uygulamanızın temel yükü kaldırabilmesini sağlarken, maxReplicas küme kaynaklarının aşırı tüketilmesini veya kontrolsüz ölçeklemeyi önler.
* stabilizationWindow ve cooldown Süreleri: HPA, hızlı ölçekleme dalgalanmalarını (flapping) önlemek için stabilizationWindow (v2beta2 ve sonrası) ve eski versiyonlarda scale-down-stabilization-window gibi parametreler kullanır. Bu ayarlar, HPA’nın ölçekleme kararlarını belirli bir süre boyunca “stabilize” etmesini sağlar. Özellikle scale-in (pod azaltma) işlemleri için bu süre önemlidir; ani yük düşüşlerinde pod’ların hemen kapatılmasını engelleyerek geçici yük artışlarına karşı koruma sağlar.
* Metrik Doğruluğu ve Gecikmesi: Metrics Server’ın ve özel/harici metrik adaptörlerinin doğru ve güncel veri sağlaması kritik öneme sahiptir. Metrik toplama ve iletimindeki gecikmeler, HPA’nın reaktifliğini etkileyebilir.
* Gözlem ve İzleme: HPA’nın etkinliğini anlamak ve olası sorunları tespit etmek için HPA’nın kendisini, hedeflediği pod’ları ve metrik kaynaklarını sürekli olarak izleyin. Prometheus ve Grafana gibi araçlar bu konuda size yardımcı olabilir. HPA olaylarını (kubectl describe hpa) ve pod metriklerini (kubectl top pods) düzenli olarak kontrol edin.
Sık Karşılaşılan Sorunlar ve Çözümleri
* Metrics Server Çalışmıyor/Metrikler Görünmüyor:
* Metrics Server pod’unun kube-system namespace’inde çalıştığını doğrulayın (kubectl get pods -n kube-system -l k8s-app=metrics-server).
* Pod loglarını kontrol edin (kubectl logs -n kube-system ).
* Küme içindeki sertifika sorunları veya API erişim izinleri nedeniyle Metrics Server’ın kubelet’lerden metrikleri alamaması yaygın bir sorundur. Kubernetes dağıtımınızın belgelerini kontrol edin.
* HPA Ölçekleme Yapmıyor veya Hata Veriyor:
* kubectl get hpa çıktısında TARGETS sütununda veya no metrics currently available görüyorsanız, Metrics Server’ın düzgün çalıştığından ve metrikleri topladığından emin olun.
* Hedeflediğiniz pod’ların kaynak isteklerinin (resources.requests.cpu, resources.requests.memory) tanımlı olduğundan emin olun. HPA, bu değerlere göre kullanım oranlarını hesaplar.
* HPA tanımındaki scaleTargetRef‘in doğru Deployment/StatefulSet/ReplicaSet’i işaret ettiğinden emin olun.
* kubectl describe hpa komutuyla HPA olaylarını kontrol edin. HPA’nın neden ölçekleme yapmadığına dair ipuçları bulabilirsiniz.
* Gereksiz Ölçekleme (Flapping):
* Uygulamanızın yük profili çok değişken ise, HPA’nın stabilizationWindow ayarlarını gözden geçirin. Daha uzun bir kararlılık penceresi, ani düşüşlerde pod’ların hemen kapatılmasını engelleyebilir.
* Hedeflenen metrik yüzdesini veya değerini artırarak HPA’nın daha az hassas olmasını sağlayabilirsiniz.
* minReplicas ve maxReplicas değerlerini uygulamanızın gerçek ihtiyaçlarına göre ayarlayın.
Sonuç
Kubernetes Horizontal Pod Autoscaler (HPA) ve Metrics Server, modern bulut yerel uygulamaların dinamik ve verimli bir şekilde çalışmasını sağlayan temel bileşenlerdir. Metrics Server, HPA’nın doğru ve güncel CPU ve bellek metriklerine erişmesini sağlayarak, uygulamaların değişen iş yüklerine otomatik olarak uyum sağlamasına olanak tanır. Bu sayede, uygulamalarınızın performansı optimize edilirken, gereksiz kaynak tüketimi ve dolayısıyla maliyetler de minimize edilmiş olur.
HPA’nın temel CPU/bellek metrikleri ile basit kurulumundan, özel ve harici metriklerle daha karmaşık ve iş odaklı ölçekleme senaryolarına kadar sunduğu esneklik, onu her Kubernetes yöneticisi ve geliştiricisi için vazgeçilmez bir araç haline getirir. Doğru yapılandırma, sürekli izleme ve en iyi uygulamaların takip edilmesiyle, Kubernetes kümelerinizde yüksek performanslı, dayanıklı ve maliyet etkin uygulamalar çalıştırabilirsiniz. Uygulamalarınızın kaynak kullanımını proaktif olarak yöneterek, hem kullanıcı deneyimini iyileştirecek hem de operasyonel verimliliği artıracaksınız.