Saat ini saya sedang melakukan beberapa pekerjaan untuk perusahaan yang menjalankan aplikasi web lama yang dibangun di atas Java Servlets (sistemnya sudah ada sebelum JSP, meskipun mereka sekarang menggunakannya saat membuat halaman baru). Basis kodenya berantakan karena dibangun selama sekitar 10 tahun di atas kerangka kerja yang ketinggalan jaman. Mereka memiliki sangat sedikit konsistensi dalam basis kode (aplikasi telah dikembangkan oleh berbagai orang selama bertahun-tahun, sebagian besar tidak lagi berfungsi di sini), tidak ada konsep KERING (setiap halaman pada dasarnya dibuat dari awal) banyak yang tidak dapat dibaca / samar kode dan secara umum infrastruktur yang sangat tidak konsisten.
Saat saya bekerja di sini, saya telah menambahkan fitur-fitur modern/mencoba membersihkan basis kode sedikit. Saya menambahkan beberapa jQuery ke tempat saya terpapar, memperkenalkan sedikit keamanan dengan validasi input, membersihkan beberapa modul untuk menggunakan prinsip JavaScript yang tidak mengganggu, dll. Pekerjaan saya di sini adalah pada modul baru jadi saya tidak banyak terpapar pada modul lama logika. Saya telah mencoba memperkenalkan praktik terbaik untuk semua pekerjaan saya di bawah infrastruktur mereka saat ini, tetapi saya terpaksa memanggil banyak kode lama mereka untuk membuat pekerjaan saya konsisten.
Mereka telah mencapai titik di mana mereka sekarang mempertimbangkan pembaruan besar-besaran pada sistem. Mereka ingin meningkatkan pemeliharaan basis kode dan mencoba untuk pindah ke semacam kerangka kerja modern/aplikasi tipe MVC. Banyak sistem mendahului XHTML dengan markup gaya sebaris, panggilan javascript:function(), tanpa pengujian unit, sebelum Hibernate, dll. Ada campuran pembuatan html out.println dan pemanggilan jsp dari dalam Servlet.
Beberapa aplikasi yang mereka lihat termasuk Wicket, Struts, Tapestry, dan mungkin Grails. Permasalahannya adalah, perpindahan ke salah satu dari sistem ini mungkin memerlukan penulisan ulang besar-besaran terhadap sistem yang sudah digunakan dan mereka tidak mampu untuk memulai kembali.
Pertanyaan saya adalah: Apa cara terbaik untuk memigrasikan basis kode lama seperti ini ke kerangka kerja yang lebih modern sambil tetap menjaga logika bisnis yang ada (tidak ada gunanya menulis ulang hal-hal yang telah diuji dan berfungsi).
Beberapa ide yang sedang dipikirkan antara lain:
tulis sistem templating internal yang akan berfungsi dengan infrastruktur mereka saat ini (hasilkan halaman dengan cara yang konsisten)
kode port ke kerangka kerja seperti permadani (menggunakan kembali banyak kode lamanya)
menulis ulang sistem dari awal menggunakan kerangka kerja modern tetapi menyalin logika dari sistem lama (jika memungkinkan)
pertahankan sistem lama apa adanya dan cukup perbarui halaman depan untuk memberikan tampilan yang lebih modern (mungkin lebih baik jika diberikan waktu/uang, dll.)
apa cara terbaik untuk memperbarui kode Java Servlet lama ke kerangka kerja modern (menggunakan praktik modern untuk memudahkan pemeliharaan, pengujian unit, KERING) sambil menjaga logika tetap utuh?
wawasan apa pun diterima.