Java, kurumsal uygulama geliştirmenin temel taşlarından biri olmaya devam ediyor. Spring Boot framework’ü ise Java ekosisteminde mikroservis geliştirme standardı haline geldi. Ancak Spring Boot uygulamalarını bulutta çalıştırmak, ölçeklemek ve yönetmek ayrı bir mühendislik çabası gerektirir. Azure Spring Apps tam olarak bu problemi çözmek için tasarlanmış, tam yönetimli bir platformdur.
Azure Spring Apps Nedir?
Azure Spring Apps (eski adıyla Azure Spring Cloud), Spring Boot ve Spring Cloud uygulamalarını Azure üzerinde çalıştırmak için optimize edilmiş bir PaaS hizmetidir. Microsoft ve VMware (Tanzu) ortaklığıyla geliştirilir ve sunulur. Altyapı yönetimi, ölçekleme, güvenlik yamaları ve Spring bileşenlerinin yapılandırması tamamen platform tarafından sağlanır.
Geleneksel yaklaşımda bir Spring Boot uygulamasını Azure’da çalıştırmak için VM veya AKS üzerinde altyapı kurmanız, JDK yüklemeniz, uygulama sunucusu yapılandırmanız, health check mekanizması oluşturmanız ve ölçekleme kuralları tanımlamanız gerekir. Azure Spring Apps tüm bu karmaşıklığı ortadan kaldırır: JAR dosyanızı deploy edersiniz, gerisi platformun sorumluluğundadır.
Uygulama Dağıtımı
Azure Spring Apps’a uygulama dağıtmanın birkaç yolu vardır. En basit yöntem Maven veya Gradle plugin’i ile doğrudan build sırasında deploy etmektir. mvn azure-spring-apps:deploy komutu uygulamanızı derler, paketler ve platforma yükler. Azure CLI ile az spring app deploy --artifact-path target/app.jar komutuyla da dağıtım yapılabilir. GitHub Actions veya Azure DevOps pipeline’ları ile CI/CD entegrasyonu kurularak her commit’te otomatik dağıtım sağlanabilir.
Blue-green deployment desteği sayesinde kesintisiz dağıtım yapılabilir. Yeni sürüm staging slotuna deploy edilir, test edildikten sonra tek bir komutla production slotu ile yer değiştirir. Sorun çıkarsa anında geri alınabilir. Bu yaklaşım özellikle yüksek erişilebilirlik gerektiren üretim ortamlarında kritik öneme sahiptir.
Spring Cloud Bileşenleri
Azure Spring Apps, Spring Cloud’un temel bileşenlerini yerleşik olarak sunar ve yönetir.
Config Server: Merkezi yapılandırma yönetimi sağlar. Uygulama konfigürasyonlarınız (veritabanı bağlantı bilgileri, özellik bayrakları, ortam değişkenleri) bir Git reposunda tutulur ve Config Server aracılığıyla uygulamalara dağıtılır. Konfigürasyon değişikliği yapıldığında uygulamaları yeniden başlatmadan güncelleyebilirsiniz. Azure Spring Apps’ta Config Server otomatik olarak yönetilir, yapmanız gereken tek şey Git repo URL’sini yapılandırmaktır.
Service Registry (Eureka): Mikroservisler arası keşif mekanizması sağlar. Her servis Service Registry’ye kaydolur ve diğer servisler bu registry üzerinden birbirini bulur. Sabit IP veya hostname yerine servis adıyla iletişim kurulur. Bu sayede servis instance’ları eklenip çıkarıldığında diğer servisler otomatik olarak güncellenir.
Spring Cloud Gateway: API gateway olarak tüm dış trafiği yönetir. URL yönlendirme, rate limiting, circuit breaker, retry ve request/response transformation gibi cross-cutting concern’leri merkezi olarak halleder. Azure Spring Apps Enterprise tier’da VMware Tanzu Application Platform bileşenleri ile geliştirilmiş API portal ve route yapılandırması sunulur.
İzleme ve Tanılama
Azure Spring Apps, Application Insights ile derin entegrasyona sahiptir. Ek kod yazmadan (auto-instrumentation) HTTP istekleri, veritabanı çağrıları, harici servis bağlantıları ve exception’lar otomatik olarak izlenir. Distributed tracing ile bir isteğin mikroservisler arasındaki yolculuğunu uçtan uca takip edebilirsiniz. Hangi serviste ne kadar süre harcandığını, hangi noktada hata oluştuğunu görsel olarak analiz edebilirsiniz.
Uygulama logları Azure Log Analytics’e otomatik gönderilir. KQL sorguları ile logları filtreleyip analiz edebilir, belirli hata kalıpları için alarm tanımlayabilirsiniz. JVM metrikleri (heap kullanımı, GC süresi, thread sayısı) de izlenir ve performans sorunlarının teşhisinde kullanılır. Bu izleme yetenekleri platformla birlikte gelir, ek araç kurmanıza gerek kalmaz.
Ölçekleme ve Performans
Azure Spring Apps iki boyutta ölçekleme sunar. Dikey ölçekleme ile uygulama instance’ınıza ayrılan CPU ve bellek miktarını artırabilirsiniz. Yatay ölçekleme ile instance sayısını artırarak dağıtık yük dengeleme sağlarsınız. Otomatik ölçekleme kuralları tanımlayarak CPU kullanımı, bellek kullanımı veya HTTP istek sayısına göre instance sayısının dinamik olarak ayarlanmasını sağlayabilirsiniz.
JVM optimizasyonu performans için kritiktir. Azure Spring Apps uygulamanızın bellek profili için uygun JVM flag’leri otomatik olarak ayarlar ancak ihtiyaç duyduğunuzda özel JVM options tanımlayabilirsiniz. Örneğin yüksek throughput gerektiren uygulamalarda G1 yerine ZGC garbage collector tercih edilebilir.
Güvenlik ve Ağ
Azure Spring Apps VNet injection ile kendi sanal ağınızda çalıştırılabilir. Bu sayede uygulamalarınız internete açık olmadan, yalnızca sanal ağ içindeki diğer kaynaklarla iletişim kurabilir. Azure Private Link ile Azure SQL, Azure Cache for Redis, Azure Service Bus gibi hizmetlere private endpoint üzerinden güvenli bağlantı sağlanır.
Managed Identity desteği ile uygulamalarınız Azure Key Vault, Azure Storage ve diğer Azure kaynaklarına şifre kullanmadan kimlik doğrulama yapabilir. Bu yaklaşım bağlantı dizelerinin koda veya config dosyalarına yazılmasını ortadan kaldırır ve secret yönetimi yükünü minimize eder.
Enterprise Tier
Azure Spring Apps Enterprise tier, VMware Tanzu bileşenleriyle geliştirilmiş kurumsal yetenekler sunar. Tanzu Build Service ile kaynak koddan otomatik konteyner imajı oluşturulur (Cloud Native Buildpacks kullanarak). Application Configuration Service, API Portal, Application Live View ve Application Accelerator gibi ek bileşenler geliştirici verimliliğini artırır. Enterprise tier özellikle büyük mikroservis dağıtımlarına sahip kuruluşlar için tasarlanmıştır.
Migrasyon Rehberi
Mevcut Spring Boot uygulamalarını Azure Spring Apps’e taşımak görece basittir. Temel migrasyon adımları: dosya sistemi bağımlılıklarını kaldırın (Azure Blob Storage veya managed file share kullanın), ortam değişkenlerini externalize edin (Azure Key Vault veya Config Server), session yönetimini externalize edin (Redis kullanın), health endpoint tanımlayın (/actuator/health).
Spring Cloud Config Server ile merkezi konfigürasyon yönetimi yapılandırın. Git reposundaki application.yml dosyaları tüm mikro servisler tarafından paylaşılır. Profil bazlı konfigürasyonlar (dev, staging, production) aynı repo’da farklı dosyalarla yönetilir. Azure Spring Apps bu yapılandırmayı native olarak destekler ve Config Server’ı yönetimli bir bileşen olarak sunar.
İzleme ve Hata Ayıklama
Azure Spring Apps, Application Insights ile derin entegrasyon sunar. Java agent otomatik olarak eklenir ve HTTP istekleri, veritabanı çağrıları, harici servis çağrıları ve exception’lar izlenir. Dağıtık izleme (distributed tracing) ile bir isteğin mikro servisler arasındaki yolculuğunu uçtan uca görüntüleyebilirsiniz. Application map mikro servisler arası bağımlılıkları ve hata oranlarını görsel olarak gösterir.
Logları merkezi olarak toplamak için Azure Monitor Log Analytics kullanılır. AppPlatformLogsforSpring tablosunda uygulama logları, AppPlatformSystemLogs tablosunda platform logları bulunur. KQL sorguları ile belirli bir zaman diliminde belirli bir mikro servisin hata loglarını filtreleyebilirsiniz.
Sık Sorulan Sorular
Azure Spring Apps ne zaman Container Apps’e tercih edilmeli?
Spring Boot ve Spring Cloud ekosistemini yoğun olarak kullanıyorsanız Azure Spring Apps doğal tercihtir. Config Server, Service Registry, circuit breaker dashboard gibi Spring Cloud bileşenleri platform tarafından yönetilir. Farklı framework’ler (Node.js, Go, Python) veya language-agnostic container’lar çalıştıracaksanız Container Apps daha esnek bir seçenektir.
Mevcut Spring Boot 2.x uygulamamı taşıyabilir miyim?
Azure Spring Apps hem Spring Boot 2.7.x hem de 3.x sürümlerini destekler. Ancak Spring Boot 2.x Kasım 2023’te end-of-support oldu. Güvenlik güncellemeleri almaya devam etmek için Spring Boot 3.x’e upgrade etmeniz önerilir. Upgrade sırasında Jakarta EE namespace geçişi (javax.* → jakarta.*) en büyük değişikliktir.
Fiyatlandırma modeli nedir?
Azure Spring Apps Basic tier aylık yaklaşık 50 USD’den başlar ve geliştirme ortamları için uygundur. Standard tier üretim ortamları için SLA, auto-scaling ve gelişmiş özellikler sunar. Enterprise tier VMware Tanzu bileşenleri, Application Live View ve API Portal gibi kurumsal özellikler içerir. Fiyatlandırma vCPU saat ve GB-saat bazındadır.
Sonuç
Azure Spring Apps, Java ve Spring Boot ekosistemindeki geliştiriciler için bulut ortamının karmaşıklığını ortadan kaldıran güçlü bir platformdur. Altyapı yönetimine değil uygulama geliştirmeye odaklanmanızı sağlar, Spring Cloud bileşenlerini yerleşik olarak sunar ve Azure ekosistemiyle derin entegrasyon sağlar.
Cloudspark Java ve Spring Boot bulut çözümleri kapsamında Azure Spring Apps planlama, migrasyon ve optimizasyon hizmetleri sunuyoruz.



