Azure menawarkan banyak opsi bagi tim untuk membangun dan menyebarkan aplikasi Java. Artikel ini membahas skenario mainstream untuk Java di Azure dan memberikan saran dan pertimbangan perencanaan tingkat tinggi.
Apache®, Apache Kafka, Apache Struts, Apache Tomcat, dan logo api adalah merek dagang terdaftar atau merek dagang dari Apache Software Foundation di Amerika Serikat dan/atau negara lain. Tidak ada dukungan oleh The Apache Software Foundation yang tersirat oleh penggunaan tanda ini.
Platform
Sebelum Anda memilih skenario cloud untuk aplikasi Java Anda, identifikasi platformnya. Sebagian besar aplikasi Java menggunakan salah satu platform berikut:
Aplikasi Spring Boot JAR
Aplikasi Spring Boot JAR biasanya dipanggil langsung dari baris perintah. Mereka menangani permintaan web. Alih-alih mengandalkan server aplikasi untuk menangani permintaan HTTP, aplikasi ini menggabungkan komunikasi HTTP dan dependensi lain langsung ke dalam paket aplikasi. Aplikasi semacam itu sering dibangun dengan kerangka kerja seperti Spring Boot, Dropwizard, Micronaut, MicroProfile, dan Vert.x.
Aplikasi ini dimas ke dalam arsip yang memiliki ekstensi .jar , yang dikenal sebagai file JAR.
Aplikasi Spring Cloud
Gaya arsitektur layanan mikro adalah pendekatan untuk mengembangkan satu aplikasi sebagai serangkaian layanan kecil. Setiap layanan berjalan dalam prosesnya sendiri dan berkomunikasi dengan menggunakan mekanisme ringan, seringkali API sumber daya HTTP. Layanan ini dibangun di sekitar kemampuan bisnis.
Mesin penyebaran otomatis secara independen menyebarkan layanan mikro ini. Ada minimal manajemen terpusat, yang mungkin ditulis dalam bahasa pemrograman yang berbeda dan menggunakan teknologi penyimpanan data yang berbeda. Layanan tersebut sering dibangun dengan kerangka kerja seperti Spring Cloud.
Layanan ini dimas ke dalam beberapa aplikasi sebagai file JAR.
Aplikasi web
Aplikasi web berjalan di dalam kontainer servlet. Beberapa menggunakan API servlet secara langsung, sementara yang lain menggunakan kerangka kerja lain yang merangkum API servlet, seperti Apache Struts, Spring MVC, dan JavaServer Faces.
Aplikasi web dimas ke dalam arsip yang memiliki ekstensi .war , yang dikenal sebagai file WAR.
Aplikasi EE Jakarta
Aplikasi Jakarta Enterprise Edition (Jakarta EE) dapat berisi beberapa, semua, atau tidak ada elemen aplikasi web. Mereka juga dapat berisi dan mengonsumsi lebih banyak komponen, seperti yang didefinisikan oleh spesifikasi EE Jakarta. Aplikasi EE Jakarta sebelumnya dikenal sebagai aplikasi Java EE atau aplikasi J2EE.
Aplikasi EE Jakarta dapat dimas sebagai file WAR atau sebagai arsip yang memiliki ekstensi .ear , yang dikenal sebagai file EAR.
Aplikasi EE Jakarta harus disebarkan ke server aplikasi yang sesuai dengan Jakarta EE. Contohnya termasuk WebLogic, WebSphere, WildFly, GlassFish, dan Payara.
Aplikasi yang hanya mengandalkan fitur yang disediakan oleh spesifikasi EE Jakarta dapat dimigrasikan dari satu server aplikasi yang sesuai ke server lain. Jika aplikasi Anda bergantung pada server aplikasi tertentu, Anda mungkin perlu memilih tujuan layanan Azure yang memungkinkan Anda menghosting server aplikasi tersebut.
Opsi platform
Gunakan tabel berikut untuk mengidentifikasi platform potensial untuk jenis aplikasi Anda.
Azure Spring Apps | App Service Java SE | App Service Tomcat | App Service JBoss EAP | Azure Container Apps | AKS | Virtual Machines | |
---|---|---|---|---|---|---|---|
Aplikasi Spring Boot/JAR | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | |
Aplikasi Spring Cloud | ✔ | ✔ | ✔ | ✔ | |||
Aplikasi web | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | |
Aplikasi EE Jakarta | ✔ | ✔ | ✔ | ||||
Ketersediaan wilayah Azure | Rincian | Rincian | Rincian | Rincian | Rincian | Rincian | Rincian |
Azure Kubernetes Service (AKS) dan Virtual Machines mendukung semua jenis aplikasi, tetapi mereka mengharuskan tim Anda untuk mengambil lebih banyak tanggung jawab, seperti yang dijelaskan di bagian berikutnya.
Dukungan
Selain pilihan platform, aplikasi Java modern mungkin memiliki kebutuhan pendukung lainnya, seperti:
Pekerjaan batch atau terjadwal
Alih-alih menunggu permintaan atau input pengguna, beberapa aplikasi berjalan singkat, menjalankan beban kerja tertentu, lalu keluar. Terkadang, pekerjaan seperti itu perlu berjalan sekali atau secara berkala, interval terjadwal. Secara lokal, pekerjaan tersebut sering dipanggil dari tabel cron server.
Aplikasi ini dimas sebagai file JAR.
Catatan
Jika aplikasi Anda menggunakan penjadwal, seperti Spring Batch atau Quartz, untuk menjalankan tugas terjadwal, kami sangat menyarankan Anda menjalankan tugas tersebut di luar aplikasi. Jika aplikasi Anda menskalakan ke beberapa instans di cloud, pekerjaan yang sama dapat berjalan lebih dari sekali. Jika mekanisme penjadwalan Anda menggunakan zona waktu lokal host, mungkin ada perilaku yang tidak diinginkan saat Anda menskalakan aplikasi di seluruh wilayah.
Integrasi jaringan virtual
Saat Anda menyebarkan aplikasi Java di jaringan virtual Anda, aplikasi tersebut memiliki dependensi keluar pada layanan di luar jaringan virtual. Untuk manajemen dan operasi, proyek Anda harus memiliki akses ke port tertentu dan nama domain yang sepenuhnya memenuhi syarat. Dengan Azure Virtual Networks, Anda dapat menempatkan banyak sumber daya Azure Anda di jaringan yang tidak dapat dirutekan internet. Fitur integrasi jaringan virtual memungkinkan aplikasi Anda mengakses sumber daya di atau melalui jaringan virtual. Integrasi jaringan virtual tidak memungkinkan aplikasi Anda diakses secara privat.
Model pengembangan tanpa server
Tanpa server adalah model pengembangan cloud-native yang memungkinkan pengembang untuk membangun dan menjalankan aplikasi tanpa harus mengelola server. Dengan aplikasi tanpa server, penyedia layanan cloud secara otomatis menyediakan, menskalakan, dan mengelola infrastruktur yang diperlukan untuk menjalankan kode. Server masih ada dalam model tanpa server. Mereka diabstraksi dari pengembangan aplikasi.
Kontainerisasi
Kontainerisasi adalah kemasan bersama kode perangkat lunak dengan semua komponen yang diperlukan, seperti pustaka, kerangka kerja, dan dependensi lainnya. Aplikasi ini diisolasi dalam kontainernya sendiri.
CI/CD
Integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD) adalah metode untuk sering mengirimkan aplikasi kepada pelanggan dengan memperkenalkan otomatisasi ke dalam tahap pengembangan aplikasi. Konsep utama dalam CI/CD adalah integrasi berkelanjutan, pengiriman berkelanjutan, dan penyebaran berkelanjutan. Semua pilihan Azure mendukung sebagian besar alat CI/CD. Misalnya, Anda mungkin menggunakan solusi seperti Azure Pipelines atau Jenkins.
Mesin pencari sumber terbuka
Pencarian adalah bagian integral dari aplikasi apa pun. Jika kecepatan, performa, dan ketersediaan tinggi sangat penting, pencarian pada terabyte dan petabyte data bisa menjadi tantangan. Saat Anda menghosting aplikasi Java di Azure, rencanakan untuk menghosting instans Solr dan Elasticsearch terkait. Atau, pertimbangkan untuk bermigrasi ke Azure Cognitive Search.
Alat big data
Alat big data memungkinkan otomatisasi aliran data di antara sistem perangkat lunak. Mereka mendukung grafik perutean data yang dapat diskalakan, kuat, dan disederhanakan bersama dengan logika mediasi sistem. Mereka digunakan untuk membangun alur aliran data langsung dan mengalirkan aplikasi. Pelajari bagaimana Nifi dan Apache Kafka di Azure mungkin cocok untuk kebutuhan Anda.
Opsi dukungan
Gunakan tabel berikut untuk mengidentifikasi opsi potensial untuk jenis aplikasi Anda. AKS dan Virtual Machines mendukung semua jenis aplikasi, tetapi mereka mengharuskan tim Anda untuk mengambil lebih banyak tanggung jawab.
Azure Spring Apps | App Service Java SE | App Service Tomcat | App Service JBoss EAP | Azure Container Apps | AKS | Virtual Machines | |
---|---|---|---|---|---|---|---|
Pekerjaan batch atau terjadwal | ✔ | ✔ | ✔ | ✔ | |||
Integrasi Virtual Network | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
Tanpa server | ✔ | ✔ | ✔ | ✔ | |||
Kontainerisasi | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
Ketersediaan wilayah Azure | Rincian | Rincian | Rincian | Rincian | Rincian | Rincian | Rincian |
Selain itu, lihat pohon keputusan ini.
Unduh file Visio dari diagram ini.
Membangun atau memigrasikan aplikasi Java
Untuk membangun atau memigrasikan aplikasi Java, identifikasi platform Java aplikasi Anda. Beberapa platform populer adalah Java SE, Jakarta EE, dan MicroProfile.
Java SE
Java Platform, Standard Edition (Java SE) adalah platform komputasi untuk pengembangan dan penyebaran kode portabel untuk lingkungan desktop dan server. Proyek populer yang dibangun di Java SE termasuk Spring Boot, Spring Cloud, Spring Framework, dan Apache Tomcat.
Jakarta EE
Jakarta EE adalah masa depan sumber terbuka Java perusahaan cloud-native. Ini adalah serangkaian spesifikasi yang memperluas Java SE dengan fitur perusahaan seperti komputasi terdistribusi dan layanan web. Aplikasi EE Jakarta menjalankan runtime referensi. Runtime ini dapat berupa layanan mikro atau server aplikasi. Mereka menangani transaksi, keamanan, skalabilitas, konkurensi, dan manajemen komponen yang disebarkan aplikasi.
MicroProfile
Proyek MicroProfile menyediakan kumpulan spesifikasi yang dirancang untuk membantu pengembang membangun layanan mikro cloud-native Enterprise Java. Quarkus dan Open Liberty adalah implementasi populer microProfile.
Menyusun atau memigrasikan ringkasan
Tabel berikut ini menyediakan informasi build atau migrasi berdasarkan jenis aplikasi dan layanan Azure.
Jenis | Java SE | MicroProfile | JarkartaSE | |
---|---|---|---|---|
Komputer Virtual | IaaS | ✔ | ✔ | ✔ |
VMware Tanzu | IaaS | ✔ | ||
Azure Kubernetes Service | Kontainer | ✔ | ✔ | ✔ |
Red Hat OpenShift | Kontainer | ✔ | ✔ | ✔ |
Aplikasi Kontainer Azure | PaaS | ✔ | ✔ | |
JBoss EAP | PaaS App Service | ✔ | ✔ | |
Apache Tomcat | PaaS App Service | ✔ | ||
Java SE | PaaS App Service | ✔ | ✔ | |
Azure Spring Apps | PaaS | ✔ |
Kontributor
Artikel ini dikelola oleh Microsoft. Ini awalnya ditulis oleh kontributor berikut.
Penulis utama:
- Asir Vedamuthu Selvasingh | Manajer Program Utama
- Hang Wang | Manajer Produk
- Xinyi Zhang | Manajer PM Utama
Untuk melihat profil LinkedIn non-publik, masuk ke LinkedIn.
Langkah berikutnya
- Gambaran umum Azure Container Apps
- Azure Kubernetes Service
- Dokumentasi Azure Spring Apps
- Integrasi jaringan Virtual Azure
- Komputer virtual di Azure