Bagikan melalui


Gambaran umum Java di Azure Container Apps

Azure Container Apps dapat menjalankan aplikasi Java kontainer apa pun di cloud sambil memberikan opsi fleksibel tentang cara Anda menyebarkan aplikasi Anda.

Saat Anda menggunakan Container Apps untuk aplikasi Java dalam kontainer, Anda mendapatkan:

  • Penskalakan hemat biaya: Saat Anda menggunakan paket Konsumsi, aplikasi Java Anda dapat menskalakan ke nol. Penskalaan saat ada sedikit permintaan untuk aplikasi Anda secara otomatis akan menurunkan biaya untuk proyek Anda.

  • Opsi penyebaran: Azure Container Apps terintegrasi dengan Buildpacks, yang memungkinkan Anda untuk menyebarkan langsung dari build Maven, melalui file artefak, atau dengan Dockerfile Anda sendiri.

    • Penyebaran JAR (Pratinjau): Anda dapat menyebarkan aplikasi kontainer langsung dari file JAR.

    • Penyebaran WAR (Pratinjau): Anda dapat menyebarkan aplikasi kontainer langsung dari file WAR.

    • Dukungan IDE: Anda dapat menyebarkan aplikasi kontainer langsung dari IntelliJ.

  • Penyesuaian memori otomatis (Pratinjau): Aplikasi Kontainer mengoptimalkan cara Java Virtual Machine (JVM) mengelola memori, membuat memori yang paling mungkin tersedia untuk aplikasi Java Anda.

  • Membangun variabel lingkungan (Pratinjau): Anda dapat mengonfigurasi pasangan kunci-nilai kustom untuk mengontrol build gambar Java dari kode sumber.

Artikel ini merinci informasi yang perlu Anda ketahui saat membuat aplikasi Java di Azure Container Apps.

Jenis Penyebaran

Menjalankan aplikasi dalam kontainer biasanya berarti Anda perlu membuat Dockerfile untuk aplikasi Anda, tetapi menjalankan aplikasi Java di Container Apps memberi Anda beberapa opsi.

Tipe Deskripsi Menggunakan Buildpacks Menggunakan Dockerfile
Build kode sumber Anda dapat menyebarkan langsung ke Container Apps dari kode sumber Anda. Ya Tidak
Build artefak Anda dapat membuat build Maven untuk disebarkan ke Aplikasi Kontainer Ya Tidak
Dockerfile Anda dapat membuat Dockerfile secara manual dan mengambil kontrol penuh atas penyebaran Anda. Tidak Ya

Catatan

Penyebaran Buildpacks mendukung JDK versi 8, 11, 17, dan 21.

Tipe aplikasi

Jenis aplikasi yang berbeda diimplementasikan baik sebagai aplikasi kontainer individual atau sebagai pekerjaan Aplikasi Kontainer. Gunakan tabel berikut untuk membantu Anda memutuskan jenis aplikasi mana yang terbaik untuk skenario Anda.

Contoh yang tercantum dalam tabel ini tidak dimaksudkan untuk lengkap, tetapi untuk membantu Anda memahami niat terbaik dari berbagai jenis aplikasi.

Jenis Contoh Terapkan sebagai...
Aplikasi web dan titik akhir API Spring Boot, Quarkus, Apache Tomcat, dan Jetty Aplikasi kontainer individual
Aplikasi konsol, tugas terjadwal, pelari tugas, pekerjaan batch SparkJobs, tugas ETL, Pekerjaan Spring Batch, pekerjaan alur Jenkins Pekerjaan Aplikasi Kontainer

Awakutu

Saat Anda men-debug aplikasi Java di Container Apps, pastikan untuk memeriksa agen dalam proses Java untuk aliran log dan pesan penelusuran kesalahan konsol.

Pemecahan Masalah

Ingatlah item berikut saat Anda mengembangkan aplikasi Java Anda:

  • Sumber daya default: Secara default, aplikasi memiliki setengah CPU dan 1 GB yang tersedia.

  • Proses stateless: Saat aplikasi kontainer Anda menskalakan masuk dan keluar, proses baru dibuat dan dimatikan. Pastikan untuk merencanakan ke depan sehingga Anda menulis data ke penyimpanan bersama seperti database dan berbagi sistem file. Jangan berharap file apa pun yang ditulis langsung ke sistem file kontainer tersedia untuk kontainer lain.

  • Skala ke nol adalah default: Jika Anda perlu memastikan satu atau beberapa instans aplikasi Anda terus berjalan, pastikan Anda menentukan aturan skala untuk memenuhi kebutuhan Anda.

  • Perilaku tak terduga: Jika aplikasi kontainer Anda gagal membangun, memulai, atau menjalankan, verifikasi bahwa jalur artefak diatur dengan benar di kontainer Anda.

  • Masalah dukungan Buildpack: Jika Buildpack Anda tidak mendukung dependensi atau versi Java yang Anda butuhkan, buat Dockerfile Anda sendiri untuk menyebarkan aplikasi Anda. Anda dapat melihat sampel Dockerfile untuk referensi.

  • Sinyal SIGTERM dan SIGINT: Secara default, JVM menangani SIGTERM dan SIGINT memberi sinyal dan tidak meneruskannya ke aplikasi kecuali Anda mencegat sinyal ini dan menanganinya di aplikasi Anda. Container Apps menggunakan dan SIGTERM SIGINT untuk kontrol proses. Jika Anda tidak menangkap sinyal ini, dan aplikasi Anda berakhir secara tak terduga, Anda mungkin kehilangan sinyal ini kecuali Anda mempertahankannya ke penyimpanan.

  • Akses ke gambar kontainer: Jika Anda menggunakan penyebaran artefak atau kode sumber dalam kombinasi dengan registri default, Anda tidak memiliki akses langsung ke gambar kontainer Anda.

Pemantauan

Semua alat pengamatan standar berfungsi dengan aplikasi Java Anda. Saat Anda membangun aplikasi Java untuk dijalankan di Container Apps, ingatlah item berikut:

  • Metrik: Metrik Java Virtual Machine (JVM) sangat penting untuk memantau kesehatan dan performa aplikasi Java Anda. Data yang dikumpulkan mencakup wawasan tentang penggunaan memori, pengumpulan sampah, jumlah utas JVM Anda. Anda dapat memeriksa metrik untuk membantu memastikan kesehatan dan stabilitas aplikasi Anda.

  • Pengelogan: Mengirim aplikasi dan pesan kesalahan ke stdout atau stderror sehingga dapat muncul di aliran log. Hindari pengelogan langsung ke sistem file kontainer seperti yang umum saat menggunakan layanan pengelogan populer.

  • Konfigurasi pemantauan performa: Sebarkan layanan pemantauan performa sebagai kontainer terpisah di lingkungan Container Apps Anda sehingga dapat langsung mengakses aplikasi Anda.

Diagnostik

Azure Container Apps menawarkan alat diagnostik bawaan khusus untuk pengembang Java. Dukungan ini menyederhanakan penelusuran kesalahan dan pemecahan masalah aplikasi Java yang berjalan di Azure Container Apps untuk meningkatkan efisiensi dan kemudahan.

  • Tingkat pencatat dinamis: Memungkinkan Anda mengakses dan memeriksa tingkat detail log yang berbeda tanpa modifikasi kode atau memaksa Anda untuk memulai ulang aplikasi Anda. Anda dapat melihat Atur tingkat pencatat dinamis untuk referensi.

Penskalaan

Jika Anda perlu memastikan permintaan dari aplikasi front-end Anda mencapai server yang sama, atau aplikasi front-end Anda dibagi antara beberapa kontainer, pastikan untuk mengaktifkan sesi lengket.

Keamanan

Runtime Container Apps mengakhiri SSL untuk Anda di dalam lingkungan Container Apps Anda.

Manajemen memori

Untuk membantu mengoptimalkan manajemen memori di aplikasi Java, Anda dapat memastikan fitting memori JVM diaktifkan di aplikasi Anda.

Memori diukur dalam pasangan inti gibibyte (Gi) dan CPU. Tabel berikut menunjukkan rentang sumber daya yang tersedia untuk aplikasi kontainer Anda.

Ambang Inti CPU Memori dalam Gibibyte (Gi)
Minimum 0.25 0,5
Maksimum 4 8

Core tersedia dalam kenaikan inti 0,25, dengan memori tersedia pada rasio 2:1. Misalnya, jika Anda memerlukan 1,25 core, Anda memiliki memori 2,5 Gi yang tersedia untuk aplikasi kontainer Anda.

Catatan

Untuk aplikasi yang menggunakan JDK versi 9 dan yang lebih rendah, pastikan untuk menentukan pengaturan memori JVM kustom agar sesuai dengan alokasi memori di Azure Container Apps.

Dukungan komponen Spring

Azure Container Apps menawarkan dukungan untuk Komponen Spring berikut sebagai layanan terkelola:

  • Eureka Server for Spring: Pendaftaran dan penemuan layanan adalah persyaratan utama untuk mempertahankan daftar instans aplikasi langsung. Aplikasi Anda menggunakan daftar ini untuk merutekan dan menyeimbangkan beban permintaan masuk. Mengonfigurasi setiap klien secara manual membutuhkan waktu dan memperkenalkan kemungkinan kesalahan manusia. Eureka Server menyederhanakan manajemen penemuan layanan dengan berfungsi sebagai registri layanan di mana layanan mikro dapat mendaftarkan diri mereka dan menemukan layanan lain dalam sistem.

  • Server Konfigurasi untuk Spring: Config Server menyediakan manajemen konfigurasi eksternal terpusat untuk sistem terdistribusi. Komponen ini dirancang untuk mengatasi tantangan pengelolaan pengaturan konfigurasi di beberapa layanan mikro di lingkungan cloud-native.

  • Admin untuk Spring: Admin untuk komponen terkelola Spring menyediakan antarmuka administratif dirancang untuk aplikasi web Spring Boot yang memiliki titik akhir aktuator. Komponen terkelola menyediakan integrasi dan manajemen ke aplikasi kontainer Anda dengan memungkinkan Anda untuk mengikat aplikasi kontainer Anda ke komponen Admin untuk Spring.

Langkah berikutnya