Memigrasikan aplikasi WebLogic Server ke JBoss EAP di Azure App Service

Panduan ini menjelaskan apa yang harus Anda ketahui ketika Anda ingin memigrasikan aplikasi WebLogic Server yang ada untuk dijalankan di Azure App Service menggunakan JBoss EAP.

Pra-migrasi

Untuk memastikan keberhasilan migrasi, sebelum memulai, selesaikan langkah-langkah penilaian dan inventaris yang dijelaskan di bagian berikut.

Jika Anda tidak dapat memenuhi salah satu persyaratan pra-migrasi ini, lihat panduan migrasi pendamping untuk memigrasikan aplikasi Anda ke Komputer Virtual sebagai gantinya: Memigrasikan aplikasi WebLogic Server ke Azure Virtual Machines

Kapasitas server inventaris

Dokumentasikan perangkat keras (memori, CPU, disk) dari server produksi saat ini dan jumlah permintaan rata-rata dan puncak, serta pemanfaatan sumber daya. Anda akan memerlukan informasi ini terlepas dari jalur migrasi yang Anda pilih. Tindakan tersebut berguna, misalnya, untuk membantu memandu pemilihan Paket App Service.

Daftar tingkatan Paket App Service yang tersedia menunjukkan memori, inti CPU, penyimpanan, dan informasi harga. Perhatikan bahwa JBoss EAP pada App Service hanya tersedia di tingkat Paket App Service Premium V3 dan Isolated V2.

Inventaris semua rahasia

Sebelum muncul teknologi "konfigurasi sebagai layanan" seperti Azure Key Vault, tidak ada konsep "rahasia" yang terdefinisi dengan baik. Sebaliknya, Anda memiliki serangkaian pengaturan konfigurasi yang berbeda yang secara efektif berfungsi sebagai apa yang sekarang kita sebut "rahasia". Dengan server aplikasi seperti WebLogic Server, rahasia ini ada di banyak file konfigurasi dan penyimpanan konfigurasi yang berbeda. Periksa semua properti dan file konfigurasi di server produksi untuk rahasia dan kata sandi apa pun. Pastikan untuk memeriksa weblogic.xml di WAR Anda. File konfigurasi yang berisi kata sandi atau kredensial juga dapat ditemukan di dalam aplikasi Anda. Untuk informasi selengkapnya, kunjungi konsep dasar Azure Key Vault.

Inventaris semua sertifikat

Dokumentasikan semua sertifikat yang digunakan untuk titik akhir SSL publik. Anda bisa melihat semua sertifikat di server produksi dengan menjalankan perintah berikut ini:

keytool -list -v -keystore <path to keystore>

Inventaris sumber daya JNDI

Inventarisasikan semua sumber daya JNDI. Misalnya, sumber data seperti database mungkin memiliki nama JNDI terkait yang memungkinkan JPA untuk mengikat instans dengan benar EntityManager ke database tertentu. Untuk informasi selengkapnya tentang sumber daya dan database JNDI, lihat Sumber Data WebLogic Server di dokumentasi Oracle. Sumber daya terkait JNDI lainnya, seperti perantara pesan JMS, mungkin memerlukan migrasi atau konfigurasi ulang. Untuk informasi selengkapnya tentang konfigurasi JMS, lihat Oracle WebLogic Server 12.2.1.4.0.

Memeriksa konfigurasi domain Anda

Unit konfigurasi utama di WebLogic Server adalah domain. Dengan demikian, file config.xml berisi banyak konfigurasi yang harus Anda pertimbangkan dengan saksama untuk migrasi. File tersebut mencakup referensi ke file XML tambahan yang disimpan di subdirektori. Oracle menyarankan agar Anda biasanya menggunakan Konsol Administrasi untuk mengonfigurasi objek dan layanan yang dapat dikelola WebLogic Server serta mengizinkan WebLogic Server mempertahankan file config.xml. Untuk informasi selengkapnya, lihat File Konfigurasi Domain.

Di dalam aplikasi Anda

Periksa file WEB-INF/weblogic.xml dan/atau file WEB-INF/web.xml.

Menentukan apakah replikasi sesi digunakan

Jika aplikasi Anda bergantung pada replikasi sesi, dengan atau tanpa Oracle Coherence*Web, Anda memiliki dua opsi:

  • Refaktor aplikasi Anda untuk menggunakan database untuk manajemen sesi.
  • Refaktor aplikasi Anda untuk mengeksternalisasi sesi ke Azure Redis Service. Untuk informasi selengkapnya, lihat Azure Cache for Redis.

Untuk semua opsi ini, ada baiknya Anda menguasai bagaimana Weblogic melakukan Replikasi Keadaan Sesi HTTP. Untuk informasi selengkapnya, lihat Replikasi Keadaan Sesi HTTP di dokumentasi Oracle.

Mendokumentasikan sumber data

Jika aplikasi Anda menggunakan database apa pun, Anda perlu mengambil informasi berikut:

  • Apa nama sumber datanya?
  • Apa konfigurasi kumpulan koneksinya?
  • Di mana saya dapat menemukan file JAR driver JDBC?

Untuk informasi selengkapnya tentang driver JDBC di WebLogic, lihat Menggunakan Driver JDBC dengan WebLogic Server.

Tentukan apakah WebLogic telah dikustomisasikan

Tentukan kustomisasi mana yang telah dibuat, dan tangkap apa yang telah dilakukan.

  • Apakah skrip penyalaan telah diubah? Skrip tersebut mencakup setDomainEnv, commEnv, startWebLogic, dan stopWebLogic.
  • Apakah ada parameter khusus yang diteruskan ke JVM?
  • Apakah ada JAR yang ditambahkan ke classpath server?

Menentukan apakah koneksi ke lokal diperlukan

Jika aplikasi Anda perlu mengakses salah satu layanan lokal Anda, Anda harus menyediakan salah satu layanan konektivitas Azure. Untuk informasi selengkapnya, lihat Memilih solusi untuk menyambungkan jaringan lokal ke Azure. Atau, Anda harus memfaktor ulang aplikasi untuk menggunakan API yang tersedia untuk umum yang diekspos sumber daya lokal Anda.

Menentukan apakah Antrean atau Topik Java Message Service (JMS) sedang digunakan

Jika aplikasi Anda menggunakan JMS Queues atau Topik, Anda harus memigrasikannya ke server JMS yang dihosting secara eksternal. Azure Service Bus dan Advanced Message Queuing Protocol (AMQP) dapat menjadi strategi migrasi yang bagus bagi mereka yang menggunakan JMS. Untuk informasi selengkapnya, lihat Menggunakan JMS dengan Azure Service Bus dan AMQP 1.0.

Jika penyimpanan persisten JMS telah dikonfigurasi, Anda harus menangkap konfigurasinya dan menerapkannya setelah migrasi.

Tentukan Apakah Anda menggunakan Pustaka Java EE Bersama yang Anda buat sendiri

Jika menggunakan fitur pustaka Java EE Bersama, Anda memiliki dua opsi:

  • Refaktor kode aplikasi Anda untuk menghapus semua dependensi di pustaka Anda, dan sebagai gantinya gabungkan fungsionalitas langsung ke dalam aplikasi Anda.
  • Tambahkan pustaka tersebut ke classpath server.

Tentukan apakah bundel OSGi digunakan

Jika menggunakan bundel OSGi yang ditambahkan ke server WebLogic, Anda harus menambahkan file JAR yang setara langsung ke aplikasi web Anda.

Tentukan apakah aplikasi Anda berisi kode khusus OS

Jika aplikasi Anda berisi kode apa pun dengan dependensi pada OS host, Anda harus melakukan refaktor untuk menghapus dependensi tersebut. Misalnya, Anda mungkin perlu mengganti penggunaan / atau \ di jalur sistem file dengan File.Separator atau Paths.get.

Menentukan apakah Oracle Service Bus sedang digunakan

Jika aplikasi Anda menggunakan Oracle Service Bus (OSB), Anda harus menangkap cara OSB dikonfigurasi. Untuk informasi selengkapnya, lihat Tentang Penginstalan Oracle Service Bus.

Menentukan apakah aplikasi Anda terdiri dari beberapa WAR

Jika aplikasi Anda terdiri dari beberapa WAR, Anda harus memperlakukan masing-masing WAR tersebut sebagai aplikasi terpisah dan melalui panduan ini untuk masing-masing WAR.

Menentukan apakah aplikasi Anda dikemas sebagai EAR

Jika aplikasi Anda dikemas sebagai file EAR, pastikan untuk memeriksa file application.xml dan weblogic-application.xml serta menangkap konfigurasinya.

Identifikasi semua proses dan daemon luar yang berjalan di server produksi

Jika Anda memiliki proses yang berjalan di luar server aplikasi, seperti memantau daemon, Anda harus menghilangkannya atau memigrasikannya di tempat lain.

Memvalidasi bahwa versi Java yang didukung berfungsi dengan benar

JBoss EAP di Azure App Service mendukung Java 8 dan 11. Oleh karena itu, Anda harus memvalidasi bahwa aplikasi Anda dapat berjalan dengan benar menggunakan versi yang didukung tersebut. Validasi ini sangat penting jika server Anda saat ini menggunakan JDK yang didukung (seperti Oracle JDK atau IBM OpenJ9).

Untuk mendapatkan versi Java Anda saat ini, masuk ke server produksi Anda dan jalankan perintah berikut:

java -version

Menentukan apakah aplikasi Anda bergantung pada pekerjaan terjadwal atau tidak

Pekerjaan terjadwal, seperti tugas Quartz Scheduler atau pekerjaan cron Unix, TIDAK boleh digunakan dengan Azure App Service. Azure App Service tidak akan mencegah Anda menyebarkan aplikasi yang berisi tugas terjadwal secara internal. Namun, apabila skala aplikasi Anda diperluas, pekerjaan terjadwal yang sama dapat berjalan lebih dari satu kali per periode yang dijadwalkan. Situasi ini dapat menyebabkan konsekuensi yang tidak diinginkan.

Untuk menjalankan tugas terjadwal di Azure, pertimbangkan untuk menggunakan Azure Functions dengan Pemicu Timer. Untuk informasi selengkapnya, lihat Pemicu timer untuk Azure Functions. Anda tidak perlu memigrasikan kode pekerjaan itu sendiri ke dalam suatu fungsi. Fungsi ini cukup memanggil URL di aplikasi Anda untuk memicu pekerjaan.

Catatan

Untuk mencegah penggunaan berbahaya, Anda mungkin perlu memastikan bahwa titik akhir pemanggilan pekerjaan memerlukan info masuk. Dalam hal ini, fungsi pemicu perlu memberikan info masuk.

Menentukan apakah WebLogic Scripting Tool (WLST) digunakan

Jika saat ini Anda menggunakan WLST untuk melakukan penyebaran, Anda perlu menilai apa yang dilakukannya. Jika WLST mengubah parameter (runtime) aplikasi Anda sebagai bagian dari penyebaran, Anda harus memastikan parameter tersebut sesuai dengan salah satu opsi berikut:

  • Mereka dieksternalisasi sebagai pengaturan aplikasi.
  • Parameter tertanam dalam aplikasi Anda.
  • Mereka menggunakan JBoss CLI selama penyebaran.

Jika WLST melakukan lebih dari yang disebutkan di atas, Anda akan memiliki beberapa pekerjaan tambahan yang harus dilakukan selama migrasi.

Tentukan apakah aplikasi Anda menggunakan API khusus WebLogic

Jika aplikasi Anda menggunakan API khusus WebLogic, Anda harus merefaktor aplikasi Anda untuk TIDAK menggunakannya. Misalnya, jika Anda telah menggunakan kelas yang disebutkan dalam Referensi API Java untuk Oracle WebLogic Server, Anda telah menggunakan API khusus WebLogic di aplikasi Anda. Peralatan Migrasi Red Hat untuk Aplikasi dapat membantu menghapus dan merefaktor dependensi ini.

Menentukan apakah aplikasi Anda menggunakan Entity Beans atau EJB 2.x-style CMP Beans

Jika aplikasi Anda menggunakan Entity Beans atau EJB 2.x style CMP beans, Anda harus merefaktor aplikasi Anda untuk TIDAK menggunakannya.

Tentukan apakah fitur Klien Aplikasi Java EE digunakan

Jika Anda memiliki aplikasi klien yang terhubung ke aplikasi (server) Anda menggunakan fitur Klien Aplikasi Java EE, Anda perlu merefaktor aplikasi klien Anda dan aplikasi (server) Anda untuk menggunakan API HTTP.

Tentukan apakah rencana penyebaran digunakan

Jika rencana penyebaran digunakan untuk melakukan penyebaran, Anda harus menilai apa yang dilakukan rencana penyebaran. Jika rencana penyebarannya adalah penyebaran langsung, Anda akan dapat menyebarkan aplikasi web Anda tanpa perubahan apa pun. Jika rencana penyebarannya lebih rumit, Anda harus menentukan apakah Anda dapat menggunakan JBoss CLI untuk mengonfigurasi aplikasi Anda dengan benar sebagai bagian dari penyebaran. Jika tidak memungkinkan untuk menggunakan JBoss CLI, Anda harus merefaktor aplikasi sedemikian rupa sehingga rencana penyebaran tidak lagi diperlukan.

Tentukan apakah timer EJB sedang digunakan

Jika aplikasi Anda menggunakan timer EJB, Anda harus memvalidasi bahwa kode timer EJB dapat dipicu oleh setiap instans EAP JBoss secara independen. Validasi ini diperlukan karena ketika App Service Anda diskalakan secara horizontal, setiap timer EJB akan dipicu pada instans EAP JBoss-nya sendiri.

Validasi apakah dan bagaimana sistem file digunakan

Setiap penggunaan sistem file pada server aplikasi akan memerlukan konfigurasi ulang atau, dalam kasus yang jarang terjadi, perubahan arsitektur. Sistem file dapat digunakan oleh modul bersama WebLogic atau oleh kode aplikasi Anda. Anda dapat mengidentifikasi beberapa atau semua skenario berikut.

Konten statis baca-saja

Jika aplikasi Anda saat ini menyajikan konten statik, lokasi alternatif untuk konten statik tersebut akan diperlukan. Anda mungkin ingin mempertimbangkan untuk memindahkan konten statis ke Azure Blob Storage dan menambahkan Azure CDN untuk unduhan secepat kilat secara global.

Konten statis yang diterbitkan secara dinamis

Jika aplikasi Anda memungkinkan konten statis yang diunggah/ diproduksi oleh aplikasi Anda tetapi tidak dapat diubah setelah pembuatannya, Anda dapat menggunakan Azure Blob Storage dan Azure CDN seperti yang dijelaskan di atas, dengan Azure Function untuk menangani unggahan dan refresh CDN. Kami telah menyediakan contoh implementasi untuk Anda gunakan.

Konten dinamis atau internal

Untuk file yang sering ditulis dan dibaca oleh aplikasi Anda (seperti file data sementara), atau file statis yang hanya terlihat oleh aplikasi Anda, Anda dapat memasang Azure Storage ke dalam sistem file App Service.

Tentukan apakah konektor JCA sedang digunakan

Jika aplikasi Anda menggunakan konektor JCA, Anda harus memvalidasi bahwa konektor JCA dapat digunakan di JBoss EAP. Jika implementasi JCA terkait dengan WebLogic, Anda harus merefaktor aplikasi Anda untuk TIDAK menggunakan konektor JCA. Jika dapat digunakan, Anda harus menambahkan JAR ke classpath server dan meletakkan file konfigurasi yang diperlukan di lokasi yang benar dalam direktori server JBoss EAP agar tersedia.

Menentukan apakah aplikasi Anda menggunakan Adaptor Sumber Daya

Jika aplikasi Anda memerlukan Adaptor Sumber Daya (RA), aplikasi tersebut harus kompatibel dengan JBoss EAP. Tentukan apakah RA berfungsi dengan baik pada instans mandiri JBoss EAP dengan menyebarkan RA ke server dan mengonfigurasikannya dengan benar. Jika RA berfungsi dengan baik, Anda harus menambahkan JAR ke classpath server dari instance App Service dan meletakkan file konfigurasi yang diperlukan di lokasi yang benar dalam direktori server JBoss EAP agar tersedia.

Tentukan apakah JAAS digunakan

Jika aplikasi Anda menggunakan JAAS, Anda harus mengetahui bagaimana JAAS dikonfigurasi. Jika konfigurasi tersebut menggunakan database, Anda dapat mengonversikannya menjadi domain JAAS di JBoss EAP. Jika konfigurasi tersebut menggunakan implementasi khusus, Anda harus memvalidasi bahwa konfigurasi tersebut dapat digunakan pada JBoss EAP.

Menentukan apakah pengklusteran WebLogic digunakan

Kemungkinan besar, Anda telah menyebarkan aplikasi Anda di beberapa server WebLogic untuk mencapai ketersediaan tinggi. Azure App Service mampu melakukan penskalaan, tetapi jika Anda telah menggunakan API Kluster WebLogic, Anda harus merefaktor kode Anda untuk menghilangkan penggunaan API tersebut.

Migration

Perangkat Migrasi Red Hat untuk Aplikasi

The Red Hat Migration Toolkit untuk Aplikasi adalah ekstensi gratis untuk Visual Studio Code. Ekstensi ini menganalisis kode dan konfigurasi aplikasi Anda guna memberikan rekomendasi untuk memigrasikan aplikasi Jakarta EE Anda ke JBoss EAP dari server aplikasi lain, seperti menghapus dependensi pada API kepemilikan. Ekstensi juga akan memberikan rekomendasi jika Anda bermigrasi dari lokal ke cloud. Untuk informasi selengkapnya, lihat Gambaran umum Peralatan Migrasi untuk aplikasi.

Isi panduan ini akan membantu Anda mengatasi komponen lain dari perjalanan migrasi, seperti memilih tipe Paket App Service yang benar, mengeksternalisasi keadaan sesi Anda, dan menggunakan Azure untuk mengelola instans EAP Anda, alih-alih antarmuka Manajemen JBoss.

Menyediakan paket App Service

Dari daftar paket layanan yang , pilih paket yang spesifikasinya memenuhi atau melebihi spesifikasi perangkat keras produksi saat ini.

Catatan

Jika Anda berencana untuk menjalankan penyebaran pementasan/kenari atau menggunakan slot penyebaran, paket App Service harus menyertakan kapasitas tambahan tersebut. Sebaiknya gunakan paket Premium atau yang lebih tinggi untuk aplikasi Java.

Buat paket App Service.

Membuat dan Menyebarkan Aplikasi Web

Anda harus membuat Aplikasi Web di Paket App Service untuk setiap file WAR yang disebarkan ke server JBoss EAP Anda.

Catatan

Meskipun dimungkinkan untuk menyebarkan beberapa file WAR ke satu aplikasi web, tindakan ini sangat tidak diinginkan. Menyebarkan beberapa file WAR ke satu aplikasi web mencegah setiap aplikasi menskalakan sesuai dengan tuntutan penggunaannya sendiri. Tindakan ini juga menambah kerumitan pada jalur penyebaran berikutnya. Jika beberapa aplikasi harus tersedia di satu URL, pertimbangkan untuk menggunakan solusi perutean seperti Azure Application Gateway.

Aplikasi Maven

Jika aplikasi Anda dibangun dari file POM Maven, gunakan plugin Webapp untuk Maven untuk membuat Aplikasi Web dan menyebarkan aplikasi Anda. Untuk informasi selengkapnya, lihat bagian Mengonfigurasi plugin Maven di Mulai Cepat: Membuat aplikasi Java di Azure App Service.

Aplikasi Non-Maven

Jika Anda tidak dapat menggunakan plugin Maven, Anda harus memprovisikan Aplikasi Web melalui mekanisme lain, seperti:

Setelah Anda membuat aplikasi web, gunakan salah satu mekanisme penyebaran yang tersedia untuk menerapkan aplikasi Anda. Untuk informasi selengkapnya, lihat Menyebarkan file ke App Service.

Memigrasikan opsi runtime JVM

Jika aplikasi Anda memerlukan opsi runtime tertentu, gunakan mekanisme yang paling tepat untuk menentukannya. Untuk informasi selengkapnya, lihat bagian Atur opsi runtime Java dari Mengonfigurasi aplikasi Java untuk Azure App Service.

Migrasikan parameter yang dieksternalisasi

Jika Anda perlu menggunakan parameter eksternal, Anda harus mengaturnya sebagai pengaturan aplikasi. Untuk informasi selengkapnya, lihat Mengonfigurasi pengaturan aplikasi.

Migrasikan skrip startup

Jika aplikasi asli menggunakan skrip startup kustom, Anda harus memigrasikannya ke skrip Bash. Untuk informasi selengkapnya, lihat Menyesuaikan konfigurasi server aplikasi.

Mengisi rahasia

Gunakan Pengaturan Aplikasi guna menyimpan rahasia khusus untuk aplikasi Anda. Jika Anda bermaksud menggunakan rahasia atau rahasia yang sama di antara beberapa aplikasi, atau Anda memerlukan kebijakan akses dan kemampuan audit yang terperinci, gunakan referensi Azure Key Vault sebagai gantinya. Untuk informasi selengkapnya, lihat bagian Menggunakan Referensi KeyVault di Mengonfigurasi aplikasi Java untuk Azure App Service.

Konfigurasikan domain kustom dan SSL

Jika aplikasi Anda akan terlihat di domain kustom, Anda harus memetakan aplikasi web Anda ke sana. Untuk informasi, lihat Tutorial: Memetakan nama DNS kustom yang sudah ada ke Azure App Service.

Anda kemudian harus mengikat sertifikat TLS/SSL untuk domain tersebut ke Aplikasi Web App Service Anda. Untuk informasi selengkapnya, lihat Mengamankan nama DNS kustom dengan pengikatan data TLS/SSL di Azure App Service.

Memigrasikan sumber data, pustaka, dan sumber daya JNDI

Untuk memigrasikan sumber data, ikuti langkah-langkah di bagian Mengonfigurasi sumber data di Mengonfigurasi aplikasi Java untuk Azure App Service.

Migrasikan dependensi classpath tingkat server tambahan dengan mengikuti petunjuk di bagian JBoss EAP di Mengonfigurasi aplikasi Java untuk Azure App Service.

Migrasikan semua sumber daya JDNI tingkat server bersama tambahan. Untuk informasi selengkapnya, lihat bagian JBoss EAP dari Mengonfigurasi aplikasi Java untuk Azure App Service.

Migrasikan konektor JCA dan modul JAAS

Migrasikan konektor JCA dan modul JAAS apa pun dengan mengikuti instruksi di Pemasangan modul dan dependensi.

Catatan

Jika Anda mengikuti arsitektur satu WAR per aplikasi yang direkomendasikan, pertimbangkan untuk memigrasikan pustaka classpath tingkat server dan sumber daya JNDI ke dalam aplikasi Anda. Tindakan tersebut akan menyederhanakan tata kelola komponen dan manajemen perubahan secara signifikan. Jika Anda ingin menyebarkan lebih dari satu WAR per aplikasi, Anda harus meninjau salah satu panduan pendamping kami yang disebutkan di awal panduan ini.

Memigrasikan pekerjaan terjadwal

Minimal, Anda harus memindahkan tugas terjadwal ke VM Azure sehingga tugas tersebut tidak lagi menjadi bagian dari aplikasi Anda. Sebagai alternatif, Anda dapat memilih untuk memodernisasi tugas terjadwal tersebut menjadi Java yang digerakkan oleh peristiwa menggunakan layanan Azure seperti Azure Functions, SQL Database, dan Azure Event Hubs.

Mulai ulang dan pengujian awal

Terakhir, Anda harus memulai ulang Aplikasi Web untuk menerapkan semua perubahan konfigurasi. Setelah selesai memulai ulang, verifikasi bahwa aplikasi Anda berjalan dengan benar.

Pasca-migrasi

Sekarang setelah Anda memigrasikan aplikasi Anda ke Azure App Service, Anda harus memverifikasi bahwa aplikasi tersebut berfungsi sesuai harapan. Setelah Anda melakukannya, kami memiliki beberapa rekomendasi untuk Anda yang dapat membuat aplikasi Anda lebih Cloud asli.

Rekomendasi