Bermigrasi dari Oracle WebLogic ke Apache Tomcat (ToMee) di Amazon ECS - AWS Prescriptive Guidance

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Bermigrasi dari Oracle WebLogic ke Apache Tomcat (ToMee) di Amazon ECS

Anya Epishcheva dan Harshad Gohil, Amazon Web Services

Ringkasan

Pola ini membahas langkah-langkah untuk memigrasikan sistem Oracle Solaris SPARC lokal yang menjalankan Oracle WebLogic ke instalasi berbasis kontainer Docker yang menjalankan Apache ToMee (Apache Tomcat dengan dukungan kontainer tambahan) dengan Amazon Elastic Container Service (Amazon ECS).

Untuk informasi tentang migrasi database yang terkait dengan aplikasi yang Anda migrasi dari Oracle WebLogic ke Tomcat, lihat pola migrasi database dalam katalog ini. 

Praktik terbaik

Langkah-langkah untuk memigrasi aplikasi web Java dan Java Enterprise Edition (Java EE) bervariasi, tergantung pada jumlah sumber daya khusus kontainer yang digunakan oleh aplikasi. Aplikasi berbasis pegas biasanya lebih mudah untuk dimigrasi, karena mereka memiliki sejumlah kecil dependensi pada wadah penerapan. Sebaliknya, aplikasi Java EE yang menggunakan Enterprise JavaBeans (EJBs) dan sumber daya kontainer terkelola seperti kumpulan thread, Java Authentication and Authorization Service (JAAS), dan Container-Managed Persistence (CMP) memerlukan lebih banyak usaha. 

Aplikasi yang dikembangkan untuk Oracle Application Server sering menggunakan suite Oracle Identity Management. Pelanggan yang bermigrasi ke server aplikasi open-source sering memilih untuk mengimplementasikan kembali identitas dan manajemen akses menggunakan federasi berbasis SAML. Orang lain menggunakan Oracle HTTP Server Webgate untuk kasus ketika bermigrasi dari Oracle Identity Management suite bukanlah pilihan. 

Aplikasi web Java dan Java EE adalah kandidat yang bagus untuk penerapan pada layanan AWS yang berbasis Docker, seperti AWS Fargate dan Amazon ECS. Pelanggan sering memilih gambar Docker dengan versi terbaru dari server aplikasi target (seperti ToMee) dan Java Development Kit (JDK) yang sudah diinstal sebelumnya. Mereka menginstal aplikasi mereka di atas image Docker dasar, mempublikasikannya di registri Amazon Elastic Container Registry (Amazon ECR), dan menggunakannya untuk penerapan aplikasi mereka yang dapat diskalakan di AWS Fargate atau Amazon ECS. 

Idealnya, penerapan aplikasi bersifat elastis; yaitu, jumlah instance aplikasi masuk atau keluar, tergantung pada lalu lintas atau beban kerja. Ini berarti bahwa instance aplikasi harus online atau dihentikan untuk menyesuaikan kapasitas permintaan. 

Saat memindahkan aplikasi Java ke AWS, pertimbangkan untuk membuatnya tanpa kewarganegaraan. Ini adalah prinsip arsitektur utama AWS Well-Architected Framework yang akan memungkinkan penskalaan horizontal menggunakan kontainerisasi. Misalnya, sebagian besar aplikasi web berbasis Java menyimpan informasi sesi pengguna secara lokal. Untuk bertahan dari penghentian instans aplikasi karena penskalaan otomatis di Amazon Elastic Compute Cloud EC2 (Amazon) atau karena alasan lain, informasi sesi pengguna harus disimpan secara global sehingga pengguna aplikasi web dapat terus bekerja dengan lancar dan transparan tanpa menghubungkan kembali atau masuk kembali ke aplikasi web. Ada beberapa opsi arsitektur untuk pendekatan ini, termasuk Amazon ElastiCache untuk Redis, atau menyimpan status sesi dalam database global. Server aplikasi seperti ToMee memiliki plugin, yang memungkinkan penyimpanan dan manajemen sesi melalui Redis, database, dan penyimpanan data global lainnya.

Gunakan alat logging dan debugging yang umum dan terpusat yang mudah diintegrasikan dengan Amazon CloudWatch dan AWS X-Ray. Migrasi memberikan kesempatan untuk meningkatkan kemampuan siklus hidup aplikasi. Misalnya, Anda mungkin ingin mengotomatiskan proses build sehingga perubahan mudah dilakukan menggunakan pipeline continuous integration dan continuous delivery (CI/CD). Ini mungkin memerlukan perubahan pada aplikasi sehingga dapat digunakan tanpa downtime. 

Prasyarat dan batasan

Prasyarat

Versi produk

  • Oracle WebLogic OC4 J, 9i, 10g 

  • Tomcat 7 (dengan Java 1.6 atau lebih baru)

Arsitektur

 Tumpukan teknologi sumber

  • Aplikasi web yang dibangun menggunakan Oracle WebLogic

  • Aplikasi web menggunakan otentikasi Oracle Webgate atau SAMP

  • Aplikasi web terhubung ke Oracle Database versi 10g dan yang lebih baru

Tumpukan teknologi target

Arsitektur target

AWS Cloud architecture diagram showing VPC, application subnets, and shared services account components.

Alat

Untuk beroperasi di ToMee, aplikasi Java harus dibangun kembali menjadi file.war. Dalam beberapa kasus, perubahan aplikasi mungkin diperlukan untuk mengoperasikan aplikasi di ToMee; Anda harus memeriksa untuk memastikan bahwa opsi konfigurasi yang diperlukan dan properti lingkungan didefinisikan dengan benar.  

Selain itu, pencarian Java Naming and Directory Interface (JNDI) dan ruang nama JavaServer Pages (JSP) harus didefinisikan dengan benar. Pertimbangkan untuk memeriksa nama file yang digunakan oleh aplikasi untuk menghindari tabrakan penamaan dengan pustaka T bawaan. Misalnya, persistence.xml adalah nama file yang digunakan oleh kerangka Apache OpenJPA (yang dibundel dengan OpenEJB di ToMe) untuk tujuan konfigurasi. File persistence.xml di PUI berisi deklarasi kacang kerangka Spring.  

ToMee versi 7.0.3 dan yang lebih baru (Tomcat 8.5.7 dan yang lebih baru) mengembalikan respons HTTP 400 (permintaan buruk) untuk mentah (tidak dikodekan) dengan karakter khusus. URLs Respons server muncul sebagai halaman kosong untuk pengguna akhir. Versi ToMee dan Tomcat sebelumnya memungkinkan penggunaan karakter khusus tertentu yang tidak dikodekan URLs; Namun, itu dianggap tidak aman, seperti yang dinyatakan di situs web CVE-2016-6816. Untuk mengatasi masalah pengkodean URL, URLs diteruskan ke browser secara langsung melalui JavaScript harus dikodekan dengan metode encodeUri () alih-alih digunakan sebagai string mentah.

Setelah Anda menyebarkan file.war di ToMee, pantau log mulai ke Linux cat untuk setiap pustaka bersama yang hilang dan ekstensi khusus Oracle untuk menambahkan komponen yang hilang dari pustaka Tomcat. 

Prosedur umum

  • Konfigurasikan aplikasi di ToMee.

  • Mengidentifikasi dan mengkonfigurasi ulang file konfigurasi khusus server aplikasi dan sumber daya dari sumber ke format target.

  • Identifikasi dan konfigurasi ulang sumber daya JNDI.

  • Sesuaikan namespace dan pencarian EJB ke format yang diperlukan oleh server aplikasi target (jika ada).

  • Konfigurasikan ulang peran keamanan khusus wadah aplikasi JAAS dan pemetaan prinsip (jika ada).

  • Package aplikasi dan library bersama ke dalam file.war.

  • Terapkan file.war di ToMee dengan menggunakan wadah Docker yang disediakan.

  • Pantau log awal untuk mengidentifikasi pustaka bersama yang hilang dan ekstensi deskriptor penerapan. Jika ada yang ditemukan, kembali ke tugas pertama.

  • Uji aplikasi yang diinstal terhadap database Amazon RDS yang dipulihkan.

  • Luncurkan arsitektur lengkap dengan load balancer dan Amazon ECS cluster dengan mengikuti petunjuk di Deploy Docker Containers.

  • Perbarui URLs untuk menunjuk ke penyeimbang beban.

  • Perbarui database manajemen konfigurasi (CMDB).

Epik

TugasDeskripsiKeterampilan yang dibutuhkan
Lakukan penemuan aplikasi (jejak keadaan saat ini dan garis dasar kinerja).BA, Pimpinan Migrasi
Validasi versi dan mesin basis data sumber dan target.DBA
Validasi desain aplikasi sumber dan target (identitas dan manajemen sesi).DBA, Insinyur Migrasi, Pemilik Aplikasi
Identifikasi persyaratan perangkat keras dan penyimpanan untuk instance server target.DBA, SysAdmin
Pilih jenis instans yang tepat berdasarkan kapasitas, fitur penyimpanan, dan fitur jaringan.DBA, SysAdmin
Identifikasi persyaratan keamanan akses jaringan untuk basis data sumber dan target.DBA, SysAdmin
Identifikasi strategi dan perkakas migrasi aplikasi.DBA, Pimpinan Migrasi
Lengkapi desain migrasi dan panduan migrasi untuk aplikasi.Bangun Pimpinan, Pimpinan Migrasi
Lengkapi runbook migrasi aplikasi.Membangun Timbal, Cutover Lead, Testing Lead, Migration Lead
TugasDeskripsiKeterampilan yang dibutuhkan
Buat cloud pribadi virtual (VPC).SysAdmin
Buat grup keamanan.SysAdmin
Konfigurasikan dan mulai instans Amazon RDS DB.DBA, SysAdmin
Konfigurasikan penerapan Amazon ECS.SysAdmin
Package aplikasi Anda sebagai image Docker.SysAdmin
Dorong gambar ke registri Amazon ECR (atau lewati langkah ini dan dorong ke cluster Amazon ECS).SysAdmin
Konfigurasikan definisi tugas untuk aplikasi dan opsi layanan Amazon ECS.SysAdmin
Konfigurasikan klaster Anda, tinjau setelan keamanan, dan setel peran AWS Identity and Access Management (IAM).SysAdmin
Luncurkan penyiapan Anda dan jalankan pengujian sesuai dengan runbook migrasi aplikasi Anda.SysAdmin
TugasDeskripsiKeterampilan yang dibutuhkan
Dapatkan izin tim jaminan keamanan Anda untuk memindahkan data produksi ke AWS.DBA, Insinyur Migrasi, Pemilik Aplikasi
Buat dan dapatkan akses ke titik akhir untuk mengambil file cadangan database.DBA
Gunakan mesin database asli atau alat pihak ketiga untuk memigrasikan objek dan data database.DBA
Jalankan pengujian yang diperlukan dari runbook migrasi aplikasi untuk mengonfirmasi migrasi data yang berhasil.DBA, Insinyur Migrasi, Pemilik Aplikasi
TugasDeskripsiKeterampilan yang dibutuhkan
Buat permintaan perubahan (CR) untuk migrasi.Timbal Cutover
Dapatkan persetujuan CR untuk migrasi.Timbal Cutover
Ikuti strategi migrasi aplikasi dari runbook migrasi aplikasi.DBA, Insinyur Migrasi, Pemilik Aplikasi
Tingkatkan aplikasi (jika diperlukan).DBA, Insinyur Migrasi, Pemilik Aplikasi
Fungsional lengkap, non-fungsional, validasi data, SLA, dan tes kinerja.Menguji Lead, Pemilik Aplikasi, Pengguna Aplikasi
TugasDeskripsiKeterampilan yang dibutuhkan
Dapatkan tanda tangan dari aplikasi atau pemilik bisnis.Timbal Cutover
Jalankan latihan topik tabel untuk berjalan melalui semua langkah runbook cutover.DBA, Insinyur Migrasi, Pemilik Aplikasi
Alihkan klien aplikasi ke infrastruktur baru.DBA, Insinyur Migrasi, Pemilik Aplikasi
TugasDeskripsiKeterampilan yang dibutuhkan
Matikan sumber daya AWS sementara.DBA, Insinyur Migrasi, SysAdmin
Meninjau dan memvalidasi dokumen proyek.Pimpinan Migrasi
Kumpulkan metrik di sekitar waktu untuk bermigrasi,% manual vs. alat, penghematan biaya, dll.Pimpinan Migrasi
Tutup proyek dan berikan umpan balik.Pemimpin Migrasi, Pemilik Aplikasi

Referensi

Tutorial dan video