En la actualidad hay cientos de elementos tecnológicos para facilitar el trabajo de desarrollo de sistemas. Sin embargo encontrar la correcta combinación entre tantos componentes puede llevar a un proyecto al fracaso ya que se dificulta el entendimiento y multiplica el riesgo en cada actualización de los mismos. La arquitectua que se propone en este diagrama contiene los elementos mínimos necesarios para desarrollar aplicaciones empresariales que puedan correr en cualquier dispositivo. Así mismo facilita el mantenimiento ya que cualquier cambio al mismo solo se realiza en una capa y en automático se refleja en todos los dispositivos existentes hasta el momento.
Se elaboraron una serie de pruebas entre los dos lenguajes mas utilizados para desarrollar sistemas empresariales (DOT NET y Java) tratando de homologar su uso para ser más precisos en la prueba.
Para ello se configuró el marco de trabajo JAVA SPRING para que resuelva las peticiones como lo hace DOTNET y se le agregaron elementos como tiles o hibernate para resolver validaciones y llamados a la
base de datos de igual manera.
De este resultado se consiguió una arquitectura homógenea entre los dos lenguajes dejando la decisión de su uso solo a costo y soporte ya que incluso la sintaxis entre ambos lenguajes es muy parecida.
Bajo esta visión Microsoft conjunta todos estos elementos en su IDE (Con costo de licencia), el cual se encarga de las actualizaciones automáticas, despliega en su servidor de aplicaciones y
controla los elementos del sistema operativo (Con costo). Es decir nos da muy poco control pero con soporte total en los elementos mas importantes que sostienen operando a nuestra aplicación.
Con Java tenemos el control de todo a costo mínimo, sin embargo hay un riesgo que una actualización de los elementos de terceros (código libre) altere nuestro producto de forma grave o ante
un error de sus elementos dejar sin sistema a nuestros usuarios por un largo tiempo.
Bajo el argumento presentado en la selección del marco tecnológico, el IDE de desarrollo de Microsoft solo es uno (Visual Studio). En el caso de Java se evaluó Eclipse y Netbeans ya que son los únicos
gratuitos que trabajan con un servidor de aplicaciones ya integrado. La recomendandación es Netbeans ya que integra GlassFish y componentes nativos de Oracle como lo es JPA. Esta orientado 100% a desarrollos en
Java mientras que Eclipse funciona con plugins para distintos lenguajes. En mi experiencia entre mas abierto sea un componente mayor es el riesgo de colapso por la cantidad de dependencias en su configuración.
Ademas Netbeans trae integrados el uso de SPRING, Hibernate, Struts, JPA y los elementos necesarios para conexión y uso de PostgreSQL mientras que en ECLIPSE todo esto es configurable.
Finalmente Eclipse trabaja nativamente con TOMCAT el cual es A.S. muy ligero y por ende poco sólido para un sistema de alta demanda empresarial.
Git es un controlador de versiones mas completo que Subversion (SVN), ademas permite trabajar y actualizar repositorios sin tener una conexión al servidor central el cual generalmente es interno, por lo que permite de manera transparente trabajar fuera del lugar del trabajo cuando se requiera. La ventaja de SVN es que es muy fácil de entender ya que generalmente solo utiliza dos funciones básicas: SUBMIT y COMMIT.
La Base de Datos es un elemento vital de cualquier desarrollo, sin embargo se recomienda utilizarla solo como persistencia y en caso de operaciones que requieran altos niveles de I/O, utilizar funciones y procedimientos
(Por ejemplo la ejecución de una nómina). Bajo esta perspectiva
el uso de bases de datos de uso libre permite reducir costos y minimizar riesgos ya que practicamente toda la lógica del sistema corre en el servidor de aplicaciones.
La base de datos libre más popular es MySQL sin embargo fue adquirida por Oracle en 2008 y actualmente tiene un vacío legal en su contrato que indica que cualquier Sistema que quiera distribuir
la base de datos deberá compartir el código con la comunidad de Software Libre. En el caso de PostgreSQL su uso es totalmente libre, sin restricciones y es muy parecida en objetos, seguridad y sintaxis.
Uno de las problemáticas que busca resolver este modelo es facilitar el mantenimiento de un sistema empresarial ante la gran cantidad de dispositivos que existen hoy en día. Para ello se evaluó el uso de Xamarin Forms el cual logra con un solo código generar aplicaciones para Windows, OSX, dispositos Android, IOS y Windows Phone. Mediante el uso de Servicios Web y el formato JSON se integran validaciones, lógica de negocio y persistencia igual en un solo lado que sirve a paginas HTML o al desarrollo en Xamarin. Finalmente estas páginas HTML utilizan elementos como BOOTSTRAP y jQUery para que sean 100% responsivas por lo que se ven mediante un navegador en tabletas, televisiones y computadoras de manera uniforme sin importar su orientación (Vertical u Horizontal) o marca.
El uso de la nube reduce costos significativamente al reducir al mínimo el uso de Sitios en la empresa y su respectivo costo de operación (Aire Acondicionado, Energía Electrica, No Breaks,
Elementos redundantes, Seguridad Física, etc).
En esta evaluación si se decide por la tecnología NET la mejor opción es tener el IIS en Azure ya que al ser el nativo de Microsoft integra todos sus elementos, facilitando su mantenimiento y uso.
En el caso de la base de datos POSTGRESQL y de decidir la tecnología JAVA, AWS presenta la mejor oferta costo-beneficio, ademas de un gran nivel de soporte y a mi punto de vista el más facil de mantener y configurar.
Cabe mencionar que tambien se evaluo GOOGLE Cloud y la nube de Oracle.
Tecnología | DOT NET | Java |
---|---|---|
Hospedaje en la Nube | Azure | AWS |
Base de Datos | Postgres 9 (Nativa) | Postgres 9 |
Servidor de Aplicaciones | IIS 10 (Nativo) | Glassfish 4.1 |
Framework | NET Framework 4.5 | Java 8 |
Vista | Razor + WPF | JSF + Tiles |
Responsivo | Angular JS, Bootstrap, JQuery | Angular JS, Bootstrap, JQuery |
Entidad | Microsoft Entity F. 6 | Hibernate 4 + JPA |
Servicios Web | WCF | Spring WS |
Seguridad | Microsoft Identity Framework | Spring 4 Acegi |
Controlador | Microsoft MVC 4.5 | Spring 5 |
IDE | VS CE 2017 | Netbeans 4.2 |
Desarrollo APPS | Xamarin Forms 2017 | Xamarin Forms 2017 |
Control de Versiones | Git 2.14 | Git 2.14 |