Aracılığıyla paylaş


Azure Container Apps'te Java'ya genel bakış

Azure Container Apps, kapsayıcılı Java uygulamalarını bulutta çalıştırabilir ve uygulamalarınızı dağıtmaya yönelik esnek seçenekler sunar.


Kapsayıcılı Java uygulamalarınız için Container Apps kullandığınızda şunları elde edersiniz:

  • Uygun maliyetli ölçeklendirme: Tüketim planını kullandığınızda Java uygulamalarınız sıfıra ölçeklendirilebilir. Uygulamanız için çok az talep olduğunda ölçeği daraltmak, projeleriniz için maliyetleri otomatik olarak azaltır.

  • Dağıtım seçenekleri: Azure Container Apps, yapıt dosyaları aracılığıyla veya kendi Dockerfile'ınız ile doğrudan maven derlemesinden dağıtım yapmanızı sağlayan Buildpack'lerle tümleşir.

    • JAR dağıtımı (Önizleme): Kapsayıcı uygulamanızı doğrudan bir JAR dosyasından dağıtabilirsiniz.

    • WAR dağıtımı (Önizleme): Kapsayıcı uygulamanızı doğrudan bir WAR dosyasından dağıtabilirsiniz.

    • IDE desteği: Kapsayıcı uygulamanızı doğrudan IntelliJ'den dağıtabilirsiniz.

  • Otomatik bellek sığdırma (Önizleme): Container Apps, Java Sanal Makinesi'nin (JVM) belleği yönetme şeklini iyileştirerek java uygulamalarınız için en olası belleği sağlar.

  • Ortam değişkenleri oluşturma (Önizleme): Kaynak koddan Java görüntüsü derlemesini denetlemek için özel anahtar-değer çiftleri yapılandırabilirsiniz.

Bu makalede, Azure Container Apps üzerinde Java uygulamaları oluştururken bilmeniz gereken bilgiler ayrıntılı olarak açıklanmaktadır.

Dağıtım türleri

Kapsayıcılı uygulamaları çalıştırmak genellikle uygulamanız için bir Dockerfile oluşturmanız gerektiği anlamına gelir, ancak Container Apps'te Java uygulamalarını çalıştırmak size birkaç seçenek sunar.

Type Açıklama Buildpack'leri kullanır Dockerfile kullanır
Kaynak kodu derlemesi Kaynak kodunuzdan doğrudan Container Apps'e dağıtabilirsiniz. Yes Hayır
Yapıt derlemesi Container Apps'e dağıtmak için maven derlemesi oluşturabilirsiniz Yes Hayır
Dockerfile Dockerfile'ınızı el ile oluşturabilir ve dağıtımınız üzerinde tam denetime sahip olabilirsiniz. Hayır Evet

Not

Derleme paketleri dağıtımları JDK'nin 8, 11, 17 ve 21 sürümlerini destekler.

Uygulama türleri

Farklı uygulama türleri tek bir kapsayıcı uygulaması olarak veya Kapsayıcı Uygulamaları işi olarak uygulanır. Senaryonuz için en uygun uygulama türüne karar vermenize yardımcı olması için aşağıdaki tabloyu kullanın.

Bu tabloda listelenen örneklerin kapsamlı olması amaçlanmamıştır, ancak farklı uygulama türlerinin amacını en iyi şekilde anlamanıza yardımcı olmak için kullanılır.

Tür Örnekler Farklı uygula...
Web uygulamaları ve API uç noktaları Spring Boot, Quarkus, Apache Tomcat ve Jetty Tek bir kapsayıcı uygulaması
Konsol uygulamaları, zamanlanmış görevler, görev çalıştırıcıları, toplu işler SparkJobs, ETL görevleri, Spring Batch İşi, Jenkins işlem hattı işi Container Apps işi

Hata ayıklama

Container Apps'te Java uygulamanızda hata ayıklarken, günlük akışı ve konsol hata ayıklama iletileri için Java işlem içi aracısını incelediğinizden emin olun.

Sorun giderme

Java uygulamalarınızı geliştirirken aşağıdaki öğeleri göz önünde bulundurun:

  • Varsayılan kaynaklar: Varsayılan olarak, bir uygulamada yarım CPU ve 1 GB kullanılabilir.

  • Durum bilgisi olmayan işlemler: Kapsayıcı uygulamanızın ölçeği genişletildikçe yeni işlemler oluşturulur ve kapatılır. Veritabanları ve dosya sistemi paylaşımları gibi paylaşılan depolamaya veri yazmak için önceden planlama yaptığınızdan emin olun. Doğrudan kapsayıcı dosya sistemine yazılan dosyaların başka bir kapsayıcı için kullanılabilir olmasını beklemeyin.

  • Varsayılan olarak sıfıra ölçeklendirin: Uygulamanızın bir veya daha fazla örneğinin sürekli çalıştığından emin olmanız gerekiyorsa, gereksinimlerinizi en iyi şekilde karşılayacak bir ölçek kuralı tanımladığınızdan emin olun.

  • Beklenmeyen davranış: Kapsayıcı uygulamanız derlenemiyor, başlatılamıyor veya çalıştırılamıyorsa, yapıt yolunun kapsayıcınızda doğru ayarlandığını doğrulayın.

  • Derleme paketi destek sorunları: Buildpack'iniz bağımlılıkları veya ihtiyacınız olan Java sürümünü desteklemiyorsa uygulamanızı dağıtmak için kendi Dockerfile'ınızı oluşturun. Başvuru için örnek bir Dockerfile görüntüleyebilirsiniz.

  • SIGTERM ve SIGINT sinyalleri: Varsayılan olarak, JVM bu sinyalleri SIGTERM işler ve SIGINT bu sinyalleri kesmediğiniz ve uygulamanızda uygun şekilde işlemediğiniz sürece bunları uygulamaya geçirmez. Container Apps, işlem denetimi için hem hem SIGINT de SIGTERM kullanır. Bu sinyalleri yakalamazsanız ve uygulamanız beklenmedik bir şekilde sonlanırsa, bunları depolamada kalıcı hale getirmezseniz bu sinyalleri kaybedebilirsiniz.

  • Kapsayıcı görüntülerine erişim: Yapıt veya kaynak kodu dağıtımını varsayılan kayıt defteriyle birlikte kullanıyorsanız kapsayıcı görüntülerinize doğrudan erişiminiz yoktur.

İzleme

Tüm standart gözlemlenebilirlik araçları Java uygulamanızla çalışır. Java uygulamalarınızı Container Apps üzerinde çalışacak şekilde oluştururken aşağıdaki öğeleri göz önünde bulundurun:

  • Ölçümler: Java Sanal Makinesi (JVM) ölçümleri, Java uygulamalarınızın sistem durumunu ve performansını izlemek için kritik öneme sahiptir. Toplanan veriler bellek kullanımı, çöp toplama, JVM'nizin iş parçacığı sayısı hakkında içgörüler içerir. Uygulamalarınızın sistem durumunu ve kararlılığını sağlamaya yardımcı olmak için ölçümleri de kontrol edebilirsiniz.

  • Günlüğe kaydetme: Günlük akışında ortaya çıkarabilmeleri için stdout veya stderror öğesine uygulama ve hata iletileri gönderin. Popüler günlük hizmetleri kullanılırken yaygın olarak olduğu gibi doğrudan kapsayıcının dosya sistemine günlük kaydı yapmaktan kaçının.

  • Performans izleme yapılandırması: Uygulamanıza doğrudan erişebilmesi için performans izleme hizmetlerini Container Apps ortamınızda ayrı bir kapsayıcı olarak dağıtın.

Tanılama

Azure Container Apps, yalnızca Java geliştiricileri için yerleşik tanılama araçları sunar. Bu destek, gelişmiş verimlilik ve kolaylıklar için Azure Container Apps üzerinde çalışan Java uygulamalarında hata ayıklamayı ve sorun gidermeyi kolaylaştırır.

  • Dinamik günlükçü düzeyi: Kod değişikliği yapmadan veya uygulamanızı yeniden başlatmaya zorlamadan farklı günlük ayrıntılarına erişmenizi ve denetlemenizi sağlar. Başvuru için Dinamik günlükçü düzeyini ayarla seçeneğini görüntüleyebilirsiniz.

Ölçeklendirme

Ön uç uygulamalarınızdan gelen isteklerin aynı sunucuya ulaştığından veya ön uç uygulamanızın birden çok kapsayıcı arasında bölündüğünden emin olmanız gerekiyorsa, yapışkan oturumları etkinleştirdiğinizden emin olun.

Güvenlik

Container Apps çalışma zamanı, Container Apps ortamınızda TLS/SSL'yi sizin için sonlandırır.

Bellek yönetimi

Java uygulamanızda bellek yönetimini iyileştirmeye yardımcı olmak için, uygulamanızda JVM bellek sığdırma özelliğinin etkinleştirildiğinden emin olabilirsiniz.

Bellek, gibibaytlar (Gi) ve CPU çekirdek çiftleriyle ölçülür. Aşağıdaki tabloda, kapsayıcı uygulamanız için kullanılabilen kaynak aralığı gösterilmektedir.

Threshold CPU çekirdekleri Gibibayt cinsinden bellek (Gi)
Minimum 0.25 0,5
En Büyük 4 8

Çekirdekler 0,25 çekirdek artışıyla kullanılabilir ve bellek 2:1 oranında kullanılabilir. Örneğin, 1,25 çekirdeğe ihtiyacınız varsa kapsayıcı uygulamanız için 2,5 Gi belleğiniz vardır.

Not

JDK sürüm 9 ve daha düşük sürümleri kullanan uygulamalar için, Azure Container Apps'teki bellek ayırmayla eşleşecek özel JVM bellek ayarlarını tanımladığınızdan emin olun.

Java bileşenleri desteği

Azure Container Apps, yönetilen hizmetler olarak aşağıdaki Java bileşenleri için destek sunar:

  • Spring için Eureka Server: Hizmet kaydı ve bulma, canlı uygulama örneklerinin listesini tutmak için önemli gereksinimlerdir. Uygulamanız, gelen istekleri yönlendirmek ve yük dengelemek için bu listeyi kullanır. Her istemcinin el ile yapılandırılması zaman alır ve insan hatası olasılığını getirir. Eureka Server, mikro hizmetlerin kendilerini kaydedebildiği ve sistemdeki diğer hizmetleri bulabildiği bir hizmet kayıt defteri olarak çalışarak hizmet bulma yönetimini basitleştirir.

  • Spring için Yapılandırma Sunucusu: Config Server, dağıtılmış sistemler için merkezi dış yapılandırma yönetimi sağlar. Bu bileşen, buluta özel bir ortamda birden çok mikro hizmette yapılandırma ayarlarını yönetmenin zorluklarını ele almak için tasarlanmıştır.

  • Spring için Ağ Geçidi: Spring için Ağ Geçidi, mikro hizmet mimarisinin bir parçası olarak API isteklerini yönlendirmek, yönetmek ve işlemek için verimli ve güçlü bir yol sunar. Dış istekleri farklı hizmetlere yönlendiren, filtreleme, yük dengeleme ve daha fazlası gibi çeşitli özellikler ekleyen bir API Gateway işlevi görür.

  • Spring yöneticisi: Spring yöneticisi tarafından yönetilen bileşen, aktüatör uç noktalarına sahip Spring Boot web uygulamaları için tasarlanmış bir yönetim arabirimi sağlar. Yönetilen bileşen, kapsayıcı uygulamanızı Spring için Yönetici bileşenine bağlamanıza olanak tanıyarak kapsayıcı uygulamanıza tümleştirme ve yönetim sağlar.

Sonraki adımlar