¿Cómo puede mi transición multinacional de una plataforma de desarrollo a otra?

10

Estoy trabajando en el departamento de TI de una gran empresa internacional. Estamos desarrollando diferentes aplicaciones de Intranet para el negocio (Quejas, Reembolsos, Service Desk, etc.). Ahora decidimos migrar de la plataforma PHP a .NET (la integración con MS CRM Dynamics, Exchange y MS Office puede ser una de las muchas razones). Como hay alrededor de 20 aplicaciones diferentes que la empresa está utilizando en la plataforma PHP actual, tendremos que encontrar la mejor manera de moverlas a la nueva plataforma. No quiero entrar en detalles sobre cómo convertir el código, etc., ya que mientras migramos queremos mejorar todas estas aplicaciones.

Así que se nos ocurrieron 2 formas principales de mover estas aplicaciones:

  1. Admite solo una plataforma. ¿Qué significaría? Cree una página de inicio y, literalmente, migre todas las aplicaciones como están a .NET (sin mejorarlas mientras lo hacemos). Después de que se ejecute Nueva intranet, comenzaríamos a reconstruir las aplicaciones migradas y a mejorarlas. Eso nos ahorraría el desarrollo de la intranet en .NET al tener que admitir la plataforma PHP.

  2. Admite ambas plataformas por algún tiempo. Eso significaría construir solo una página de inicio y 1 o 2 nuevas aplicaciones (que no existen en nuestra plataforma PHP). Poner esto a disposición de los usuarios pero no quitar la plataforma PHP (incorporaríamos menús y enlaces para facilitar a los usuarios moverse entre las aplicaciones en la página PHP y la nueva). Luego comenzaríamos a reescribir las aplicaciones PHP mientras las mejoramos.

Ahora no estoy seguro de qué sería mejor, por un lado (opción 1) potencialmente haremos todo más fácil para los usuarios al no obligarlos a usar dos plataformas diferentes al mismo tiempo. Aunque no verán ninguna mejora al tener la nueva plataforma, aparte de que todo se vea mejor, la funcionalidad de las aplicaciones en la nueva plataforma será la misma por algún tiempo. También creo que agregaríamos a nosotros mismos (IT dep) más trabajo, ya que esencialmente escribiríamos cada aplicación dos veces.
Por otro lado, en la opción dos (2) usuarios tendrían peor experiencia ya que dos plataformas se ven diferentes, pero se darían cuenta de los beneficios de la nueva plataforma a medida que se mueven nuevas aplicaciones.

¿Alguno de ustedes se ha encontrado con algo así? ¿Qué elegirías? ¿O tal vez hay una forma diferente y mejor de las que he presentado? Me gustaría saber qué piensas y cómo abordarías eso.

Daniel Gruszczyk
fuente
1
¿No es el # 2 un paso al # 1?
Tae-Sung Shin
No, estas son 2 cosas diferentes. En 1, migraríamos toda la intranet antes de permitir que los usuarios la usaran y luego trabajaríamos para mejorar las aplicaciones. En 2, migraríamos la parte esencial de la intranet, permitiríamos a los usuarios usarla y luego comenzaríamos a migrar otras aplicaciones y mejorarlas mientras migramos ...
@greengit: lea el tema, la integración con otras aplicaciones empresariales críticas es una de las razones. Sin embargo, mi pregunta no es sobre "Por qué migrar", sino "Cómo migrar".
Daniel Gruszczyk
Leí el tema y tuve la misma pregunta. Dudo mucho si el proyecto podría tener un costo justificable. ¿Puede decirnos el nombre de la empresa para que podamos venderla en corto? ;)
mcottle
jaja, no me importan los costos para ser honesto, ya que solo soy un estudiante de TI en un puesto de trabajo en la empresa. Solo estoy pidiendo mi propio conocimiento ... Aparentemente, mi gerente justificó los costos lo suficiente como para tener el visto bueno del CEO ...
Daniel Gruszczyk

Respuestas:

5

Consideremos los dos escenarios:

Migración de todo a la vez

Mientras migra su base de código, sus clientes seguirán usando sus aplicaciones existentes. Dado que la migración tomará una cantidad de tiempo no trivial, esto significa que necesitará tener un equipo de mantenimiento en la antigua base de código, para la corrección de errores y el desarrollo de características. Cada cambio que realice en la antigua base de código debe suceder en la nueva base de código. Terminará escribiendo cada línea de código el doble de tiempo que la migración no se haya realizado, lo que lo hace más costoso cuanto más tiempo demore en migrar. Entonces, todo se reduce a: ¿cuál será el tiempo de respuesta para la migración completa? Sus costos de desarrollo se dispararán mientras dure el tiempo de respuesta.

Migración pieza por pieza

En este escenario, tendrá un mejor control sobre el doble esfuerzo, pero aún tendrá muchos costos adicionales. Su implementación involucrará dos plataformas separadas, con el doble de problemas de implementación y recursos de servidor adicionales requeridos. A menos que tenga una aplicación muy modularmente organizada, encontrará que a menudo hay un código en la otra plataforma que no es la que necesita, lo que causa un esfuerzo adicional de portabilidad y mantenimiento. Mientras no se realice la migración, su costo de desarrollo será mayor. Al mismo tiempo, la presión de la función significará que le llevará mucho tiempo terminar la migración.

Conclusión

Por experiencia personal puedo decirte dos cosas:

  • Cambiar los lenguajes de programación rara vez vale la pena. A partir de un análisis de costo-beneficio, es muy poco probable que sea rentable cambiar a .NET desde PHP. Entonces mi consejo principal es: no lo hagas. Intenta resolver tus problemas con tu código base existente.
  • Pieza por pieza es el mejor enfoque, pero tendrá dificultades para hacerlo a nivel de módulos de aplicación. Descubrirá que tendrá que desarrollar y mantener características en ambos lados de la arquitectura mientras la migración no esté completa. Puede ser una buena idea priorizar funciones que no se basan en lo que más necesitan los clientes, sino en lo que limitará la cantidad de doble esfuerzo (reduciendo así el costo).
Joeri Sebrechts
fuente
Has hecho puntos muy interesantes. Aunque no depende de mí si cambiamos la plataforma o no, y estaré trabajando para la compañía hasta finales de septiembre (estoy con ellos en un puesto de trabajo único). Sin embargo, cambiar de PHP a .NET podría ser una buena idea, ya que el antiguo marco PHP que teníamos necesitaría algunos trabajos PRINCIPALES, bases de datos también, el sistema que la compañía usa en este momento es VIEJO y fue creado por personas que no tenían grandes habilidades de desarrollo. ..
Daniel Gruszczyk
También mi pregunta sería: ¿es una buena idea 'cambiar congelar' en una plataforma antigua? Lo que quiero decir con eso es que cualquier cambio en los sistemas existentes en la plataforma PHP, aparte de las correcciones de errores, se congela hasta que comencemos a mover la aplicación dada a .NET. Esa es la parte de mi gerente del plan para la migración ...
Daniel Gruszczyk
Si este es un sistema no trivial, es muy poco probable que un cambio de congelación funcione en la práctica. Si alguien realmente necesita una función, la escalará a un nivel superior al de su gerente, y se verá obligado a realizar cambios. Además, las correcciones de errores por sí mismas pueden ocupar una cantidad considerable de recursos del equipo. Y siempre tenga en cuenta que los sistemas antiguos han visto muchos ajustes, y es probable que los nuevos diseños olviden todas esas pequeñas correcciones de una línea, que tendrán que suceder nuevamente para que los usuarios acepten el producto rediseñado.
Joeri Sebrechts
Un punto más: si el sistema se va a reconstruir, ¿qué medidas de seguridad existen para garantizar una mejor calidad de código esta vez? He visto una aplicación que se reescribió 4 veces debido a problemas de calidad de código y plataforma.
Joeri Sebrechts
2

Por razones financieras, la mayoría de las empresas con las que he trabajado adoptaron el segundo enfoque, con razón podría agregar. Se necesita mucho dinero, tiempo y riesgos para lograr el # 1. El usuario entendería en su mayoría el n. ° 2, siempre y cuando vea su progreso e interacción con ellos. En esta economía magra y media, dudo que alguien adopte el enfoque # 1.

Tae-Sung Shin
fuente
Ese fue exactamente mi pensamiento. Mi gerente quiere seguir adelante con el n. ° 1, que me resulta difícil de entender.
2

Los enfoques del Big Bang rara vez son constructivos en lo que respecta a los usuarios finales. Aconsejaría en contra y, para ser honesto, no puedo creer que nadie lo considere seriamente como una opción dada la cantidad de aplicaciones en cuestión.

Me inclinaría a ir con la opción dos y manejar las reelaboraciones caso por caso. Es cierto que esto puede llevar más tiempo que el enfoque uno en papel, pero en realidad, está abriendo una cantidad significativa de riesgo comercial al tomar el enfoque uno y realmente no me gustaría estar cerca para las llamadas de soporte el primer día, incluso si hay solo un pequeño problema al final del usuario.

Además, si la gran mayoría de sus aplicaciones basadas en servicios web ya están escritas en PHP, ¿cómo está disponible la experiencia .Net?

Creo que de cualquier manera sus usuarios tendrán que experimentar un cambio, ya sea big bang (muchas llamadas de soporte) o poco a poco (mayor familiaridad). Me inclino a pensar que realmente no ha evaluado exactamente cuánto trabajo tendrá que hacer para pasar de ser casi completamente php a completamente .Net tampoco.

temptar
fuente
Supongo que es más complicado que solo admitir dos plataformas separadas o no. De cualquier manera no es un buen enfoque ... ¡Gracias por su tiempo!
Daniel Gruszczyk
1

En primer lugar, estoy de acuerdo con todo lo que dice Joeri.

La primera opción es realmente horrible. Si haces esto y no continúas con el soporte como describe Joeri, cierras el soporte potencialmente durante un par de años hasta donde lo ve tu cliente. Después de dos años, obtienen efectivamente el mismo sitio con todos los mismos problemas que han llegado a conocer y odiar durante los últimos años. Además, existe el riesgo de que el mercado haya cambiado en el ínterin y que la aplicación quede obsoleta y necesite una renovación importante. Además, si cierra el soporte durante dos años, ¿qué cree que sucederá con todas las solicitudes de servicio? No se irán Al menos algunos de sus usuarios se "volverán deshonestos" y desarrollarán sistemas de misión crítica en (probablemente) Acceso para tapar los huecos en los sistemas que está reescribiendo, y aún así terminará admitiendo dos plataformas ...

La opción dos significa que admitirá ambas tecnologías durante un período prolongado de tiempo. Este período de tiempo será más largo de lo que piensa y podría terminar con un ecosistema fragmentado permanentemente, es decir, una cantidad significativa de código PHP que no es económico reescribir mezclado con el código .NET más nuevo.

Empuje hacia atrás contra quien sugiera esto Será mucho más barato escribir código para integrar las aplicaciones PHP con los productos que sugiera que reescribir todo en .NET y luego integrar el código reescrito con los productos, no lo olvide, la integración no ocurrirá mágicamente si usa .NET .

Una cosa más, tome el número de líneas de código PHP y póngalo en una herramienta COCOMO 2 para tener una idea de cuánto tiempo y cuántos desarrolladores necesitará para completar la reescritura.

mcottle
fuente
Buen punto. Entonces, ¿qué haría si no dependiera de usted si migrara el sistema o no? ¿Qué enfoque elegirías? O mybe, ¿hay otro enfoque para ellos que he enumerado? Si su gerente no estuviera de acuerdo con usted, ¿trataría de demostrar que su enfoque es mejor?
Daniel Gruszczyk
Escriba las aplicaciones PHP de una manera más "orientada al servicio" en capas. Utilice un bus de servicios empresariales para almacenar la interfaz entre PHP y Microsoft Land. La clave es hacer la estimación de COCOMO, que debería asustar a las reescrituras de su gerente.
mcottle
1

Tienes una tercera opción: -

Migre el código php a su servidor de Windows e ISS (¡el mismo en el que planea ejecutar .NET!)

Luego puede agregar nuevas aplicaciones en .NET (y convertir lentamente algunas más antiguas a .NET) mientras presenta a sus usuarios lo que parece un sistema único.

James Anderson
fuente
PHP de hecho se ejecuta bajo IIS
Bart