En los últimos años, el mercado de las tecnologías de información ha experimentado una gran evolución, poniendo a disposición de las empresas nuevas estrategias y tecnologías como Big Data, Artificial Intelligence, Machine Learning o Internet of Things, que han visto potenciado su desarrollo gracias al paradigma que emerge del ecosistema cloud.
En este punto de madurez de esta tecnología, y tras 14 años desarrollando diferentes roles en empresas tecnológicas, se me hace oportuno pararme a reflexionar sobre el fenómeno de la nube desde un doble punto de vista, el personal y el profesional, intentado reflejar la transición de las soluciones tradicionales, también conocidas como on-premise, a las nuevas soluciones cloud, concretamente, el surgimiento de la nube pública.
A estas alturas prácticamente todo el mundo está familiarizado con el concepto cloud, (“nube” en castellano) o SaaS (Software as a Service). Muchos profesionales del sector también lo están con términos más avanzados como cloud pública, IaaS (Infraestructure as a Service), PaaS (Platform as a Service) y servicios gestionados (o tecnologías serverless) que aparecen en la escena hace relativamente poco.
Personalmente, me incluyo entre aquellos que, si bien llevan algunos años en el “mundo cloud”, con mi recientemente incorporación a Keepler he descubierto un nuevo marco de posibilidades. En este artículo trataré de plasmar lo mejor posible conceptos clave y, sobre todo, intentaré resaltar cómo en la actualidad todas estas soluciones coexisten y en el futuro, seguramente, convergirán cada vez más.
Conceptos clave en entorno cloud
Antes de seguir adelante, vamos a repasar algunos conceptos y terminología empleada de manera cronológica para poder entender mejor el fondo del artículo.
#SaaS #IaaS #PaaS > Entendiendo conceptos clave en el ámbito del #cloud Clic para tuitearOn-premise: Con este nombre nos referimos al software y plataformas que se ejecutan en localizaciones que, normalmente, pertenecen a la empresa que lo usa, aunque también pueden estar externalizados en CPDs (Centros de Procesamiento de Datos) ofrecidos por empresas que prestan este servicio de manera privada. De esta forma, este software suele estar instalado dentro de los CPDs en servidores, comprados o alquilados, administrados y mantenidos por personal de la empresa. Este tipo de tecnología tiene unas implicaciones que no podemos pasar por alto como:
- El aprovisionamiento de infraestructura (espacio físico, la red, la energía, la seguridad…).
- El software para que los servidores funcionen (sistema operativo, antivirus, parches…).
- El software empresarial del que se quiera hacer uso (servidores de bases de datos, servidores de aplicaciones, soluciones de CRM, BI, ERP…).
Como podemos imaginar, estas tareas generan unos costes que, a priori, podríamos no haber tenido en cuenta y que, como veremos más adelante, son un punto diferencial entre soluciones cloud y on-premise. Este tipo de soluciones consiguieron extender el uso de la arquitectura cliente-servidor, donde el servidor está instalado en el CPD anteriormente mencionado y el cliente en los ordenadores de los usuarios. Con los años, estos puestos clientes han tenido una evolución de clientes pesados, (era necesario instalar el software en el PC y conectarlo con el servidor) a clientes ligeros (simplemente se accede con el navegador) simplificando el proceso de administración de esta tecnología y abriendo la puerta a usar el software mediante una simple conexión a Internet.
Soluciones hosted: Con el tiempo muchas empresas demandaron el uso de soluciones sin tener que preocuparse de todas las implicaciones de instalación y mantenimiento; por ello, los proveedores de software empezaron a ofrecer lo que se podría considerar como un paso intermedio antes de usar la nube tal y como la conocemos hoy. Se trataba de servidores instalados y administrados por las empresas de software en CPDs propios o de terceros a los cuales los usuarios accedían al principio con tecnologías de escritorio remoto y, según los clientes se “aligeraban”, simplemente con una conexión a internet y un navegador (todo tras establecer elementos de seguridad como la validación de determinadas LPS y ciertos puertos).
En función de cómo se adecúen las capacidades, y el modelo de pago, se podrían plantear que este tipo de soluciones podrían considerarse un primer tipo de SaaS o solución cloud.
Soluciones cloud SaaS: Por solución cloud me permito la licencia de denominar a aquellas soluciones de software que han sido diseñadas con una arquitectura adaptada a la nube, a diferencia de las anteriores soluciones “hosteadas”.
Esta arquitectura suele constar de varias capas, base de datos, firewalls, servidores web, de integración y exportación de datos… A su vez, cada una de las capas tendrá distintos servidores, normalmente virtualizados, o servicios, que son utilizados de manera concurrente por múltiples clientes.
Este tipo de arquitecturas persiguen poder compartir recursos entre múltiples clientes “mutualizando” el uso de la plataforma para disminuir el precio, a la vez de conseguir cierta economía de escalas al comprar más servidores según crecen y tener un equipo de operaciones para el mantenimiento de la plataforma. Esto también se simplifica bastante mediante el uso de servidores virtuales, que además permiten preconfigurar el software que usan.
Otra característica básica de este tipo de soluciones es el pago por suscripción, es decir, un pago mensual en función de recursos utilizados y otras métricas relativas al licenciamiento del software. De esta manera podemos encontrar proveedores que cobren por número de usuarios, almacenamiento, número de mensajes enviados, páginas visitadas, almacenadas, y otras muchas opciones.
No obstante, las capacidades de este tipo de soluciones desde el punto de vista de la infraestructura son muy diferentes, pudiendo encontrar fácilmente cuellos de botella, o puntos que presentan problemas para el escalado en la arquitectura según como esta se haya diseñado.
Dentro de las soluciones que encontramos en el mercado actual, vemos que los distintos proveedores empiezan a ofrecer herramientas de Business Intelligence, Analytics, CRM, HCM incluso sistemas complejos como ERPs en cloud; y que otros muchos están en el proceso de poder ofrecerlas, un paso que seguramente marcará la posición en el mercado los proveedores en los próximos años.
IaaS y PaaS: Dentro del cloud, además de SaaS, existen otras opciones a raíz de la aparición de proveedores como Amazon Web Services, Microsoft Azure y Google Cloud, como principales actores, que se están extendiendo cada vez más y dado su coste, permitiendo democratizar su uso.
- Infrastructure as a Service: Ofrece hardware virtualizado junto con la infraestructura correspondiente, redes, fuentes de energía, sistemas de backup en algunos casos…
- Platform as a Service: Este concepto extiende al anterior ofreciendo infraestructura el software necesaria para su uso, como pueden ser los sistemas operativos, servidores de aplicaciones, bases de datos, antivirus, parches… De esta manera se independiza a las empresas no solo del hardware si no también del primer nivel de software y soporte necesario.
Servicios gestionados: más allá de servidores virtualizados
Los principales proveedores de software están invirtiendo fuertemente en capacidades desde el punto de vista de la infraestructura y operación. Estos mismos han conseguido evolucionar sus plataformas marcando nuevas capacidades, y siendo una de las más destacables los servicios gestionados que permiten que podamos instanciar una base de datos en minutos, eligiendo entre multitud de tipos (base de datos relacional, NoSql, base de datos columnar…) sin necesidad de determinar las capacidades del servidor, reservar espacio de disco o ni tan siquiera instalar el software propio de la base de datos ni mantenerlo.
Dentro de esta variedad de servicios gestionados encontramos muchos tipos más allá de las bases de datos, como pueden ser servicios de almacenamiento, de procesamiento de datos (ETL), servicios de machine learning, soluciones de BI… Este tipo de servicios/soluciones están definiendo un nuevo paradigma en el diseño y construcción de proyectos de software. Como ejemplo imaginemos un proyecto de BI tradicional.
Mientras que con soluciones on-premise, u otro tipo de proveedores, sería necesario saber qué servidores necesitamos, sus características, el tipo base de datos que vamos a usar para nuestra aplicación, las soluciones para llevar a cabo la explotación de los datos, licenciarlas, instalarlas… Desarrollando sobre cloud pública nos podemos abstraer de toda esta complejidad, obviando toda la capa propia de los servidores, eligiendo el servicio gestionado relativo a la base de datos que consideramos más óptima, instanciándola en cuestión de minutos y empezando a aprovisionar datos con sus servicios de tratamiento para posteriormente explotarlos. Todo ello ahorrando tiempo de manera exponencial ya que la infraestructura es totalmente transparente y no tenemos que licenciar ningún producto e instalarlo.
Pero eso no es todo, imaginemos que hemos cometido un error en la selección de la base de datos, en lugar de una base de datos tradicional necesitamos una base de datos más eficiente con almacenamiento columnar. Podríamos instanciar la nueva base de datos, migrar los datos y “desconectar” la base de datos menos eficiente. Este proceso que se puede realizar en horas o a la sumo días, con soluciones on-premise sería prácticamente inviable, tanto por motivos técnicos como económicos (las licencias normalmente se compran por periodos de un año como mínimo, necesitaríamos al menos otro servidor configurado para la nueva base de datos mientras mantenemos la antigua, instalar la nueva base de datos… todo ello antes de empezar el proceso de migración de datos).
Desarrollo #onpremise vs. Desarrollo #cloud #tech Clic para tuitearLa versatilidad ofrecida por las plataformas de cloud pública no solo permite mejorar y adaptar el diseño a las necesidades que surgen con la evolución de los proyectos/productos, también permiten que el tiempo empleado en el análisis de la infraestructura necesaria descienda, pudiendo dedicar más tiempo y recursos a tareas de valor, como la definición funcional de nuevos KPIs o su análisis. Algo que sería inviable como herramientas que no tuvieran el rendimiento adecuado.
Ventajas de desarrollar sobre cloud pública
Existen más ventajas derivadas de ese tipo de tecnología, por lo que me detendré en explicar algunas de ellas:
Ahorro de tiempo y agilización del time-to-market: Todo lo comentado nos lleva ahorrar mucho tiempo en instalación, administración provisión de recursos. Aunque parece obvio, muchos proyectos on-premise, e incluso con proveedores de infraestructura, se han visto retrasado días o semanas por no poder disponer de la infraestructura a tiempo. De hecho, es más habitual de lo que nos gustaría que un proyecto empiece más tarde por retrasos en la infraestructura, o que pilotos no se puedan llevar a cabo por no disponer de servidores para su realización (podría dar ejemplos de casos en ambos sentidos).
Ahorro de costes: El tiempo es dinero y los recursos necesarios para mantener una plataforma como la comentada no son baratos y, además, pueden ser bastante variados, expertos en base de datos, expertos en infraestructura TI… Los costes de las licencias pueden ser bastante altos en muchos casos, con independencia de que usen o no, y con periodos de vigencia cerrados, normalmente de un año.
Optimización del gasto: El modelo propuesto por este tipo de proveedores se basa en el pago por uso y en economías de escala. Ambas razones hacen que el coste se vea reducido. Además, no es necesario comprar un servidor muy potente si el procesamiento de carga únicamente va a usar el 90% de los recursos una fracción del tiempo como suele ser lo normal, el servicio escalará y solo cobrará el porcentaje de procesamiento usado.
Necesidad de menos perfiles en la organización/proyectos: Muchos proyectos han fracasado por la gran variedad de perfiles necesarios para ponerlos en marcha, o por usar perfiles sin el conocimiento adecuado. A su vez muchas organizaciones no han podido asumir proyectos de innovación por no disponer de ciertos perfiles. Este tipo de soluciones permite que los profesionales se centren en tareas de valor añadido en vez de en labores de administración.
Evolución agile: Podemos diseñar una arquitectura que evolucione con nuestros requerimientos, algo inviable en el esquema tradicional que, de hecho, hace que muchos proyectos o soluciones, aún no siendo las óptimas, no puedan mejorar o ser reemplazadas en años, con el consiguiente impacto y coste de oportunidad para el Negocio. La disponibilización mediante APIs favorece este tipo de desarrollo, permitiendo la automatización de muchos de muchos de los procedimientos que, tradicionalmente, conllevan trabajos manuales.
Mayor tolerancia a errores: Al disponer de mayor capacidad de escalado, capacidades de autorecuperación, y gestión de backups automática, no solo serán menos propensos a fallos sino que, además, serán más fácilmente recuperables.
Simplificación del proceso de upgrading: Otro de los problemas inherentes a las soluciones on-premise son los upgrades. Los proveedores sacan nuevas versiones, pero el proceso de actualizar nuestra solución no siempre es transparente, es necesario actualizar el software y, en algunos casos, esto conlleva nuevas necesidades, lo cual hace que las versiones no se actualicen en años quedando obsoletas. En el caso de las soluciones cloud, este proceso se ve simplificado, siendo prácticamente transparente si se usan servicios gestionados.
Ciclos de release más cortos: El proceso de evolucionar el software es más sencillo al no tener que desarrollar distintas versiones del mismo por sistema operativo o servidor de aplicaciones, aligerando el desarrollo y las pruebas enormemente. Este tiempo ahorrado es reinvertido en diseñar nuevas capacidades y funcionalidades, lo que hace que las soluciones evolucionen más rápido que con el esquema tradicional.
Ventajas de desarrollar proyectos #software sobre #cloud pública #business #tech Clic para tuitearConclusión
Si bien estamos en un momento en que ambos paradigmas, cloud y on-premise, todavía coexisten, y lo harán durante mucho tiempo. Parece que hay una tendencia clara a migrar a la nube en la mayor parte de soluciones y proyectos de software.
Acorde con esta tendencia muchas empresas se están aprovechando de las capacidades de las plataformas cloud públicas para comenzar proyectos que con las soluciones tradicionales no habrían podido afrontar, lo que a su vez lleva a instaurar todavía más estas soluciones, entre empresas de todo tipo. Por otro lado, las capacidades mencionadas de la nube pública está consiguiendo que el retorno de la inversión de los proyectos se aceleré.
En casos más específicos como en proyectos de big data, muchas más empresas son ahora capaces de abordar estos proyectos, incluir más datos y analizarlos todo ello con inversiones mucho más asequibles, pudiendo dedicar más tiempo y recursos a la experimentación, y menos a la infraestructura.
Este paradigma implica también nuevos desafíos: se hace necesaria una reorganización de equipos de proyectos. Surgen nuevos perfiles y/o la necesidad de que los existentes adquieran nuevos conocimientos y skills, lo que supone un verdadero reto para la organización el encontrarlos y/o reciclarlos.
Imagen: unsplash | alexander mils
Deja tu comentario