Saya bekerja di departemen TI perusahaan besar internasional. Kami sedang mengembangkan berbagai aplikasi Intranet yang berbeda untuk bisnis (Pengaduan, Rabat, Service Desk dll). Sekarang kami memutuskan untuk bermigrasi dari platform PHP ke .NET (integrasi dengan MS CRM Dynamics, Exchange, dan MS Office menjadi beberapa alasan). Karena ada sekitar 20 aplikasi berbeda yang digunakan bisnis pada platform PHP saat ini, kita harus menemukan cara terbaik untuk memindahkan semuanya ke platform baru. Saya tidak ingin masuk ke detail bagaimana mengkonversi kode dll, karena sementara kami melakukan migrasi kami ingin meningkatkan semua aplikasi ini.
Jadi kami menemukan 2 cara utama untuk memindahkan aplikasi ini:
Mendukung hanya satu platform. Apa artinya itu? Buat beranda dan migrasi semua aplikasi secara harfiah ke .NET (tanpa memperbaikinya saat kami melakukannya). Setelah intranet baru berjalan, kami akan mulai membangun kembali aplikasi yang dimigrasi dan memperbaikinya. Itu akan menyelamatkan kita mengembangkan intranet di .NET sambil harus mendukung platform PHP.
Mendukung kedua platform untuk beberapa waktu. Itu berarti membangun hanya beranda dan 1 atau 2 aplikasi baru (yang tidak ada di platform PHP kami). Menyediakan ini untuk pengguna tetapi tidak melepas platform PHP (kami akan memasukkan menu dan tautan untuk memudahkan pengguna untuk berpindah antar aplikasi di halaman PHP dan yang baru). Kemudian kita akan mulai menulis ulang aplikasi PHP sambil meningkatkannya.
Sekarang saya tidak yakin apa yang akan lebih baik, di satu sisi (opsi 1) kami akan berpotensi membuat segalanya lebih mudah bagi pengguna dengan tidak memaksa mereka untuk menggunakan dua platform yang berbeda secara bersamaan. Meskipun mereka tidak akan melihat peningkatan memiliki platform baru, selain dari segalanya tampak lebih bagus, fungsionalitas aplikasi pada platform baru akan sama untuk beberapa waktu. Juga saya pikir kita akan menambahkan diri kita (IT dep) lebih banyak pekerjaan karena pada dasarnya kita akan menulis setiap aplikasi dua kali.
Di sisi lain dalam opsi dua (2) pengguna akan memiliki pengalaman yang lebih buruk karena dua platform terlihat berbeda, tetapi mereka akan menyadari manfaat dari platform baru saat aplikasi baru dipindahkan.
Apakah ada di antara Anda yang menemukan sesuatu seperti itu? Apa yang akan kamu pilih? Atau mungkin ada yang berbeda, cara yang lebih baik untuk yang telah saya sajikan? Saya ingin tahu apa yang Anda pikirkan dan bagaimana Anda akan mendekati itu.
Jawaban:
Mari kita pertimbangkan kedua skenario ini:
Migrasi semuanya sekaligus
Saat Anda memigrasi basis kode Anda, pelanggan Anda akan tetap menggunakan aplikasi yang ada. Karena migrasi akan memakan waktu yang tidak sepele, ini berarti Anda perlu memiliki tim pemeliharaan pada basis kode lama, untuk perbaikan bug dan pengembangan fitur. Setiap perubahan yang Anda buat di basis kode lama perlu terjadi di basis kode baru. Anda akhirnya akan menulis setiap baris kode dua kali selama migrasi tidak dilakukan, membuatnya lebih mahal semakin lama untuk bermigrasi. Jadi, semuanya bermuara pada: apa waktu penyelesaian untuk migrasi penuh nantinya? Biaya pengembangan Anda akan meroket selama waktu penyelesaian berlangsung.
Migrasi sepotong demi sepotong
Dalam skenario ini Anda akan memiliki kontrol yang lebih baik atas upaya ganda, tetapi Anda masih akan memiliki banyak biaya tambahan. Penempatan Anda akan melibatkan dua platform terpisah, dengan dua kali masalah penyebaran dan sumber daya server tambahan yang dibutuhkan. Kecuali jika Anda memiliki aplikasi yang sangat modular, Anda akan menemukan bahwa sering ada kode di platform lain selain yang Anda perlukan, sehingga menyebabkan upaya porting dan pemeliharaan tambahan. Selama migrasi tidak dilakukan, biaya pengembangan Anda akan lebih tinggi. Pada saat yang sama, tekanan fitur akan berarti Anda butuh waktu yang sangat lama untuk menyelesaikan migrasi.
Kesimpulan
Dari pengalaman pribadi saya dapat memberi tahu Anda dua hal:
sumber
Untuk alasan keuangan, sebagian besar perusahaan tempat saya bekerja menggunakan pendekatan kedua, yang seharusnya saya tambahkan. Dibutuhkan banyak uang, waktu, dan risiko bagi mereka untuk mencapai # 1. Sebagian besar pengguna akan mengerti # 2 selama mereka melihat kemajuan dan interaksi Anda dengan mereka. Dalam ekonomi ramping & kejam ini, saya ragu ada orang yang akan mengambil pendekatan # 1.
sumber
Pendekatan big bang jarang konstruktif sejauh menyangkut pengguna akhir. Saya akan menyarankan untuk tidak jujur dan saya tidak percaya ada orang yang serius mempertimbangkannya sebagai pilihan mengingat jumlah aplikasi yang bersangkutan.
Saya akan cenderung untuk pergi dengan opsi dua dan menangani kembali bekerja berdasarkan kasus per kasus. Memang ini mungkin membutuhkan waktu lebih lama daripada pendekatan satu di atas kertas tetapi pada kenyataannya, Anda membuka sejumlah besar risiko bisnis dengan mengambil pendekatan satu dan saya benar-benar tidak ingin berada di sekitar untuk panggilan dukungan pada hari pertama jika ada bahkan hanya satu masalah kecil di ujung pengguna.
Selain itu, jika sebagian besar aplikasi berbasis layanan web Anda sudah ditulis dalam php, bagaimana keahlian .Net yang tersedia?
Saya pikir baik cara pengguna Anda harus mengalami perubahan, baik big bang (memberi banyak panggilan dukungan) atau sedikit demi sedikit (meningkatkan keakraban). Saya cenderung berpikir Anda belum benar-benar mengukur dengan tepat berapa banyak pekerjaan yang harus dilakukan untuk beralih dari hampir semua php menjadi sepenuhnya. Net juga.
sumber
Pertama, saya setuju dengan semua yang dikatakan Joeri.
Opsi satu benar-benar mengerikan. Jika Anda melakukan ini dan tidak melanjutkan dukungan seperti yang dijelaskan Joeri, Anda mematikan dukungan selama beberapa tahun sejauh yang dilihat pelanggan. Setelah dua tahun mereka secara efektif mendapatkan situs yang sama dengan semua masalah yang sama yang telah mereka ketahui dan benci selama beberapa tahun terakhir. Ditambah risiko bahwa pasar telah berubah untuk sementara dan membuat aplikasi usang & membutuhkan perombakan besar. Juga, jika Anda mematikan dukungan selama dua tahun, apa yang menurut Anda akan terjadi pada semua permintaan layanan? Mereka tidak akan pergi. Paling tidak beberapa pengguna Anda akan "bangkrut" dan mengembangkan sistem misi kritis di (mungkin) Akses untuk menyumbat celah dalam sistem yang Anda tulis ulang - maka Anda tetap akan mendukung dua platform ...
Opsi dua berarti bahwa Anda akan mendukung kedua teknologi untuk jangka waktu yang lama. Periode waktu ini akan lebih lama dari yang Anda pikirkan dan Anda bisa berakhir dengan ekosistem yang terfragmentasi secara permanen - yaitu sejumlah besar kode PHP yang tidak ekonomis untuk ditulis ulang bercampur dengan kode .NET yang lebih baru.
Dorong kembali keras terhadap siapa pun yang menyarankan ini. Akan jauh lebih murah untuk menulis kode untuk mengintegrasikan aplikasi PHP dengan produk yang Anda sarankan daripada menulis ulang semuanya. NET kemudian mengintegrasikan kode yang ditulis ulang dengan produk, jangan lupa, integrasi tidak akan secara ajaib terjadi jika Anda menggunakan .NET .
Satu hal lagi, ambil jumlah baris kode PHP dan masukkan ke dalam alat COCOMO 2 untuk mendapatkan ide berapa lama dan berapa banyak pengembang yang Anda perlukan untuk menyelesaikan penulisan ulang.
sumber
Anda memiliki opsi ketiga: -
Migrasikan kode php ke server windows Anda dan ISS (sama dengan yang Anda rencanakan untuk menjalankan .NET!)
Anda kemudian dapat menambahkan aplikasi baru di .NET (dan secara perlahan mengonversi beberapa yang lebih lama ke .NET) sambil menghadirkan kepada pengguna Anda apa yang tampak seperti satu sistem.
sumber