Membandingkan opsi hosting aplikasi Java di Azure

Azure Spring Apps
Azure App Service
Azure Kubernetes Service (AKS)
Azure Virtual Machines

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.

Diagram memperlihatkan pohon keputusan untuk Java di layanan Azure.

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:

Untuk melihat profil LinkedIn non-publik, masuk ke LinkedIn.

Langkah berikutnya