Por ser elementos que pueden ser de una naturaleza más técnica, aquí es donde hay que poner atención porque cada uno de estos tres factores tienen implicaciones profundas y todos tienen sus pros y contras, pero lo importante es que los conozcas y los tomes en cuenta en tus decisiones.
Arquitectura – Aunque puede haber variaciones, los dos grandes tipos de arquitectura de sistemas de información son “ambiente cliente-servidor” y “web”. ¿Qué quieren decir estos y qué implica usar uno u otro?
Tradicionalmente los primeros sistemas modernos son diseñados bajo la arquitectura denominada cliente-servidor. Esta arquitectura se caracteriza por tener un software instalado en tu dispositivo – computadora, laptop, tablet, móvil – el cliente, y otra parte del software está instalada y operando en un servidor centralizado el cual puede ser propio en tus oficinas o bien en el centro de operaciones del proveedor o en “la nube” bajo tu control o de tu proveedor.
Una ventaja de este tipo de arquitectura es que tiende a ser robusta, consume recursos de forma distribuida ya que usa la capacidad del dispositivo como la computadora y comparte el trabajo con el servidor. Muchas veces esto también permite que sigas operando si es que pierdes conexión con el servidor central – dependiendo del diseño del software. En general, este modelo te puede dar mayor control y autonomía.
Desventajas de este modelo es que requiere muchas veces de equipo del personal más moderno con mayor capacidad y si hay cambios o actualizaciones en el software, muchas veces se necesita instalar las nuevas versiones en cada computadora, tablet o móvil lo cual puede incrementar complejidad de operaciones y coordinación. También debes tomar en cuenta la complejidad operativa y los costos relacionados al servidor – desde la compra del equipo o su contratación a los costos que eso implica – electricidad, seguridad, otros gastos de infraestructura y el personal especializado para administrarlo. Aún con la opción de que el proveedor asuma ciertas responsabilidades de su administración y el uso de servicios en la nube, todo eso conlleva una responsabilidad y costos.
El otro tipo de arquitectura popular es Web la cual usa tecnologías y plataformas de Internet lo cual se traduce a poder acceder a las aplicaciones desde cualquier punto con acceso a Internet. Esta arquitectura se presta más a negocios o empresas dinámicas que requieren poder trabajar en remoto, de forma distribuida o desde casa. Esto da mayor flexibilidad y puede reducir los costos del equipo requerido por el personal porque simplemente necesitan un navegador para acceder. Su desventaja es de que, dependiendo de la arquitectura del software, se necesita de una conexión a Internet para operar, aunque ya hay formas de desarrollar las aplicaciones para que se pueda trabajar fuera de línea algunas operaciones en caso de estar ubicado en lugares con poca o mala cobertura y al restablecerse la conexión, se sincronizan lo datos y transacciones.
¿Qué es la nube? Estos son servicios de uso de servidores centralizado, usualmente brindados por grandes proveedores como Amazon, Google, Microsoft, Oracle y otros, los cuales alquilas por consumo de la capacidad de recursos.
Licenciamiento – Hoy en día encontramos dos grandes modelos de licenciamiento de software. La primera, el licenciamiento tradicional, es cuando adquieres el derecho de uso del software por parte del fabricante de forma perpetua, donde usualmente se te entrega en medio físico (CDs, DVD, Disco) o descarga. El software es para ser instalado y utilizado en infraestructura propia, muchas veces en tu oficina en tus servidores. En síntesis, esto es una compra del software.
Los pros de este tipo de licenciamiento es de que haces un único pago y tienes uso del aplicativo a perpetuidad. Esto también tiene ciertas implicaciones que las puedes tomar como pros o contras, pero son una realidad. Este tipo de licenciamiento generalmente es más alto por ser un único pago y se queda tal cual como se te entrega. Puede que la misma licencia incluya o no un paquete de soporte de reparación de errores o bugs durante un período – usualmente un año. En algunos casos hay un cobro anual por mantenimiento que puede ser entre un 10% y un 20% del valor de la licencia – este puede o no incluir actualizaciones dentro de la misma versión o a versiones nuevas. También puede ser que el software después de un periodo, usualmente cuatro o cinco años, el fabricante deje de dar soporte sobre esa versión y requieras actualizar. Esta actualización puede ser gratuita si pagaste el mantenimiento anual o bien a un costo reducido por ser un cliente existente. En algunos casos el fabricante requiere de que pagues el costo completo, en particular si no estabas pagando un mantenimiento anual, pero realmente la estrategia comercial del fabricante la determinan ellos. Lo importante de que tengas conocimiento de estos escenarios, los analices y que así no haya sorpresas más adelante.
El otro modelo de licenciamiento por subscripción donde se te otorga uso del software por un periodo específico. Al vencerse el periodo tienes la opción de renovar o no, lo cual básicamente es similar a una renta del software.
Los pros de este modelo son de que el costo de entrada es menor y te puede dar la oportunidad de probarlo sin un compromiso tan alto. Usualmente por ser una subscripción, está también incluye las actualizaciones, incluso entre versiones del software, y mejoras al producto y el soporte en resolución de bugs durante el periodo de la subscripción. Como un contra del modelo de subscripción se puede considerar que tiene un costo recurrente y el software no es tuyo.
Para ambos modelos siempre es importante tomar en cuenta el punto de vista del proveedor o fabricante del software. Pregúntate ¿Qué le incentiva mantener el software, actualizarlo, continuamente mejorar y responder ante nuevas tendencias de mercado, dar un buen servicio e incluso considerar la simple viabilidad a largo plazo del negocio como fabricante de software?
Los otros elementos a considerar en relación a licenciamiento son los detalles… el ¿qué se incluye y cómo se estructura? Dependiendo del fabricante y su estrategia comercial esto puede ser complejo, pero vale la pena analizarlo para que después no te encuentres con sorpresas. Las variaciones pueden ser vastas, pero básicamente debes considerar o entender cómo exactamente se estructura la licencia y cuáles son sus componentes. Considera la estructura de módulos, que hacen y que no hacen, la dependencia entre ellos – puede ser que para lograr cierta funcionalidad en el Módulo A necesites uso del C. También contempla cómo puede evolucionar tu negocio al mediano plazo y que funcionalidad necesitarás conforme crezcas, cuántos usuarios necesitarás, cómo se adquieren, los usuarios están estructurados solo para uso en ciertos módulos u operaciones, tienen algunas restricciones, cuánto cuestan, etc. Los escenarios o estructuras pueden ser muy complejos que en sí esa complejidad puede ser un criterio de evaluación, pero sí es crítico que los entiendas como parte de tu proceso de evaluación.
Servicios – En el proceso de adquirir el software puede que la decisión que tomes pueda requerir de algunos servicios adicionales para operar. Estos puede que los brinde el mismo proveedor del software, el implementador o que dependa de ti de adquirirlos. Algunos ejemplos de esto puede ser de obtener servidores, servicios de hosting o servicios especializados de algún componente de la plataforma o stack – sistema operativo, base de datos, balanceo de carga del servidor web, seguridad entre otros.
En algunos casos, el proveedor puede que ofrezca una solución “llave en mano” donde ellos se hagan cargo de toda la gestión de infraestructura y te brinden el software totalmente como un servicio, como pagar el internet. Esto se conoce como SaaS (Software as a Service) por sus siglas en inglés o Software como Servicio. Esto puede ser una buena opción si es que no cuentas con la capacidad técnica en la empresa y ojo, es importante distinguir entre una capacidad técnica de personal altamente calificado como administrador de sistemas y bases de datos versus una función de soporte técnico de equipo hardware – son cosas muy muy distintas.