Uçtan Uca Geliştirici İş Akışı
GitHub Actions CI/CD, Azure Container Registry, Container Apps ve Application Insights’ı birleştirerek gönderimden gözlemlenebilir üretim ortamına kadar eksiksiz bir geliştirici iç döngüsü oluşturun.
Uçtan Uca Geliştirici İş Akışı, CoddyKit'te ücretsiz bir Cloud & IT Cert Prep dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Cloud & IT Cert Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Cloud & IT Cert Prep kursu toplamda 4 dersten oluşur.
Modern Azure Geliştirici Döngüsü
Modern bir Azure geliştirici iş akışı; kaynak denetimini, sürekli tümleştirme/sürekli teslimi, kapsayıcı altyapısını ve gözlemlenebilirliği kodun işlenmesinden gözlemlenebilir üretim ortamına kadar kesintisiz bir iç döngüde birleştirir. Temel bileşenler şunlardır: GitHub (kaynak), GitHub Actions (derleme ve dağıtım işlem hattı), Azure Container Registry (görüntü deposu), Azure Container Apps (çalışma ortamı) ve Application Insights (gözlemlenebilirlik). Her değişiklik, her adımda kalite kapıları uygulanarak geliştiricinin bilgisayarından üretim ortamına dakikalar içinde otomatik olarak ilerler.
1. Adım: Kaynak Denetimi ve Dal Stratejisi
Kodunuzu bir GitHub deposunda, ana dal tabanlı geliştirme veya GitFlow dallanma stratejisini kullanarak düzenleyin. Çoğu mikro hizmet için ana dal tabanlı geliştirme (kısa ömürlü özellik dallarının her gün main dalıyla birleştirilmesi), tümleştirme çakışmalarını azaltır ve işlem hattını basit tutar. Birleştirme öncesinde çekme isteği incelemeleri ile başarılı CI denetimlerini zorunlu kılmak için main üzerinde dal koruma kurallarını kullanın. Bir CODEOWNERS dosyası, kritik hizmetlerdeki değişikliklerin ilgili ekibin kıdemli mühendislerinden onay almasını sağlar.
# Example .github/CODEOWNERS
# Require payments-team review for any changes under /src/payments/
/src/payments/ @payments-team
/infrastructure/ @platform-team2. Adım: GitHub Actions ile CI
CI işlem hattı her çekme isteğinde çalışır. Tipik bir iş akışı şöyledir: kodu alma → bağımlılıkları geri yükleme → birim testlerini çalıştırma → tümleştirme testlerini çalıştırma → Docker görüntüsünü derleme → Azure Container Registry'ye gönderme. Görüntü, izlenebilirlik için git işleme SHA'sı ile etiketlenir. Azure hizmet sorumlusu gizli dizilerini GitHub'da depolamaktan kaçınmak için GitHub Actions'tan Azure'a (federe kimlik aracılığıyla) OIDC tabanlı kimlik doğrulama kullanın; bu, CI işlem hatları için yönetilen kimliğin eşdeğeridir.
# .github/workflows/ci.yml (abbreviated)
name: CI
on: [pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Login to ACR
uses: azure/docker-login@v1
with:
login-server: myacr.azurecr.io
username: ${{ secrets.AZURE_CLIENT_ID }}
password: ${{ secrets.AZURE_CLIENT_SECRET }}
- name: Build and push image
run: |
docker build -t myacr.azurecr.io/myapi:${{ github.sha }} .
docker push myacr.azurecr.io/myapi:${{ github.sha }}3. Adım: Hazırlama Ortamına CD
CI işlem hattı main dalına yapılan birleştirme sonrasında başarılı olduğunda, CD işlem hattı otomatik olarak hazırlama ortamına dağıtım yapar. İşlem hattı, Container App'in görüntü etiketini yeni oluşturulan SHA ile günceller, yeni revizyonun sağlıklı duruma gelmesini bekler ve hazırlama URL'sine karşı duman testleri çalıştırır. Duman testleri, kritik API uç noktalarının beklenen yanıtları döndürdüğünü doğrular. Duman testleri başarısız olursa işlem hattı, herhangi bir el ile müdahale gerektirmeden giriş trafiğini önceki revizyona geri yönlendirerek geri alma işlemi gerçekleştirir.
# CD stage: update Container App to new image
- name: Deploy to staging
uses: azure/cli@v2
with:
azcliversion: latest
inlineScript: |
az containerapp update \
--name myapi-staging \
--resource-group myRG \
--image myacr.azurecr.io/myapi:${{ github.sha }}
- name: Run smoke tests
run: |
STAGING_URL=$(az containerapp show --name myapi-staging \
--resource-group myRG \
--query 'properties.configuration.ingress.fqdn' -o tsv)
curl -f https://$STAGING_URL/health || exit 14. Adım: Üretim İçin Onay Kapısı
Hazırlama doğrulamasından sonra CD işlem hattı bir onay kapısında duraklar. GitHub Actions ortam korumaları, production ortamı için gerekli inceleyicileri yapılandırmanıza olanak tanır. İşlem hattı, hazırlama testi sonuçlarını, farkları ve açık olayları inceleyip onay vermesi için nöbetçi mühendise bir Slack bildirimi gönderir. İşlem hattı ancak onay alındığında aynı görüntü SHA'sını üretim ortamına dağıtmaya devam eder. Bu insan denetimli adım, yüksek trafikli veya düzenlemeye tabi hizmetler için kritik öneme sahiptir.
# In GitHub: create 'production' environment with required reviewers
# .github/workflows/cd.yml (abbreviated)
jobs:
deploy-production:
environment:
name: production
url: https://myapi.contoso.com
needs: deploy-staging
steps:
- name: Deploy to production
uses: azure/cli@v2
with:
inlineScript: |
az containerapp update \
--name myapi \
--resource-group myRG \
--image myacr.azurecr.io/myapi:${{ github.sha }}5. Adım: Üretim Gözlemlenebilirliği
Üretim ortamına dağıtıldıktan sonra Application Insights gerçek zamanlı görünürlük sağlar. App Insights SDK'sı (veya desteklenen çalışma ortamları için otomatik araçlandırma) şunları izler: istek hızları, başarısızlık oranları ve gecikme (üç altın sinyal), bağımlılık çağrıları (veritabanlarına, Service Bus'a ve diğer API'lere) ve tam yığın izleriyle birlikte özel durumlar. Uygulama Haritası, hizmetlerin birbirini nasıl çağırdığını görselleştirir ve hangi bağımlılıkların başarısızlıklara veya gecikmeye en fazla katkıda bulunduğunu vurgular.
# Python: Add Application Insights SDK
from opencensus.ext.azure.log_exporter import AzureLogHandler
from opencensus.ext.azure.trace_exporter import AzureExporter
from opencensus.trace.samplers import ProbabilitySampler
from opencensus.trace.tracer import Tracer
tracer = Tracer(
exporter=AzureExporter(connection_string='InstrumentationKey=<key>'),
sampler=ProbabilitySampler(1.0)
)Dağıtımları İzlerle İlişkilendirme
Ölçüm grafiklerinizde dağıtım olaylarını işaretlemek için Application Insights Açıklamalarını kullanın. Bir sürüm açıklaması oluşturulduğunda (GitHub Actions azure/appinsights-annotation eylemi aracılığıyla), tüm App Insights ölçüm grafiklerinde dikey bir çizgi olarak görünür. Böylece gecikme artışının veya hata oranındaki yükselişin yakın zamanda yapılan bir dağıtımla ilişkili olup olmadığı hemen anlaşılır ve olaylar sırasında tanıya kadar geçen ortalama süre (MTTD) önemli ölçüde azalır.
# Create a release annotation in Application Insights
- name: Annotate release in App Insights
uses: azure/appinsights-annotation@v1
with:
appInsightsResourceName: myAppInsights
resourceGroupName: myRG
releaseName: '${{ github.run_id }}-${{ github.sha }}'Hata Oranı Artışında Otomatik Geri Alma
En dayanıklı işlem hatları için otomatik geri alma uygulayın. Üretim dağıtımından sonra işlem hattı 10 dakika bekler ve hata oranı için Application Insights'ı sorgular. Hata oranı yapılandırılabilir bir eşiği (örneğin, %5'i) aşarsa işlem hattı, Container App'in giriş trafiğini %100 oranında önceki revizyona yönlendirecek şekilde güncelleyerek otomatik olarak geri alma gerçekleştirir. Bu aşamalı teslim modeli, hatalı bir dağıtımın etki alanını daraltır ve ekiplerin karmaşık veya hassas değişikliklerde bile güvenle dağıtım yapmasını sağlar.
# Query App Insights error rate via REST (abbreviated)
QUERY='requests | where timestamp > ago(10m) | summarize failed = countif(success == false), total = count() | extend errorRate = round(100.0 * failed / total, 2)'
RESULT=$(az monitor app-insights query \
--apps myAppInsights \
--resource-group myRG \
--analytics-query "$QUERY" \
--query 'tables[0].rows[0][2]' -o tsv)
if [ $(echo '$RESULT > 5' | bc -l) -eq 1 ]; then
echo 'Error rate $RESULT% - rolling back!'
az containerapp ingress traffic set --name myapi --resource-group myRG --revision-weight stable=100
fiGeliştirici Verimliliği: Öykünücülerle Yerel Geliştirme
Geliştiriciler, üretim Azure kaynaklarına bağlanmadan tüm yığını yerel olarak çalıştırıp test edebilmelidir. Yerel blob ve kuyruk depolaması için Azure Storage Emulator (Azurite), yerel veritabanı testleri için Cosmos DB Emulator ve yerel ileti alışverişi için Service Bus Emulator kullanın. AZURE_ENVIRONMENT=local ortam değişkeni, DefaultAzureCredential'ı öykünücülere işaret eden bağlantı dizelerini kullanacak şekilde değiştirebilir; aynı kod Azure'da yönetilen kimliği kullanır. Docker Compose, tüm yerel bağımlılıkları tek bir docker compose up komutuyla düzenler.
# docker-compose.yml for local development
services:
azurite:
image: mcr.microsoft.com/azure-storage/azurite
ports:
- '10000:10000'
- '10001:10001'
cosmos-emulator:
image: mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator
ports:
- '8081:8081'Geliştirici İş Akışında Güvenlik
Güvenliği geliştirici iş akışının her aşamasına tümleştirin: Dependabot, çekme isteklerindeki güvenlik açığı bulunan bağımlılıkları tarar; GitHub Advanced Security (CodeQL ile kod tarama), SQL ekleme ve sabit kodlanmış gizli diziler gibi güvenlik açıklarını algılar; Microsoft Defender for DevOps, Azure güvenlik önerilerini kod değişiklikleriyle birlikte sunmak için GitHub ile tümleşir; ACR Defender güvenlik açığı taraması ise her gönderimden sonra kapsayıcı görüntülerini işletim sistemi ve uygulama katmanı CVE'leri açısından denetler. Güvenlik bulguları çekme isteği yorumları olarak görünür; böylece birleştirme öncesinde ele alınırlar.
Tümünü Birleştirme
Eksiksiz geliştirici iş akışı sürekli bir geri bildirim döngüsüdür: geliştirici kodu işler, CI kapsayıcı görüntüsünü derleyip test eder, görüntü işleme SHA'sı etiket olarak ACR'ye gönderilir, CD hazırlama ortamına dağıtım yapıp duman testlerini çalıştırır, bir kişi üretim dağıtımını onaylar, işlem hattı üretim ortamına dağıtım yapıp bir sürüm açıklaması oluşturur ve Application Insights hata oranlarını izler; eşikler aşılırsa otomatik geri alma gerçekleştirilir. Aynı depodaki kod olarak altyapı (Bicep veya Terraform), işlem hattı, Container App ve izleme yapılandırmasının tümünün uygulama koduyla birlikte sürüm denetiminde tutulmasını sağlar.
Hızlı Kontrol
Bu derste ele alınan Microsoft Azure Fundamentals (AZ-900) kavramlarını anlayıp anlamadığınızı test edin.
Ders Özeti
Bu derste şunları öğrendiniz: uçtan uca geliştirici iş akışı, GitHub kaynak denetimini, GitHub Actions CI/CD'yi, Azure Container Registry'yi, Container Apps'i ve Application Insights'ı birbirine bağlar; sürüm açıklamaları, daha hızlı olay tanısı için dağıtımları ölçüm değişiklikleriyle ilişkilendirir; hata oranı sorgularına dayalı otomatik geri alma ise hatalı dağıtımların etki alanını daraltır. Sırada, bulut kavramları ve Azure mimarisi hakkında kapsamlı bir incelemeyle sınava hazırlanmaya geçiyoruz.
Sıkça Sorulan Sorular
“Uçtan Uca Geliştirici İş Akışı” dersi ücretsiz mi?
Evet — “Uçtan Uca Geliştirici İş Akışı” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Cloud & IT Cert Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Cloud & IT Cert Prep kursu toplamda 4 dersten oluşur.
“Uçtan Uca Geliştirici İş Akışı” dersinde ne öğreneceğim?
GitHub Actions CI/CD, Azure Container Registry, Container Apps ve Application Insights’ı birleştirerek gönderimden gözlemlenebilir üretim ortamına kadar eksiksiz bir geliştirici iç döngüsü oluşturun. Cloud & IT Cert Prep ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Cloud & IT Cert Prep öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Cloud & IT Cert Prep, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Uçtan Uca Geliştirici İş Akışı” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Cloud & IT Cert Prep dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Cloud & IT Cert Prep dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Parolasız Kimlik Doğrulama için Yönetilen Kimlik
- Ayrıştırılmış Mesajlaşma için Azure Service Bus
- Azure Container Apps
- Uçtan Uca Geliştirici İş Akışı