Más de 200 proyectos implementados

¿Qué importancia tiene una buena arquitectura de software en un proyecto a gran escala?




La creación de un software es como la construcción de una casa o edificio. Para tener un resultado exitoso, robusto y estable, se requiere de una serie de cimientos y estructuras que permitan unir todas las partes y secciones de la casa, para así lograr que sus habitantes puedan interactuar con los diferentes espacios de forma satisfactoria.

Para desarrollar un software se debe manejar la misma metodología; crear una estructura tecnológica óptima para que éste cumpla al 100% sus objetivos. ¿Cómo se logra esto? Con una arquitectura de software. 

Se conoce como arquitectura de software a los elementos que conforman un sistema, se trata de la estructura bajo la cual están diseñados y su interacción entre ellos. Esta estructura permite entender cómo funciona el sistema desde su componente más profundo, hasta el más superficial y cómo estos se relacionan entre sí para lograr un resultado positivo. 

La arquitectura de software también se relaciona con aspectos como rendimiento, usabilidad, presupuesto, tecnología e incluso cuestiones estéticas. Para implementarla de manera adecuada es recomendable apoyarse de una metodología de desarrollo, la cual ofrece principios básicos para su desarrollo.
Todo desarrollo de software inicia con la creación de esta estructura. Para lograr definir la directriz que se le dará a la arquitectura, se deben conocer las necesidades del negocio, para de esta forma determinar si la arquitectura será muy rígida o puede tener características flexibles. Si la arquitectura no está bien planeada y alineada a los objetivos, ésta no cumplirá con su cometido y presentará problemas durante su operación.

Dicho lo anterior, existen una serie de elementos clave que deben existir en el diseño de la arquitectura de software;
1.      Cuidar la construcción y uso de bases de datos. Las bases de datos son las que alimentarán gran parte del sistema por lo que juegan un papel fundamental en el diseño de la arquitectura. Recuerda que estas deben alinearse a las necesidades del negocio y no al revés.
2.      Seleccionar las herramientas y componentes necesarios para optimizar los procesos. Para que un desarrollo de software sea 100% relevante y funcional para la operación, debe unificar servicios de automatización de procesos e integración de aplicaciones. Esto debe ser colocado de forma estratégica, desde el inicio del diseño de la arquitectura.
3.      Para que un software pueda ser funcional por un largo periodo de tiempo, debe ser auditable y medible. Es decir, se debe crear un ambiente en donde el código pueda ser evaluado, medido y regulado. 
Dicho lo anterior pasemos a un ejemplo;
Imagina que eres el Gerente de Finanzas de un corporativo que cuenta con 80 puntos de ventas y una red de 100,000 distribuidores. Requieres de un sistema que permita automatizar la operación de tu personal administrativo y tu fuerza de distribución. Estás interesado en un sistema robusto que este conformado por diversos componentes que estén alineados a tu estrategia comercial.  
Una buena opción de arquitectura sería una basada en un servidor centralizado. ¿Cómo funciona?



La arquitectura, desde un nivel macro, comienza con la creación de una base de datos centralizada que se encuentra en un servidor en la nube que no es accesible, más que a través de una VPN (Infraestructura de red. Su función es crear una red virtual en la nube, que al momento de que algún servidor o equipo se conecta a ella es como si ésta estuviera en la misma locación, aunque no lo esté)
Por otro lado, existe un servidor en el que se encuentra un servicio que se encarga de conectarse a la base de datos. Ambos servidores se encuentran en la misma red, esto quiere decir que se pueden comunicar entre sí. Sin embargo, las peticiones, consultas o envíos de información que se hacen a la base de datos, no se hacen de forma directa, sino que se hacen a través de este servicio web, el cual valida si una petición viene de una identidad conocida o no y con base a esto aceptar o rechazar la petición. En caso de aceptarla, el servicio se comunica con la base de datos y ésta procesa la petición. Debido a la importancia que tiene la base de datos en esta arquitectura, este proceso tiene una barrera de seguridad que protege la información que llega a esta base. 

Otro elemento a tomar en cuenta para el diseño de la arquitectura son las sucursales. La base de datos centralizada nutre de información a los puntos de venta (computadoras) que hay en cada una de las sucursales. Estas generan una gran cantidad de transacciones durante doce horas de operación de lunes a sábado, por lo que es de suma importancia que éstas tengan conexión a la base de datos para consultar y modificar información.

Todos los puntos de venta se conectan al servidor través de la VPN para hacer el envío de solicitudes a la base de datos, de lo contrario no se podría interactuar. Cada sucursal puede tener más de un punto de venta operando, pero todos deben estar conectados a un mismo servidor local, el cual cuenta con una réplica de la base de datos. Esto permite una operación offline, es decir, en caso de no contar con internet o de perder la conexión con la VPN, se sigue operando de forma local hasta que detecta una conexión y sincroniza la información modificada con el servidor de la nube que posee la base de datos centralizada.

De esta forma se puede consultar y modificar; categorías de productos, productos, precios, inventario, facturas, ventas, distribuidores, ordenes de surtido, sucursales, empleados, y otros datos que se encuentra en la base de datos.

¿Cómo se nutre la base de datos y como ésta es visible para el personal de la empresa? A través de la creación de 3 componentes;

·        Backoffice: Permite administrar el alta de distribuidores, sucursales, productos, imágenes, etc.
·        Sistema central: Permite administra alta de puntos de venta y usuarios, así como sus roles y permisos específicos.

·        Oficina virtual: Permite a los distribuidores comprar productos, ver su red, así como las compras de la misma.  Así como generar un reporte de comisiones de su red.

(Estos tres componentes están en la nube, pero no requieren de una VPN)

¿Qué es lo que ofrece esta arquitectura centralizada?
  • ·        Operar offline

  • ·        Tener una base de centralizada que se sincroniza de forma constante, haciendo que todas las sucursales a nivel nacional cuenten con la información actualizada después de cada compra. Esto trae como resultado;

o   Control de inventarios
o   Facturación al día
o   Información financiera actualizada
o   Saber al instante si se debe hacer un re surtido de productos
o   Control de comisiones a los distribuidores

Uno de los retosde esta arquitectura es el diseño de la base de datos, la cual contiene grandes volúmenes de información que nutren a todos los componentes.

Tras este ejemplo, puede quedar un poco más claro la importancia de un diseño de arquitectura para un desarrollo de software.

¡Conoce el caso de éxito!