Ana içeriğe geç

Veri Uzmanları için Azure App Service: Kapsamlı Bir Rehber

Bu rehber, Azure App Service kullanarak uygulamaları nasıl dağıtacağınızı, yöneteceğinizi ve optimize edeceğinizi; güvenlik, ölçekleme ve maliyetten tasarruf için pratik ipuçlarıyla gösterir.
· 15 dk. oku

Yapay Zeka ile Keşfedin

Uygulamaları verimli bir şekilde dağıtmak, onları geliştirmek kadar önemli hale geldi. Bir veri uzmanı olarak, modellerimizi ve uygulamalarımızı mükemmelleştirmeye ciddi zaman ayırırken, dağıtım sürecinin bazen arka planda kaldığını sıkça gördüm. İşte bu noktada Azure App Service devreye giriyor—dağıtımı basitleştirirken ölçeklenebilirlik, güvenlik ve izleme için sağlam özellikler sunan bir platform.

Bu kapsamlı eğitimde, Azure App Service üzerinde uygulama kurulumunu, dağıtımını ve ölçeklendirmeyi adım adım anlatacağım.

İlk uygulamasını dağıtmak isteyen bir junior veri uzmanı olun ya da bulut altyapınızı optimize etmek isteyen deneyimli bir profesyonel, bu kılavuz pratik adımlar ve en iyi uygulamalar sunacaktır.

Azure App Service Nedir?

Azure App Service, temel altyapıyı yönetmeden web uygulamaları oluşturup barındırmanıza olanak tanıyan Microsoft’un Hizmet Olarak Platform (PaaS) teklifidir. Python, Java, Node.js, .NET ve daha fazlası dahil olmak üzere birden çok programlama dili ve çerçeveyi desteklemek üzere tasarlanmıştır.

Kurulum sürecine dalmadan önce, Azure App Service’i veri uzmanları için özellikle değerli kılan şeyleri anlayalım:

  • Basitleştirilmiş dağıtım: Altyapı yönetimi yerine kodunuza odaklanın.
  • Çoklu dil desteği: Python, R (konteynerler aracılığıyla) veya desteklenen diğer dillerle yazılmış uygulamaları dağıtın.
  • Veri hizmetleriyle entegrasyon: Azure SQL, Cosmos DB veya diğer veri depolarına kolayca bağlanın.
  • Ölçeklenebilirlik: Talebe göre dikey veya yatay ölçekleyin; özellikle makine öğrenimi model sunumu için kullanışlıdır.
  • Yerleşik kimlik doğrulama: Kapsamlı kimlik doğrulama kodu yazmadan uygulamalarınızı güvenceye alın.
  • CI/CD entegrasyonu: GitHub, Azure DevOps veya diğer depolardan dağıtımları otomatikleştirin.

Bir veri bilimci veya mühendisi olarak, App Service’in Azure Functions veya Azure Kubernetes Service gibi diğer Azure hizmetlerinden nasıl ayrıldığını merak ediyor olabilirsiniz. Temel fark, App Service’in mükemmel bir orta yol sunmasıdır—sunucusuz seçeneklerden daha fazla esneklik, konteyner orkestrasyon platformlarından daha az karmaşıklık.

> Azure’un ekosistemi ve hizmetlerine ilişkin temel bir genel bakış için Microsoft Azure’a giriş kursunu inceleyin.

Azure App Service’i Kurma

Artık Azure App Service’in ne olduğunu anladığımıza göre, işe koyulup ilk App Service’imizi kuralım. Süreç iki ana adımdan oluşur: bir App Service planı oluşturmak ve ardından bu plan içinde bir web uygulaması oluşturmak.

Azure App Service planı oluşturma

Bir App Service planı; uygulamalarınız için bilgi işlem kaynaklarını, bölgeyi ve fiyatlandırma katmanını tanımlar. Bunu, uygulamalarınızın çalışacağı sunucu çiftliği olarak düşünebilirsiniz. Birden çok uygulama tek bir App Service planını paylaşabilir; bu da birden fazla küçük uygulamayı çalıştırmak için maliyet etkinlik sağlar.

App Service planı şöyle oluşturulur:

  1. Azure Portal’a giriş yapın
  2. Sol gezinmede "Create a resource"a tıklayın
  3. "App Service Plan"i arayın ve seçin
  4. "Create"e tıklayın
  5. Aşağıdaki ayrıntıları doldurun:
    • Abonelik: Azure aboneliğinizi seçin
    • Kaynak grubu: Yeni bir grup oluşturun veya var olanı seçin
    • Ad: Planınıza açıklayıcı bir ad verin (ör. "data-apps-plan")
    • İşletim sistemi: Windows veya Linux arasında seçim yapın (çoğu veri bilimi iş yükü için Linux’u öneririm)
    • Bölge: Kullanıcılarınıza veya veri kaynaklarınıza yakın bir bölge seçin
    • Fiyatlandırma katmanı: İhtiyaçlarınıza göre uygun katmanı seçin

Azure portalında App Service planı oluşturma.

Fiyatlandırma katmanlarından söz açılmışken, Azure App Service birkaç seçenek sunar:

Katman

Özellikler

En uygun kullanım

Free

1GB depolama, paylaşılan altyapı, günde 60 dakika işlem

Geliştirme ve test

Shared

1GB depolama, günde 240 dakika işlem

Düşük trafikli uygulamalar, geliştirme

Basic

10GB depolama, adanmış VM’ler, özel alan adları

Orta trafikli üretim iş yükleri

Standard

50GB depolama, otomatik ölçeklendirme, aşama slotları

Daha yüksek trafikli üretim uygulamaları

Premium

250GB depolama, geliştirilmiş performans, daha fazla ölçeklendirme seçeneği

Kurumsal uygulamalar, yüksek performans ihtiyaçları

Veri uygulamaları için, üretimde genellikle en az Basic katmanla başlamayı öneririm; çünkü veri işleme çoğu zaman basit web sunumundan daha fazla kaynak gerektirir. Önemli hesaplama gücü gerektiren makine öğrenimi modelleri sunuyorsanız, otomatik ölçeklendirme özellikleri nedeniyle Standard katmanı düşünün.

Bir App Service planını Azure CLI ile de oluşturabilirsiniz:

# Create a resource group first if needed
az group create --name MyResourceGroup --location "East US"

# Create an App Service plan
az appservice plan create --name MyAppServicePlan --resource-group MyResourceGroup --sku B1 --is-linux

App Service web uygulaması oluşturma

Bir App Service planınız olduğunda, bunun içinde bir web uygulaması oluşturabilirsiniz. Web uygulaması, kodunuzu çalıştıracak olan gerçek uygulama örneğidir.

Bir web uygulaması oluşturmak için şu adımları izleyin:

  1. Azure Portal’da "Create a resource"a tıklayın
  2. "Web App"i arayın ve seçin
  3. "Create"e tıklayın
  4. Şu ayrıntıları doldurun:
    • Abonelik: Azure aboneliğinizi seçin
    • Kaynak grubu: App Service planınızla aynı grubu kullanın
    • Ad: Bu, uygulamanızın URL’sinin bir parçası olacaktır (ör., myapp.azurewebsites.net)
    • Yayınla: Code veya Docker Container’ı seçin (bu eğitim için Code seçeceğiz)
    • Çalışma zamanı yığını: Uygulamanızın dili/çerçevesini seçin (ör., Python 3.9)
    • İşletim sistemi: App Service planınızın İS’iyle eşleştirin
    • Bölge: App Service planınızın bölgesiyle eşleşmelidir
    • App Service planı: Daha önce oluşturduğunuz planı seçin

Azure portalında App Service Web App oluşturma.

  1. Doğrulama geçince "Review + create"e ve ardından "Create"e tıklayın

Azure CLI kullanıyorsanız, tek bir komutla bir web uygulaması oluşturabilirsiniz:

# Create a Python web app
az webapp create --resource-group MyResourceGroup --plan MyAppServicePlan --name MyWebApp --runtime "PYTHON:3.9"

Web uygulamanızı oluşturduktan sonra Azure gerekli kaynakları sağlar. Tamamlandığında, "Go to resource"a tıklayarak veya kaynak grubunuzda bularak yeni web uygulamanıza gidebilirsiniz.

Bu aşamada, uygulamanızın URL’sini (https://your-app-name.azurewebsites.net) ziyaret ettiğinizde varsayılan bir sayfa görmelisiniz. Bu, uygulamanızın çalıştığını doğrular; ancak henüz sizin kodunuzu içermiyor—dağıtımı bir sonraki bölümde ele alacağız.

Temel uygulama ayarlarını yapılandırma

Dağıtıma geçmeden önce, uygulamamız için bazı temel yapılandırmaları yapalım. Veri uygulamaları için, veritabanı bağlantıları veya API anahtarları gibi belirli ortam değişkenlerine ihtiyaç duyabilirsiniz.

Uygulama ayarlarını yapılandırmak için:

  1. Azure Portal’da web uygulamanıza gidin
  2. Sol kenar çubuğunda, "Settings" altında "Environment variables"ı seçin
  3. "Application settings" sekmesinde "Add"a tıklayın
  4. Ortam değişkenleriniz için anahtar-değer çiftleri ekleyin
  5. Bitirdiğinizde "Save"e tıklayın

Azure portalında temel App Service ayarlarını yapılandırma.

Bunları Azure CLI kullanarak da ayarlayabilirsiniz:

# Set an environment variable
az webapp config appsettings set --resource-group MyResourceGroup --name MyWebApp --settings DB_CONNECTION_STRING="your-connection-string"

Bu ayarlar, uygulamanız tarafından ortam değişkenleri olarak kullanılabilir; bu da yapılandırmayı kaynak kodunuza gömmeden saklamanın güvenli bir yoludur.

İlk Uygulamanızı Dağıtma

Azure App Service altyapımızı kurduğumuza göre, şimdi uygulamamızı dağıtma zamanı. Azure App Service, çalışma şeklinize ve tercihlerinize göre esneklik sağlayan birden çok dağıtım yöntemi sunar. Bu bölümde, kaynak kontrolden (GitHub veya Azure Repos), FTP’den ve yerel Git depolarından uygulama dağıtmayı inceleyeceğiz.

Bir veri uzmanı olarak bu adım kritik önemdedir; çünkü yerel geliştirme ortamınız ile modellerinizi veya veri işleme hatlarınızı sunabilen üretime hazır bir uygulama arasındaki köprüyü kurar.

> Dağıtım ilkelerine yeniyseniz, bu DevOps kursu temel kavramlar ve araçlara net bir giriş sunar.

GitHub veya Azure Repos’tan dağıtım

Azure App Service’in en güçlü özelliklerinden biri yerleşik sürekli dağıtım (CD) yetenekleridir. App Service’inizi bir GitHub veya Azure DevOps deposuna bağlayarak, belirli bir dala kod gönderildiğinde değişiklikleri otomatik olarak dağıtabilirsiniz.

Bu yaklaşım, ortak projelerde çalışan veri ekipleri için özellikle değerlidir; çünkü:

  • Tüm ekip üyelerinin aynı ortama dağıtım yapmasını sağlar
  • Dağıtımların denetim izini oluşturur
  • Manuel dağıtım hatalarını azaltır
  • Dağıtım hattının bir parçası olarak otomatik testleri destekler

> Sürüm kontrolüne yeniyseniz, GitHub Foundations yolu temel konularda hız kazanmanıza yardımcı olabilir. Ayrıca dağıtım hatlarınızı ve sürüm kontrolünü yönetmek için sağlam bir alternatif olarak Azure DevOps’u keşfedebilirsiniz.

GitHub üzerinden sürekli dağıtımı şöyle kurarsınız:

  1. Azure Portal’da App Service’inize gidin
  2. Sol kenar çubuğunda "Deployment Center"ı seçin
  3. Kaynak olarak "GitHub"ı seçin
  4. İstendiğinde GitHub hesabınızla kimlik doğrulayın
  5. Kuruluşunuzu, deponuzu ve dalınızı seçin
  6. "Save"e tıklayın

Azure Portal’da Deployment Center.

Azure, seçilen dala değişiklikler gönderildiğinde uygulamanızı otomatik olarak oluşturan ve dağıtan bir GitHub iş akışı dosyasını deponuzda oluşturacaktır. Bu iş akışı, CI/CD sürecini yönetmek için GitHub Actions kullanır.

> Dağıtımları daha da otomatikleştirmek için, Makefile’ları GitHub Actions ile birleştirmeyi düşünün.

Python uygulamaları için iş akışı genellikle şu adımları içerir:

  • Python’u kurun
  • requirements.txt’ten bağımlılıkları yükleyin
  • Herhangi bir testi çalıştırın
  • Azure App Service’e dağıtın

Sürekli dağıtımı Azure CLI kullanarak da kurabilirsiniz:

# Set up GitHub continuous deployment
az webapp deployment source config --name MyWebApp --resource-group MyResourceGroup --repo-url https://github.com/username/repo --branch main --git-token <your-github-token>

Dağıtım ayarlarını yapılandırma

Dağıtımınızı ince ayarlamak için, GitHub iş akışı dosyasında veya Azure Portal’da ek ayarlar yapılandırabilirsiniz:

  1. App Service’inize gidin
  2. "Deployment Center"ı seçin
  3. "Settings"e tıklayın
  4. Burada şunları yapılandırabilirsiniz:
    • Derleme sağlayıcısı (Kudu veya GitHub Actions)
    • Derleme ve dağıtım iş akışları
    • Depo erişim ayarları

Veri bilimi uygulamaları için, bilimsel paketleri kuran veya model eğitim betiklerini çalıştıran özel derleme adımları eklemeniz gerekebilir. Bunlar doğrudan deponuzdaki iş akışı dosyasına eklenebilir.

FTP veya yerel Git kullanarak dağıtım

GitHub veya Azure Repos’tan sürekli dağıtım ekip ortamları için önerilse de, bazen daha doğrudan dağıtım yöntemlerine ihtiyaç duyabilirsiniz. Azure App Service bu senaryolar için hem FTP’yi hem de yerel Git’i destekler.

FTP dağıtımı

FTP dağıtımı, uygulama dosyalarınızı doğrudan Azure App Service’e yüklemenin basit bir yoludur. Bu yöntem, hızlı güncellemeler veya karmaşık derleme süreçleri gerektirmeyen uygulamalar için kullanışlıdır.

FTP ile dağıtmak için:

  1. App Service’inizde "Deployment Center"a gidin
  2. "FTP"yi seçin ve FTP uç noktasını, kullanıcı adını ve parolayı not alın
  3. Herhangi bir FTP istemcisi (ör. FileZilla) ile App Service’inize bağlanın
  4. Uygulama dosyalarınızı /site/wwwroot/ dizinine yükleyin

Python uygulamaları için requirements.txt dosyanızın yüklemeye dahil olduğundan emin olun. Azure App Service gerekli paketleri otomatik olarak kuracaktır.

Yerel Git dağıtımı

Yerel Git dağıtımı, yerel Git deponuzdan doğrudan Azure’a kod göndermenize olanak tanır. Bu yöntem, Git’in sürüm kontrol yeteneklerinden yararlanırken dağıtım süreci üzerinde daha fazla kontrol sağlar.

Yerel Git dağıtımını kurmak için:

  1. App Service’inizde "Deployment Center"a gidin
  2. "Local Git"i seçin
  3. "Save"e tıklayın
  4. "Deployment Credentials"a giderek kimlik bilgilerinizi ayarlayın veya görüntüleyin
  5. Azure Git uzak deponuzu yerel deponuza ekleyin:
# Add the Azure remote
git remote add azure https://[email protected]/your-app-name.git

# Push your code to Azure
git push azure main

Kodu Azure uzak deposuna gönderdiğinizde, platform uygulamanızı otomatik olarak derler ve dağıtır.

Dağıtım durumunu izleme

Hangi dağıtım yöntemini seçerseniz seçin, sorunları erken yakalamak için dağıtım sürecini izlemek önemlidir. Azure, dağıtım durumunu izlemek için birkaç yol sunar:

  1. Azure Portal’da App Service’inize gidin
  2. "Deployment Center"ı seçin
  3. Ayrıntılı dağıtım günlüklerini görmek için "Logs" sekmesine bakın
  4. GitHub dağıtımları için, GitHub deponuzdaki Actions sekmesini de kontrol edebilirsiniz

Azure portalındaki Deployment Center’da dağıtım durumunu izleme.

Bir dağıtım başarısız olursa, günlükler neyin yanlış gittiğine dair bilgi sağlar. Yaygın sorunlar şunlardır:

  • requirements.txt içinde eksik bağımlılıklar
  • Kodunuzda sözdizimi hataları
  • Uygulamanızda yapılandırma sorunları
  • Derleme sırasında bellek sınırlamaları

Dağıtım sorunlarını gidermek için:

  1. Dağıtım günlüklerini dikkatlice inceleyin
  2. Uygulamanızın yerelde çalıştığını kontrol edin
  3. Tüm bağımlılıkların requirements.txt dosyanızda listelendiğinden emin olun
  4. Uygulamanızın giriş noktasının Azure’un beklediği ile eşleştiğini doğrulayın

Veri bilimi uygulamalarında dağıtım hataları genellikle büyük paket kurulumları veya başlangıç sırasında bellek yoğun işlemler nedeniyle ortaya çıkar. Bu sorunlarla karşılaşırsanız şunları düşünün:

  • Büyük bağımlılıkları daha küçük bileşenlere bölmek
  • Üretim dağıtımları için hafif alternatifler kullanmak
  • Modelleri önceden eğitmek ve dağıtım sırasında eğitim yerine yapıt olarak saklamak

Azure App Service’i Yapılandırma

Uygulamanızı dağıttıktan sonra, bir sonraki adım Azure App Service’inizin farklı yönlerini en iyi performans ve güvenlik için yapılandırmaktır. Bu bölü mde özel alan adlarını, kimlik doğrulamayı ve uygulama ayarlarını ele alacağız.

Özel alan adlarını yapılandırma

Varsayılan olarak, App Service’inize your-app-name.azurewebsites.net gibi bir URL ile erişilebilir. Ü retim ortamı uygulamaları için kendi alan adınızı kullanmak istersiniz. İşte özel bir alan adı nasıl kurulur:

  1. Hali hazırda bir alan adınız yoksa bir alan adı kayıt kuruluşundan satin alın
  2. App Service’inizde sol kenar çubuğundan "Custom domains" bölümüne gidin
  3. "Add custom domain" öğesine tıklayın
  4. Alan adınızı girin (örn. myapp.example.com)
  5. Alan adı sahipliğini doğrulamak için yönergeleri izleyin
    • DNS ayarlarınıza bir TXT veya CNAME kaydı eklemeniz gerekecek

App Service portalında özel alan adlarını yapılandırma.

Apex alan adları için (www olmadan example.com gibi) App Service’inizin IP adresine işaret eden bir A kaydı oluşturmanız gerekir. Bu IP adresini özel alan adı yapılandırma sayfasında bulabilirsiniz.

Ayrıca Azure CLI kullanarak da özel alan adlarını yönetebilirsiniz:

# Add a custom domain
az webapp config hostname add --webapp-name MyWebApp --resource-group MyResourceGroup --hostname www.example.com

SSL sertifikalarını bağlama

Güvenli uygulamalar için, özellikle hassas verileri işleyenlerde, HTTPS’i etkinleştirmek kritiktir. Azure App Service, ücretsiz yönetilen sertifikalar sağlayarak veya kendi sertifikanızı yüklemenize izin vererek bu süreci kolaylaştırır.

Bir SSL sertifikası eklemek için:

  1. App Service’inizde "TLS/SSL settings" bölümüne gidin
  2. "Private Key Certificates" öğesini seçin
  3. Aşağıdaki seçeneklerden birini tercih edin:
    • Ücretsiz App Service yönetimli sertifika oluşturun
    • Bir App Service sertifikası içe aktarın
    • Bir PFX sertifikası yükleyin
  4. Sertifika eklendikten sonra "Bindings" bölümüne gidin
  5. Özel alan adınız için bir SSL bağlaması ekleyin

Hassas bilgi işleyen veri uygulamaları için, tüm trafiğin şifrelenmesini sağlamak üzere yalnızca HTTPS kipini etkinleştirmenizi öneririm:

  1. "TLS/SSL settings" içinde "HTTPS Only" bölümüne gidin
  2. Anahtarı "On" konumuna getirin
  3. "Save" öğesine tıklayın

Kimlik doğrulama ve yetkilendirmeyi yapılandırma

Birçok veri uygulaması, hassas verilere veya işlevlere erişimi kontrol etmek için kullanıcı kimlik doğrulaması gerektirir. Azure App Service, kodunuza kimlik doğrulama mantığı ekleme işini ortadan kaldırabilecek yerleşik kimlik doğrulama seçenekleri sunar.

Kimlik doğrulamayı kurmak için:

  1. App Service’inizde sol kenar çubuğundan "Authentication" bölümüne gidin
  2. "Add identity provider" öğesine tıklayın
  3. Kimlik sağlayıcınızı seçin:
    • Microsoft (Azure AD)
    • Google
    • Facebook
    • Twitter
    • GitHub
    • OpenID Connect
  4. Sağlayıcı ayarlarını yapılandırın
  5. Yönlendirme URL’lerini ve belirteç depolama yapılandırmalarını ayarlayın

Azure App Service için kimlik doğrulama ve yetkilendirmeyi yapılandırma.

Kurumsal veri uygulamaları için, mevcut kurumsal kimliklerle bütünleştirildiği ve koşullu erişim ile çok faktörlü kimlik doğrulama gibi özellikleri desteklediği için çoğunlukla Azure Active Directory tercih edilir.

Ayrıca, uygulamanıza kimlerin erişebileceğini kontrol etmek için yetkilendirme kısıtlamalarını da yapılandırabilirsiniz:

  1. Authentication ayarlarında, kimlik sağlayıcınızın yanındaki "Edit" seçeneğini seçin
  2. "Restrict access" altında şunlardan birini seçin:
    • Kimliği doğrulanmamış isteklere izin ver
    • Kimlik doğrulamasını zorunlu kıl
    • Anonim isteklere izin ver (işlem yok)
  3. Gerekirse izin verilen harici yönlendirme URL’lerini yapılandırın

Uygulama ayarları ve bağlantı dizeleri

Uygulama ayarlarına kısaca değ inmiştik, ancak bunları veri uygulamanızı etkili bir şekilde yapılandırmak için nasıl kullanabileceğinize daha derinlemesine bakalım.

Azure App Service’deki uygulama ayarları, uygulamanız için ortam değişkenleri görevini görür. Özellikle şunlar için kullanışlıdır:

  • Veritabanı bağlantı dizeleri
  • API anahtarları
  • Özellik bayrakları (feature flags)
  • Çevreye özgü yapılandırmalar

Uygulama ayarları eklemek veya değiştirmek için:

  1. App Service’inizde sol kenar çubuğundan "Configuration" bölümüne gidin
  2. "Application settings" sekmesini seçin
  3. Bir anahtar-değer çifti eklemek için "New application setting" öğesine tıklayın
  4. Hassas değerler için, slot değişimleri sırasında takas edilmelerini önlemek için "deployment slot setting" seçeneğini açabilirsiniz

Azure App Service’de ortam değişkenlerini yapılandırma

Veri uygulamaları için yaygın ayarlar şunları içerir:

  • Veritabanı bağlantı dizeleri
  • Depolama hesabı erişim anahtarları
  • Makine öğrenmesi model uç nokta adresleri
  • A/B testleri için özellik bayrakları

Ayrıca, özellikle veritabanı bağlantıları için kullanışlı olan bağlantı dizelerini ayrı olarak yapılandırabilirsiniz:

  1. Configuration sayfasında "Connection strings" sekmesini seçin
  2. "New connection string" öğesine tıklayın
  3. Bir ad, değer ve tür (SQL Server, MySQL, PostgreSQL, vb.) belirtin

Bağlantı dizeleri de uygulamanıza ortam değişkenleri olarak sunulur, ancak dil/çerçevenize bağlı olarak farklı bir adlandırma kuralı kullanılır.

Python uygulamanızda ayarları almak için:

import os

# Retrieve an application setting
api_key = os.environ.get('API_KEY')

# Retrieve a connection string (Python)
connection_string = os.environ.get('SQLCONNSTR_MyDatabase')

Key Vault referanslarını kullanma

Veritabanı kimlik bilgileri veya API anahtarları gibi çok hassas bilgiler için Azure Key Vault ek bir güvenlik katmanı sağlar. Sırlarınızı doğrudan uygulama ayarlarınızda referans gösterebilirsiniz:

  1. Bir Azure Key Vault oluşturun ve sırlarınızı ekleyin
  2. App Service’inizin yönetilen bir kimliğe sahip olduğundan emin olun
  3. Bu kimliğe Key Vault için erişim izni verin
  4. Uygulama ayarlarınızda şu biçimi kullanarak sırra referans verin: @Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/mysecret/)

Bu yaklaşım, hassas bilgileri uygulama yapılandırmanızdan ayırarak merkezi sır yönetimi sağlar.

Azure App Service’i Ölçeklendirme ve Yönetme

Artık uygulamanız dağıtıldı ve yapılandırıldı; şimdi iyi performans göstermesini, güvenilir kalmasını ve değişen iş yüklerine uyum sağlamasını sağlamaya odaklanalım. 

Azure App Service’i doğru ölçeklendirmek ve yönetmek, genellikle değişken kaynak ihtiyaçları olan ve hassas bilgiler işleyebilen veri uygulamaları için özellikle önemlidir.

App Service planlarını ölçeklendirme

Azure gibi bulut platformlarının en büyük avantajlarından biri, talebe göre kaynakları yukarı veya aşağı ölçeklendirme olanağıdır. Veri uygulamaları için bu özellikle değerlidir; çünkü iş yükleri çoğu zaman yoğun veri işlemeden, düşük trafikli sessiz dönemlere kadar önemli ölçüde değişir.

Azure App Service iki ana ölçeklendirme yöntemi sunar:

Dikey ölçeklendirme (Scale up/down)

Dikey ölçeklendirme, App Service planınızın boyutunu değiştirerek daha fazla veya daha az CPU, bellek ve disk alanı sağlamayı kapsar. Bu, uygulamanızın performansı tek bir örneğin kaynakları tarafından sıkıştırıldığı durumlarda kullanışlıdır.

Dikey olarak ölçeklendirmek için:

  1. App Service planınızda sol kenar çubuğundan "Scale up (App Service plan)" seçeneğini seçin
  2. İhtiyaçlarınıza göre farklı bir fiyatlandırma katmanı veya örnek boyutu seçin
  3. "Apply" öğesine tıklayın

Bir Azure App Service planını yukarı ölçeklendirme.

Veri uygulamaları için, şu durumlarda dikey ölçeklendirmeyi değerlendirin:

  • Büyük veri işleme işlemleri nedeniyle bellek baskısı yaşıyorsanız
  • Model çıkarımı sırasında CPU sınırlarına ulaşıyorsanız
  • Veri önbellekleme veya geçici dosyalar için ek depolamaya ihtiyacınız varsa

Yatay ölçeklendirme (Scale out/in)

Yatay ölçeklendirme, uygulamanızı çalıştıran sanal makine örneklerinin sayısını değiştirir. Bu yaklaşım, yükü dağıtmak ve kullanılabilirliği artırmak için idealdir.

Yatay olarak ölçeklendirmek için:

  1. App Service planınızda sol kenar çubuğundan "Scale out (App Service plan)" seçeneğini seçin
  2. Örnek sayısını el ile ayarlayın veya otomatik ölçeklendirme kurallarını yapılandırın
  3. "Save" öğesine tıklayın

El ile ölçeklendirme için, örnek sayısını istenen değere getirmeniz yeterlidir. Ancak, otomatik ölçeklendirme, metriklere dayalı olarak kaynakları otomatik ayarladığı için daha fazla esneklik sağlar.

Otomatik ölçeklendirme kurallarını ayarlama

Değişken iş yüklerine sahip veri uygulamaları için otomatik ölçeklendirme özellikle değerlidir. örneğin, bir makine öğrenmesi modeli sunan API, iş saatlerinde daha yüksek, gece ise daha düşük trafik görebilir.

Otomatik ölçeklendirmeyi yapılandırmak için:

  1. "Scale out" bölümünde "Enable autoscale" seçeneğini belirleyin
  2. Ş u bileşenlerle bir ölçek koşulu tanımlayın:
    • Varsayılan örnek sayısı
    • Ölçeğe genişletme kuralları (örnek ne zaman eklensin)
    • Ölçeğe daraltma kuralları (örnek ne zaman kaldırılsın)
    • İsteğe bağlı zamanlama tabanlı kurallar

Azure App Service planını yatay ölçeklendirme

İşte yaygın bir otomatik ölçeklendirme kuralı örneği:

  • Scale out: CPU yüzdesi 10 dakika boyunca %70’in üzerindeyse bir örnek ekleyin
  • Scale in: CPU yüzdesi 10 dakika boyunca %30’un altındaysa bir örnek kaldırın

Ayrıca şunlara dayalı daha sofistike kurallar da oluşturabilirsiniz:

  • Bellek kullanımı
  • Veri kuyruğu uzunluğu
  • Application Insights’tan özel metrikler

Veri bilimi iş yükleri için şu otomatik ölçeklendirme stratejilerini düşünün:

  • Uygulamanız makine öğrenmesi modelleri sunuyorsa, kestirim gecikmesini düşük tutmak için istek kuyruğu uzunluğuna göre ölçeklendirin
  • ETL süreçleri için, bilinen işleme pencerelerinde ek kapasite planlayın
  • Küresel kullanıcılara sahip uygulamalar için, farklı saat dilimlerinde yeterli kapasite sağlamak üzere zamanlama tabanlı ölçeklendirme kullanın

Azure CLI kullanarak da otomatik ölçeklendirmeyi yapılandırabilirsiniz:

# Create an autoscale setting with a rule to scale out when CPU > 70%
az monitor autoscale create --resource-group MyResourceGroup --resource MyAppServicePlan --resource-type "Microsoft.Web/serverfarms" --name MyAutoScaleConfig --min-count 2 --max-count 5 --count 2

# Add a scale out rule
az monitor autoscale rule create --resource-group MyResourceGroup --autoscale-name MyAutoScaleConfig --scale out 1 --condition "Percentage CPU > 70 avg 10m"

# Add a scale in rule
az monitor autoscale rule create --resource-group MyResourceGroup --autoscale-name MyAutoScaleConfig --scale in 1 --condition "Percentage CPU < 30 avg 10m"

İzleme ve Tanılama

Güvenilir veri uygulamalarını sürdürmek için etkili izleme kritik öneme sahiptir. Azure, uygulamanızın performansı, kullanım desenleri ve olası sorunları hakkında görünürlük sağlayan kapsam lı izleme araçları sunar.

Azure Monitor ve Application Insights

Azure Monitor, Azure hizmetlerinin izlenmesi için temel altyapıdır; Application Insights ise uygulamaya özgü daha derin içgörüler sağlar.

App Service’iniz için Application Insights’ı etkinleştirmek için:

  1. App Service’inizde sol kenar çubuğundan "Application Insights" öğesini seçin
  2. "Turn on Application Insights" öğesine tıklayın
  3. Yeni veya mevcut bir Application Insights kaynağı yapılandırın
  4. "Apply" öğesine tıklayın

Azure Monitor ve Application Insights.

Etkinleştirildikten sonra Application Insights, uygulamanızla ilgili çeşitli veriler toplar; bunlar şunları içerir:

  • İstek oranları, yanıt süreleri ve hata oranları
  • Bağımlılık çağrıları (veritabanları, harici API’ler)
  • Sayfa görünüm performansı
  • İstisna günlükleri
  • Kodda tanımladığınız özel olaylar

Python uygulamaları için Application Insights SDK’sını yüklemeniz gerekir:

pip install opencensus-ext-azure

Ardından uygulamanıza araçlandırma ekleyin:

from opencensus.ext.azure.trace_exporter import AzureExporter
from opencensus.trace.samplers import ProbabilitySampler
from opencensus.trace.tracer import Tracer

# Configure the Azure exporter
azure_exporter = AzureExporter(
    connection_string='InstrumentationKey=00000000-0000-0000-0000-000000000000'
)

# Create a tracer
tracer = Tracer(exporter=azure_exporter, sampler=ProbabilitySampler(1.0))

# Use the tracer in your application
with tracer.span(name="main_function"):
    # Your code here
    pass

Günlükleri görüntüleme ve uyarıları ayarlama

Azure App Service, sorunları tanılamanıza yardımcı olabilecek günlükleri otomatik olarak toplar:

  1. App Service’inizde "Log stream" seçeneğini belirleyerek gerçek zamanlı günlükleri görüntüleyin
  2. Daha ayrıntılı analiz için "Diagnostic logs" bölümüne gidin ve uygulama günlüğünü etkinleştirin
  3. Günlük düzeyini yapılandırın (Error, Warning, Information, Verbose)

Azure App Service’de günlükleri görüntüleme.

Veri uygulamaları için özellikle şunlara dikkat edin:

  • Büyük veri kümesi işlerken sık karşılaşılan bellek yetmedi hataları
  • Veri kaynaklarına bağlantı zaman aşım ları
  • Veri dönüşüm işlemleri sırasında performans darboğazları

Uyarıları ayarlamak, sorunlar kullanıcıları etkilemeden önce haberdar edilmenizi sağlar:

  1. Azure Monitor içinde "Alerts" bölümünü seçin
  2. "New alert rule" öğesine tıklayın
  3. Kaynak olarak App Service’inizi seçin
  4. Uyarıyı tetiklemesi gereken koşulu tanımlayın
  5. Kimin, nasıl bilgilendirileceğini belirlemek için eylem gruplarını yapılandırın
  6. Uyarınıza ad verin ve kaydedin

Veri uygulamaları için yaygın uyarılar şunları içerir:

  • Yüksek bellek kullanımı (%80’den fazla)
  • Sunucu hataları (5xx yanıtlar)
  • Temel işlemler için uzun işleme süreleri
  • Başarısız veri bağlantı denemeleri

Veri uygulamaları için özel izleme

Veriye özgü izleme ihtiyaçları için şu özel metrikleri izlemeyi düşünün:

  • Veri işleme verimi (dakika başına işlenen kayıt)
  • Model çıkarım gecikmesi
  • Özellik (feature) hesaplama süresi
  • Önbellek isabet/kaçırma oranları

SDK’yı kullanarak özel metrikleri Application Insights’a gönderebilirsiniz:

from opencensus.ext.azure import metrics_exporter
from opencensus.stats import aggregation, measure, stats, view

# Create a metrics exporter
exporter = metrics_exporter.new_metrics_exporter(
    connection_string='InstrumentationKey=00000000-0000-0000-0000-000000000000')

# Create and record custom metrics
prediction_time = measure.MeasureFloat(
    "prediction_time", "Time taken for model inference", "ms")
prediction_time_view = view.View(
    "prediction_time_view", "Model inference time", [], prediction_time, aggregation.LastValueAggregation())

# Register the view
stats.stats.view_manager.register_view(prediction_time_view)

# Record metrics
mmap = stats.stats.stats_recorder.new_measurement_map()
mmap.measure_float_put(prediction_time, 175.5)  # Record 175.5ms inference time
mmap.record()

# Force metrics to be sent immediately
exporter.export_metrics([])

Yedekleme ve Geri Yükleme

Veri uygulamaları genellikle değerli bilgileri yönetir; bu da yedekleme ve kurtarma yetkinliklerini zorunlu kılar. Azure App Service, uygulamanızın dosyalarını, yapılandırmasını ve bağlı veritabanlarını yakalayabilen yerleşik yedekleme işlevselliği sağlar.

Otomatik yedeklemeleri ayarlama

Yedeklemeleri yapılandırmak için:

  1. App Service’inizde sol kenar çubuğundan "Backups" bölümünü seçin
  2. "Configure" öğesine tıklayın
  3. Yedekleme zamanlamasını ayarlayın (günlük, haftalık veya özel)
  4. Yedek dosyaları için bir depolama hesabı belirtin
  5. İsteğe bağlı olarak veritabanlarını yedeklemeye dahil edin
  6. "Save" öğesine tıklayın

Azure App Service’de yedeklemeleri yapılandırma ve görüntüleme.

Veri uygulamaları için şu yedekleme en iyi uygulamalarını göz önünde bulundurun:

  • Yedeklemeleri düşük etkinlik dönemlerinde zamanlayın
  • Daha hızlı yedeklemeler için depolama hesabınızın App Service’inizle aynı bölgede olduğundan emin olun
  • Sık veri değişikliği olan uygulamalar için daha sık yedeklemeler yapılandırın
  • Büyük veritabanların yedekleme boyut sınırlarını aşabileceğini unutmayın; bu durumlar için veritabanına özgü yedekleme stratejilerini değerlendirin

Yedekten geri yükleme

Uygulamanızı geri yüklemeniz gerekirse:

  1. Backups bölümünde, geri yüklemek istediğiniz yedekleme noktasını seçin
  2. "Restore" öğesine tıklayın
  3. Uygulama içeriğini, yapılandırmayı ve bağlı veritabanlarını geri yükleyip yüklemeyeceğinizi seçin
  4. Hedef App Service’i belirtin (aynı uygulama veya farklı bir uygulama olabilir)
  5. Geri yükleme sürecini başlatmak için "OK" öğesine tıklayın

Kritik veri uygulamaları için, kurtarma stratejinizin beklendiği gibi çalıştığından emin olmak üzere geri yükleme sürecini dönems el olarak test etmenizi öneririm.

Veritabanına özgü yedekleme stratejileri

App Service yedeklemeleri bağlı veritabanlarını içerebilse de, veri yoğun uygulamalar genellikle veritabanına özgü yedekleme stratejilerinden fayda sağlar:

  • Azure SQL veritabanları için nokta atış zaman kurtarmalı otomatik yedeklemeleri yapılandırın
  • Cosmos DB için sürekli yedekleme kipini kullanın
  • Azure Storage’da saklanan büyük veri kümesi için depolama hesabı çoğaltma ve sürüm oluşturmayı düşünün

Azure App Service’te Güvenlik ve Uyumluluk

Güvenlik, özellikle hassas ya da düzenlemeye tabi bilgileri işleyen veri uygulamaları için hayati öneme sahiptir. Azure App Service, uygulamalarınızı korumaya yardımcı olacak çeşitli güvenlik özellikleri sunar.

Rol tabanlı erişim denetimi (RBAC)

RBAC, App Service kaynaklarınızı kimin yönetebileceğini denetlemenizi sağlar:

  1. Azure Portal’da App Service’inize gidin
  2. Sol kenar çubuğunda "Access control (IAM)" öğesini seçin
  3. "Add"a ve ardından "Add role assignment"a tıklayın
  4. Uygun rolü seçin:
    • Contributor: App Service’i yönetebilir ancak başkalarına erişim veremez
    • Reader: Görüntüleyebilir ancak hiçbir şeyi değiştiremez
    • Website Contributor: Web sitelerini yönetebilir ancak App Service planını yönetemez
  5. Rol ataması yapılacak kullanıcıları, grupları veya hizmet sorumlularını (service principal) seçin
  6. "Save"e tıklayın

Azure App Service’te RBAC.

Veri ekipleri için, iş sorumluluklarına göre belirli işlemlere erişimi sınırlayan özel roller oluşturmayı düşünün.

IP kısıtlamaları ve ağ iletişimi

IP kısıtlamaları, App Service’inize hangi IP adreslerinin erişebileceğini denetlemenizi sağlar:

  1. App Service’inizde sol kenar çubuğunda "Networking" öğesini seçin
  2. "Access Restrictions" bölümüne gidin
  3. "Add rule"a tıklayın
  4. IP adres aralığını, işlemi (Allow/Deny), önceliği ve adı belirtin
  5. "Add rule"a tıklayın

Azure App Service’te IP kısıtlamaları ve ağ iletişimi.İç kaynaklara bağlanan veri uygulamaları için şunları göz önünde bulundurun:

  • VNet Integration: App Service’inizi sanal ağınıza bağlayın
  • Service Endpoints: SQL ve Storage gibi Azure hizmetlerine güvenli bağlantılar
  • Private Endpoints: Sanal ağınızdan App Service’inize özel bağlantı oluşturun

VNet Integration kurmak için:

  1. Networking bölümünde "VNet Integration" öğesini seçin
  2. "Add VNet"e tıklayın
  3. Bir sanal ağ ve alt ağ (subnet) seçin veya oluşturun
  4. "OK"a tıklayın

Bu entegrasyon, ağınızdaki veritabanlarına veya diğer veri kaynaklarına güvenli biçimde bağlanmak için özellikle kullanışlıdır.

Yaygın Azure App Service Sorunlarını Giderme

Dikkatli planlamaya rağmen App Service’inizde sorunlar yaşanabilir. İşte özellikle veri uygulaması senaryolarına odaklanarak bazı yaygın problemler ve çözümleri.

Uygulama çakışmalarını teşhis etme

Uygulamanız çöküyor veya yanıt vermiyorsa:

  1. App Service günlüklerini kontrol edin:
    • Gerçek zamanlı günlükler için "Log stream"e gidin
    • Geçmiş veriler için "Diagnostic logs"u kontrol edin
  2. Hataları belirlemek için Application Insights kullanın
  3. Kudu tanılama araçlarını çalıştırın:
    • https://<your-app-name>.scm.azurewebsites.net/DebugConsole adresine gidin
    • Dosyaları ve süreçleri incelemek için konsolu kullanın

Veri uygulamalarında çökme nedenlerinin yaygın olanları şunlardır:

  • Bellek sınırları: Büyük veri kümelerini işlemek mevcut belleği aşabilir
  • Bağımlılık sorunları: Eksik veya uyumsuz paketler
  • Yapılandırma hataları: Hatalı bağlantı dizeleri veya ortam değişkenleri

Bellek yoğun işlemler için şunları değerlendirin:

  • Daha fazla belleğe sahip daha yüksek bir katmana ölçekleme
  • Daha küçük partileri işlemek için veri parçalama (chunking) uygulama
  • Daha verimli algoritmalar veya veri yapıları kullanma

Performans sorunlarını hata ayıklama

Uygulamanız yavaş çalışıyorsa:

  1. Application Insights performans izlemesini kullanın:
    • Yavaş istekleri belirlemek için Performance bölümünü kontrol edin
    • Darboğaza neden olabilecek bağımlılık çağrılarını arayın
  2. Azure Monitor’da sunucu metriklerini inceleyin:
    • CPU ve bellek kullanımı
    • HTTP kuyruk uzunluğu
  3. Veri yoğun işlemler için veritabanı sorgu performansını kontrol edin

Performansı artırmak için:

  • Sık yapılan sorgular için önbellekleme uygulayın
  • Veritabanı indekslerini optimize edin
  • Yukarı veya dışa doğru ölçeklemeyi değerlendirin
  • Uzun süren işlemler için asenkron operasyonlar kullanın

Günlükleri ve hata iletilerini inceleme

Azure App Service çeşitli günlük seçenekleri sunar:

  1. Uygulama günlükleri: Uygulamanızın kendi günlükleri
  2. Web sunucusu günlükleri: HTTP istek ve hata günlükleri
  3. Dağıtım günlükleri: Dağıtım sürecinize ilişkin bilgiler
  4. Ayrıntılı hata günlüğü: HTTP hataları hakkında daha fazla bilgi

Daha ayrıntılı günlüğü yapılandırmak için:

  1. App Service’inizde "Diagnostic logs"a gidin
  2. Uygun günlük türlerini etkinleştirin
  3. Uygun düzeyi ayarlayın (Error, Warning, Information, Verbose)
  4. Günlüklerin dosya sisteminde mi yoksa blob depolamada mı saklanacağını seçin

Python uygulamaları için günlüğü şu şekilde güçlendirebilirsiniz:

import logging
import sys

# Configure logging
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    handlers=[
        logging.StreamHandler(sys.stdout)
    ]
)

# Use logging in your application
logger = logging.getLogger(__name__)
logger.info("Processing data batch")
logger.error("Failed to connect to database", exc_info=True)

Azure App Service ile Maliyet Yönetimi

Veri uygulamaları sıklıkla önemli kaynaklar tüketebilir; bu nedenle maliyetleri anlamak ve optimize etmek özellikle önemlidir. Bu son bölümde Azure App Service fiyatlandırma modellerini ve maliyetleri etkili şekilde yönetme stratejilerini inceleyeceğiz.

Azure App Service fiyatlandırmasını anlama

Azure App Service fiyatlandırması esas olarak seçtiğiniz App Service planına dayanır. Dikkate alınacak maliyet unsurlarını parçalara ayıralım:

App Service plan katmanları

Daha önce ele aldığımız gibi Azure, her biri farklı yeteneklere ve maliyetlere sahip çeşitli fiyatlandırma katmanları sunar:

Katman

Aylık maliyet aralığı (USD)

Özellikler

En uygun kullanım

Free

$0

1GB depolama, paylaşımlı altyapı, günde 60 dakika işlem

Geliştirme, öğrenme

Shared (D1)

$10-15

1GB depolama, günde 240 dakika işlem

Düşük trafikli siteler, test

Basic (B1-B3)

$55-220

Adanmış VM’ler, manuel ölçek, özel etki alanları

Canlı iş yükleri, düşük ila orta trafik

Standard (S1-S3)

$70-400

Otomatik ölçekleme, hazırlık yuvaları, günlük yedeklemeler

Değişken trafiğe sahip üretim uygulamaları

Premium (P1V2-P3V2)

$80-500

Geliştirilmiş performans, daha fazla ölçekleme seçeneği

Yüksek performans gereksinimleri, büyük uygulamalar

Isolated

$300-1000+

Adanmış ağ/işlem izolasyonu

Sıkı uyumluluk gereksinimleri olan uygulamalar

Not: Fiyatlar yaklaşık olup bölgeye veya Azure fiyatlandırmasındaki değişikliklere göre farklılık gösterebilir. En güncel bilgi için resmi fiyatlandırma sayfasına bakın. 

Ek maliyet unsurları

Temel App Service planının ötesinde, şu ek maliyetleri dikkate alın:

  1. Giden veri aktarımı: Aylık ilk 5GB’tan (ücretsiz) sonra giden veri aktarımı ücretlendirilir. Büyük veri kümelerini kullanıcılara sunan veri uygulamaları için bu önemli hale gelebilir.
  2. SSL sertifikaları: Azure ücretsiz sertifikalar sunsa da, özel sertifikalar ek maliyetlidir.
  3. Özel etki alanları: İlk özel etki alanı ücretsizdir, ancak ek alanlar için ücret alınabilir.
  4. Depolama: Katmanınızda yer alanın ötesindeki ek depolama için ekstra ücret alınır.
  5. Eklentiler ve bağlı hizmetler: Veritabanları, önbellek hizmetleri ve App Service’inize bağlı diğer Azure kaynakları kendi ücretlerine tabidir.

Maliyetleri izleme

Azure, harcamalarınızı izlemek ve tahmin etmek için araçlar sağlar:

  1. Azure cost management: Azure Portal’da bu araca erişerek kaynak bazında maliyetleri görüntüleyebilir, bütçeler belirleyebilir ve uyarılar oluşturabilirsiniz.
  2. Pricing calculator: Azure Pricing Calculator’ı kullanarak dağıtımdan önce maliyetleri tahmin edin.
  3. Advisor recommendations: Azure Advisor, kullanım kalıplarınıza göre maliyet optimizasyonu önerileri sunar.

> Azure hizmetleri genelinde maliyet, güvenlik ve performansı etkili şekilde yönetmek için Azure Management and Governance kursu şiddetle tavsiye edilir.

Maliyet optimizasyon stratejileri

Artık fiyatlandırma modelini anladığımıza göre, Azure App Service üzerindeki veri uygulamaları için maliyetleri optimize etme stratejilerini inceleyelim.

App Service planınızı doğru boyutlandırma

Maliyetleri kontrol etmenin en etkili yollarından biri, uygun App Service planını kullandığınızdan emin olmaktır:

  1. Uygun bir temel ile başlayın: Yüksek katmanlı bir plana varsayılan olarak geçmek yerine, orta seviyede başlayın ve yalnızca gerektiğinde yukarı ölçekleyin.
  2. Kaynak kullanımını izleyin: CPU, bellek ve disk kullanımını izlemek için Azure Monitor’u kullanın. Sürekli olarak %50’nin altında kalıyorsanız küçültmeyi düşünün.
  3. Katmanı iş yükünüzle eşleştirin: Öngörülebilir, istikrarlı iş yüklerine sahip veri uygulamaları için Basic veya Standard katman yeterli olabilir. Yoğun performans gereksinimleri olan uygulamalar için Premium katmanları ayırın.

Veri bilimi uygulamaları için şu özel önerileri göz önünde bulundurun:

  • Model sunum API’leri düşük gecikme gereksinimleri ancak orta trafik ile genellikle otomatik ölçeklemeli Standard planlarda iyi çalışır.
  • Zamanlanmış çalışan veri işleme hatları, işlem süresi kritik değilse sıklıkla Basic planları kullanabilir.
  • Etkileşimli panolar çok sayıda eşzamanlı kullanıcıyla yanıt verebilirliği korumak için genellikle Standard veya Premium planlar gerektirir.

Otomatik ölçeklemeyi etkili kullanma

Otomatik ölçekleme yalnızca trafik sıçramalarını karşılamak için değildir—aynı zamanda güçlü bir maliyet optimizasyon aracıdır:

  1. Mümkünse sıfıra ölçekleyin: Kritik olmayan uygulamalar veya geliştirme ortamları için, mesai dışı saatlerde en az sıfır örneğe inecek şekilde yapılandırmayı düşünün.
  2. Uygun ölçekleme eşikleri belirleyin: Çok agresif şekilde dışa ölçeklemeyin. Muhafazakâr eşiklerle başlayın (ör. %70 CPU) ve performans gözlemlerine göre ayarlayın.
  3. Zamanlanmış ölçekleme uygulayın: Öngörülebilir iş yükleri için, metrik tabanlı otomatik ölçekleme yerine zamanlanmış ölçekleme kuralları kullanın. Örneğin, iş saatlerinde ölçeği artırın, gece ve hafta sonlarında düşürün.
# Example: Create a scheduled autoscale rule to scale down at night
az monitor autoscale rule create --resource-group MyResourceGroup --autoscale-name MyAutoScaleConfig --scale to 1 --condition "Current time is between 22:00 and 06:00 recurring"

Geliştirme ve test ortamlarını optimize etme

Geliştirme ve test ortamları önemli maliyet tasarrufu fırsatları sunar:

  1. Mümkün olduğunda Free veya Shared katmanını kullanın geliştirme ortamları için.
  2. Otomatik kapatma uygulayın üretim dışı ortamlar için mesai dışı saatlerde. App Service yerleşik bir kapatma özelliğine sahip olmasa da, uygulamaları bir zamanlamaya göre durdurup başlatmak için Azure Automation veya Logic Apps kullanabilirsiniz.
  3. Dağıtım yuvalarından verimli yararlanın: Hazırlık için ayrı ortamlar sürdürmek yerine tek bir üretim App Service içinde dağıtım yuvaları kullanın. Bu yaklaşım, maliyetleri kopyalamadan ortam değişimi yapmanızı sağlar.
# Create a staging slot
az webapp deployment slot create --name MyWebApp --resource-group MyResourceGroup --slot staging

# Swap staging to production
az webapp deployment slot swap --name MyWebApp --resource-group MyResourceGroup --slot staging --target-slot production

Veriye özgü maliyet optimizasyonları

Veri uygulamaları için şu özel maliyet tasarrufu yaklaşımlarını değerlendirin:

  1. Ağır işlemleri dışarı aktarın: Yoğun veri işlemlerini App Service içinde yapmak yerine Azure Functions (sunucusuz işlem) veya Azure Data Factory (ETL iş akışları) gibi adanmış hizmetleri kullanmayı düşünün.
  2. Önbellekleme uygulayın: Sık değişmeyen veriler için önbellekleme yaparak veritabanı çağrılarını ve hesaplamayı azaltın. Azure Cache for Redis, App Service ile iyi entegre olur.
  3. Veritabanı maliyetlerini optimize edin: Çoğunlukla App Service’inize bağlı veritabanının maliyeti, App Service’in kendisinden daha fazladır. Şunları değerlendirin:
    • SQL veritabanları için esnek havuzlar (elastic pools) kullanma
    • Uygun indeksleme uygulama
    • Daha seyrek erişilen veriler için katmanlı depolama kullanma
  4. Yanıtları sıkıştırın: Kullanıcılara büyük veri kümeleri sunan uygulamalar için, giden veri aktarım maliyetlerini azaltmak üzere sıkıştırmayı etkinleştirin:
# Example for Flask applications
from flask import Flask
from flask_compress import Compress

app = Flask(__name__)
Compress(app)

Veri Uygulamaları için İleri Düzey Teknikler

Maliyet optimizasyonunun ötesinde, Azure App Service üzerindeki veri uygulamalarınızın performansını ve yeteneklerini artırmak için çeşitli ileri düzey teknikler vardır.

Veri uygulamalarını konteynerleştirme

Konteynerler, ortamlar arasında tutarlılık sağlar ve bağımlılık yönetimini basitleştirebilir—karmaşık gereksinimlere sahip veri uygulamalarında yaygın bir zorluktur:

  1. Azure Portal’da yeni bir Web App oluşturun
  2. Yayınlama seçeneğinde "Code" yerine "Docker Container"ı seçin
  3. Single Container’ı seçin ve Docker imgenizi belirtin

Veri bilimi uygulamaları için, NumPy, pandas ve scikit-learn gibi yaygın kullanılan kitaplıkları içeren bir temel konteyner imgesi korumayı düşünerek dağıtımları hızlandırabilirsiniz.

Veri iş akışları için CI/CD uygulama

Temel CI/CD’nin ötesine geçerek, özellikle veri uygulamaları için otomatik testler uygulamayı düşünün:

  1. Veri doğrulama testleri: Veri işlemenin beklenen sonuçları ürettiğini doğrulayın
  2. Model performans testleri: ML modellerinin doğruluk ve performans eşiklerini karşıladığından emin olun
  3. Yük testi: Uygulamanın beklenen veri hacimlerini kaldırdığını doğrulayın

Bir veri uygulaması için GitHub Actions iş akışı örneği:

name: Data App CI/CD

on:
  push:
    branches: [ main ]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Set up Python
      uses: actions/setup-python@v2
      with:
        python-version: '3.8'
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -r requirements.txt
        pip install pytest pytest-cov
    - name: Test with pytest
      run: |
        pytest tests/data_validation_tests.py
        pytest tests/model_performance_tests.py

  deploy:
    needs: test
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Deploy to Azure
      uses: azure/webapps-deploy@v2
      with:
        app-name: 'my-data-app'
        publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}

Arka plan işlemleri için WebJobs kullanma

Arka plan işlemleri gerektiren veri uygulamaları için Azure WebJobs, App Service’inizle aynı bağlamda komut dosyaları veya programlar çalıştırmanın bir yolunu sunar:

  1. App Service’inizde sol kenar çubuğunda "WebJobs"a gidin
  2. "Add"a tıklayın
  3. Komut dosyası dosyanızı yükleyin (ör. veri işleme için bir Python betiği)
  4. Tetikleyici türünü seçin (manuel, zamanlanmış veya sürekli)
  5. "OK"a tıklayın

WebJobs özellikle şunlar için kullanışlıdır:

  • Zamanlanmış veri temizliği
  • Düzenli rapor oluşturma
  • Periyodik model yeniden eğitimi
  • Sistemler arası veri senkronizasyonu

Şirket içi veriler için hibrit bağlantı

Birçok kuruluşun şirket içinde kalan verileri vardır. Azure App Service bu verilere şu yöntemlerle bağlanabilir:

  1. VNet integration: App Service’inizi, ExpressRoute veya VPN üzerinden şirket içi ağınıza bağlantısı olan bir sanal ağa bağlayın.
  2. Hybrid connections: VPN gerektirmeyen, App Service’inizin belirli şirket içi sunuculara ana bilgisayar adı ve bağlantı noktası ile erişmesine olanak tanıyan daha basit bir alternatiftir.

Hybrid Connections kurmak için:

  1. App Service’inizde sol kenar çubuğunda "Networking" öğesini seçin
  2. "Hybrid Connections"a gidin
  3. "Add hybrid connection"a tıklayın
  4. Yeni bir tane oluşturun veya mevcut bir bağlantıyı kullanın
  5. Uç nokta ana bilgisayar adını ve bağlantı noktasını belirtin
  6. Şirket içi sunucunuza Hybrid Connection Manager’ı yükleyin

Veri uygulamaları için özellik bayrakları (feature flags) uygulama

Özellik bayrakları, işlevleri seçici biçimde etkinleştirmenizi sağlar; bu da veri özelliklerinde A/B testleri yapmak veya yeni modelleri kademeli olarak yayına almak için değerlidir:

{
  "FeatureFlags": {
    "NewRecommendationModel": false,
    "AdvancedDataFiltering": true
  }
}

Bu bayrakları kodunuzda okuyun:

import os
import json

feature_flags = json.loads(os.environ.get('FeatureFlags', '{}'))
use_new_model = feature_flags.get('NewRecommendationModel', False)

if use_new_model:
    # Use new recommendation model
else:
    # Use existing model

Bu yaklaşım, yeni özellikleri kullanıcıların bir alt kümesiyle test etmenize veya sorunlu özellikleri yeniden dağıtım yapmadan hızla devre dışı bırakmanıza olanak tanır.

> ML modellerinin dağıtımını otomatikleştirmeyi daha derinlemesine incelemek için CI/CD for Machine Learning kursuna göz atın.

Sonuç

Bu eğitim boyunca, veri uygulamaları için Azure App Service’i nasıl kuracağınızı, dağıtacağınızı, yapılandıracağınızı, ölçekleyeceğinizi ve optimize edeceğinizi ele aldık. İlk App Service’inizi oluşturmaktan otomatik ölçekleme ve hibrit bağlantı gibi ileri düzey özellikleri uygulamaya kadar, artık Azure’un platformundan veri iş yükleriniz için yararlanacak bilgiye sahipsiniz.

Öne çıkan noktalar

  1. Azure App Service, tamamen yönetilen bir platform sunar; bu sayede veri profesyonelleri altyapı yönetimi yerine uygulama mantığına odaklanabilir.
  2. Birden çok dağıtım seçeneği, GitHub, Azure DevOps veya yerel Git depoları kullanıyor olun fark etmeksizin mevcut geliştirme iş akışınızla sorunsuz entegrasyon sağlar.
  3. Ölçekleme yetenekleri, uygulamanızın geliştirme testlerinden üretim trafiği artışlarına kadar değişen iş yüklerini karşılamasını sağlar.
  4. Yerleşik izleme ve tanılama araçları, veri uygulamalarına özel metriklerle güvenilirliği ve performansı korumaya yardımcı olur.
  5. Maliyet optimizasyon stratejileri, özellikle kaynak yoğun veri iş yükleri için, harcamaları en aza indirirken değeri en üst düzeye çıkarmanıza olanak tanır.

Sonraki adımlar

Azure App Service yolculuğunuza devam etmek için şunları keşfetmeyi düşünün:

  1. Azure ML ile entegrasyon: Azure Machine Learning’de eğitilen modelleri kestirim için App Service’inize dağıtın.
  2. Azure Functions: App Service uygulamalarınızı tamamlayan, olaya dayalı, sunucusuz işlem.
  3. Azure API Management: Veri hizmetlerinizi açığa çıkaran API’leri güvenceye almak ve yönetmek için.
  4. Azure Logic Apps: App Service’iniz ile diğer veri kaynakları arasında iş akışı otomasyonu için.
  5. Microsoft Azure Fundamentals öğrenim yolu, sertifikaya hazırlanıyorsanız veya yapılandırılmış öğrenme istiyorsanız da harika bir kaynaktır.

Bulut dünyasının hızla evrildiğini unutmayın; bu nedenle, veri uygulamalarınızı geliştirebilecek yeni özellikler ve hizmetler için Azure güncellemeler sayfasını takip edin!

Kofi Glover

Yazar

Kofi Glover

İş değerini artırmak ve İşin Geleceğini şekillendirmek için yapay zekânın gücünden yararlanmaya tutkulu Otonom Yapay Zekâ Meraklısı. Çoklu ajan sistemleri, üretken yapay zekâ, derin pekiştirmeli öğrenme, çok kipli yapay zekâ sistemleri, akış mühendisliği ve yönerge mühendisliği gibi atılımsal teknik ve teknolojilerin düşünce önderi ve erken benimseyeni.

Makine öğrenmesi, veri bilimi, kantitatif modelleme, yazılım mühendisliği, DevOps ve bulut bilişimi dâhil geniş bir teknik geçmişe sahiptir.

Konular

İlgili