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.
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
danSIGINT
memberi sinyal dan tidak meneruskannya ke aplikasi kecuali Anda mencegat sinyal ini dan menanganinya di aplikasi Anda. Container Apps menggunakan danSIGTERM
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
ataustderror
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.