Arquitectura de Soluciones Homologada

Introducción


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.

Diagrama por capas tecnológicas

 

Elementos

Árbol de Decisiones

De clic en cada botón para mostrar u ocultar cada uno de los etalles de la evaluación para seleccionar la tecnología propuesta:

DOT NET vs JAVA

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.

Netbeans vs Eclipse

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 vs SVN

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.

MySQL vs PostgreSQL

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.

 

Detalle Técnico por Elemento Evaluado

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