Mi empresa necesita modernizar la plataforma operativa ¿Qué solución hay?
Algo que pasa con frecuencia: el software que utiliza nuestra empresa sigue siendo válido para las necesidades de la compañía, pero de repente se queda obsoleta. Esto sucede cuando llega el final del ciclo de vida de otros elementos, tanto de hardware como de software. Entonces llega el momento de modernizar la plataforma operativa de la empresa, lo que puede resultar una tarea tan compleja como actualizar el propio software que se utiliza.
Uno de los principales motivos para afrontar esta actualización, como hemos mencionado, es el de la obsolescencia. Esto es debido a que, en muchas ocasiones, aunque las aplicaciones sigan resultando válidas, la plataforma necesaria para ejecutarlo ha dejado de recibir soporte. En los casos en que el fabricante de componentes como servidores, sistemas operativos o bases de datos siguen en el negocio, es muy probable que haya definido una vía para la actualización.
Sin embargo, desde que se anuncia el abandono de un producto o se actualiza con nuevas versiones que no son compatibles con las anteriores hay un periodo de adaptación de varios años. Si nos encontramos en un escenario en que la empresa necesita modernizar su plataforma operativa es probable que este camino no se haya seguido.
En función del alcance de los componentes a actualizar, el cambio será más profundo. Cambiar el sistema operativo en máquinas todavía válidas tendrá efecto sobre la aplicación. En función del lenguaje de programación y de los recursos del sistema que utilice será tanto más necesario actualizar o adaptar las aplicaciones. Si se trata de renovar una plataforma completa, por ejemplo, llevando una arquitectura de mainframe a la nube, es probable que sea necesario llevar a cabo actualizaciones a todos los niveles.
Algo que pasa con frecuencia: el software que utiliza nuestra empresa sigue siendo válido para las necesidades de la compañía, pero de repente se queda obsoleta. Esto sucede cuando llega el final del ciclo de vida de otros elementos, tanto de hardware como de software. Entonces llega el momento de modernizar la plataforma operativa de la empresa, lo que puede resultar una tarea tan compleja como actualizar el propio software que se utiliza.
Uno de los principales motivos para afrontar esta actualización, como hemos mencionado, es el de la obsolescencia. Esto es debido a que, en muchas ocasiones, aunque las aplicaciones sigan resultando válidas, la plataforma necesaria para ejecutarlo ha dejado de recibir soporte. En los casos en que el fabricante de componentes como servidores, sistemas operativos o bases de datos siguen en el negocio, es muy probable que haya definido una vía para la actualización.
Sin embargo, desde que se anuncia el abandono de un producto o se actualiza con nuevas versiones que no son compatibles con las anteriores hay un periodo de adaptación de varios años. Si nos encontramos en un escenario en que la empresa necesita modernizar su plataforma operativa es probable que este camino no se haya seguido.
En función del alcance de los componentes a actualizar, el cambio será más profundo. Cambiar el sistema operativo en máquinas todavía válidas tendrá efecto sobre la aplicación. En función del lenguaje de programación y de los recursos del sistema que utilice será tanto más necesario actualizar o adaptar las aplicaciones. Si se trata de renovar una plataforma completa, por ejemplo, llevando una arquitectura de mainframe a la nube, es probable que sea necesario llevar a cabo actualizaciones a todos los niveles.
Modernizar la plataforma operativa hardware con virtualización
Una de las soluciones más inmediatas es el uso de tecnologías de virtualización. Mediante estas, es posible descartar una plataforma hardware obsoleta, manteniendo la misma arquitectura y software. En este caso, los diversos servidores de la arquitectura original se replicarán en máquinas virtualizadas con la misma configuración que la original.
Esta solución presenta varias ventajas. Es sencilla y rápida de poner en práctica. Además, permite hacer el cambio gradualmente, reemplazando máquinas físicas por virtuales una a una. Otra de las ventajas interesantes que tiene es la posibilidad de que las máquinas virtualizadas dispongan de más recursos que las originales. Además, los costes no son elevados e incluso pueden suponer un ahorro en un plazo de tiempo muy breve.
Sin embargo, presentan también algunos inconvenientes. Uno de ellos es que se actualiza solo la capa de hardware. Por lo tanto, la obsolescencia del resto de elementos permanecerá tal cual. Si el objetivo es modernizar el sistema operativo, las bases de datos y otros componentes de software, esta alternativa no es la más adecuada. En muchas ocasiones, se trata solo de un primer paso para comenzar a trabajar en entornos cloud y abordar un proyecto más ambicioso.
Desarrollar middleware para modernizar parte de la plataforma
Otra estrategia, apta para sustituir elementos de software independientes, es la de desarrollar middleware a medida. Es un sistema muy utilizado cuando la empresa ha estado trabajando con un proveedor y ha desarrollado una dependencia de este. Si se deja a un lado la conveniencia de desarrollar aplicaciones que dependen de interfaces externos que no controlamos, es una situación corriente. Sobre todo, en el caso de sistemas de pago, mayoristas del sector turístico, etc. Un middleware permite modernizar la plataforma operativa o parte de esta sin que ciertas partes de la aplicación se vean afectadas por el cambio.
Cuando nos encontramos ante un caso de este tipo, es probable que el problema llegue hasta diferentes capas del software. Esto abre la opción de modificar gran parte de la aplicación o incluso de rehacerla. Pero esta alternativa es cara y está poco justificada cuando el objetivo es cambiar de proveedor. En estos casos, el middleware debe actuar como adaptador y ser capaz de conseguir que la aplicación original siga funcionando contra un interfaz idéntico a aquel para el que se desarrolló.
Internamente, el nuevo componente será capaz de convertir todas las peticiones de la aplicación al formato utilizado por el nuevo proveedor. De hecho, este middleware debería seguir mejores prácticas de diseño y permitir la creación de nuevos conectores con otros proveedores sin hacer modificaciones a la interfaz. Es decir, lo que el software original debía haber implementado en su arquitectura.
Cambios con bases de datos
Un caso especial de este problema es el cambio de base de datos. Son muchas las aplicaciones que ejecutan queries SQL escritas para un determinado dialecto. Esto hace a la aplicación incompatible con otros sistemas de bases de datos, que pueden ser necesarios en el momento de modernizar la plataforma operativa. Los frameworks de programación modernos lo resuelven mediante ORMs que construyen consultas específicas para cada base de datos.
Sin embargo, si la aplicación es compleja y necesita que todas las consultas estén optimizadas, habrá consultas en el propio código. Lo ideal es que esas consultas no estén en las clases principales, sino que se incluyan mediante inyección de dependencias. Esto permite cargar en tiempo de ejecución una clase encargada de esa consulta concreta en función de la base de datos que se esté utilizando.
No es fácil resolver este problema en un software ya existente, aunque sí es viable analizar las sentencias SQL que se ejecutan y traducirlas al nuevo sistema de bases de datos para que siga funcionando igual. En estos casos, además, se puede aprovechar para optimizar algunas de estas consultas y mejorar su rendimiento.
Por último, hay que tener en cuenta que la arquitectura de los sistemas influye, muy frecuentemente, en la del propio software. Por eso, es importante considerar la posibilidad de rediseñar este desde cero utilizando, si es necesario, otras soluciones como paso intermedio.
Los proyectos de modernización de la plataforma operativa pueden tener varios niveles de complejidad. Por eso es necesario un estudio detallado de las necesidades y oportunidades que se plantean en el proceso. Una empresa especializada puede aportar su conocimiento y experiencia para que el proyecto tenga éxito y pueda completarse con los mejores costes posibles.
Modernizar la plataforma operativa hardware con virtualización
Una de las soluciones más inmediatas es el uso de tecnologías de virtualización. Mediante estas, es posible descartar una plataforma hardware obsoleta, manteniendo la misma arquitectura y software. En este caso, los diversos servidores de la arquitectura original se replicarán en máquinas virtualizadas con la misma configuración que la original.
Esta solución presenta varias ventajas. Es sencilla y rápida de poner en práctica. Además, permite hacer el cambio gradualmente, reemplazando máquinas físicas por virtuales una a una. Otra de las ventajas interesantes que tiene es la posibilidad de que las máquinas virtualizadas dispongan de más recursos que las originales. Además, los costes no son elevados e incluso pueden suponer un ahorro en un plazo de tiempo muy breve.
Sin embargo, presentan también algunos inconvenientes. Uno de ellos es que se actualiza solo la capa de hardware. Por lo tanto, la obsolescencia del resto de elementos permanecerá tal cual. Si el objetivo es modernizar el sistema operativo, las bases de datos y otros componentes de software, esta alternativa no es la más adecuada. En muchas ocasiones, se trata solo de un primer paso para comenzar a trabajar en entornos cloud y abordar un proyecto más ambicioso.
Desarrollar middleware para modernizar parte de la plataforma
Otra estrategia, apta para sustituir elementos de software independientes, es la de desarrollar middleware a medida. Es un sistema muy utilizado cuando la empresa ha estado trabajando con un proveedor y ha desarrollado una dependencia de este. Si se deja a un lado la conveniencia de desarrollar aplicaciones que dependen de interfaces externos que no controlamos, es una situación corriente. Sobre todo, en el caso de sistemas de pago, mayoristas del sector turístico, etc. Un middleware permite modernizar la plataforma operativa o parte de esta sin que ciertas partes de la aplicación se vean afectadas por el cambio.
Cuando nos encontramos ante un caso de este tipo, es probable que el problema llegue hasta diferentes capas del software. Esto abre la opción de modificar gran parte de la aplicación o incluso de rehacerla. Pero esta alternativa es cara y está poco justificada cuando el objetivo es cambiar de proveedor. En estos casos, el middleware debe actuar como adaptador y ser capaz de conseguir que la aplicación original siga funcionando contra un interfaz idéntico a aquel para el que se desarrolló.
Internamente, el nuevo componente será capaz de convertir todas las peticiones de la aplicación al formato utilizado por el nuevo proveedor. De hecho, este middleware debería seguir mejores prácticas de diseño y permitir la creación de nuevos conectores con otros proveedores sin hacer modificaciones a la interfaz. Es decir, lo que el software original debía haber implementado en su arquitectura.
Cambios con bases de datos
Un caso especial de este problema es el cambio de base de datos. Son muchas las aplicaciones que ejecutan queries SQL escritas para un determinado dialecto. Esto hace a la aplicación incompatible con otros sistemas de bases de datos, que pueden ser necesarios en el momento de modernizar la plataforma operativa. Los frameworks de programación modernos lo resuelven mediante ORMs que construyen consultas específicas para cada base de datos.
Sin embargo, si la aplicación es compleja y necesita que todas las consultas estén optimizadas, habrá consultas en el propio código. Lo ideal es que esas consultas no estén en las clases principales, sino que se incluyan mediante inyección de dependencias. Esto permite cargar en tiempo de ejecución una clase encargada de esa consulta concreta en función de la base de datos que se esté utilizando.
No es fácil resolver este problema en un software ya existente, aunque sí es viable analizar las sentencias SQL que se ejecutan y traducirlas al nuevo sistema de bases de datos para que siga funcionando igual. En estos casos, además, se puede aprovechar para optimizar algunas de estas consultas y mejorar su rendimiento.
Por último, hay que tener en cuenta que la arquitectura de los sistemas influye, muy frecuentemente, en la del propio software. Por eso, es importante considerar la posibilidad de rediseñar este desde cero utilizando, si es necesario, otras soluciones como paso intermedio.
Los proyectos de modernización de la plataforma operativa pueden tener varios niveles de complejidad. Por eso es necesario un estudio detallado de las necesidades y oportunidades que se plantean en el proceso. Una empresa especializada puede aportar su conocimiento y experiencia para que el proyecto tenga éxito y pueda completarse con los mejores costes posibles.
Comments (0)