Cómo y dónde usar la computación sin servidor

0
33

¿Su organización está lista para funcionar sin servidor? La tendencia hacia la computación sin servidor está claramente en aumento, pero eso no significa que funcione idealmente para cada contexto u organización.

La computación sin servidor es un modelo de arquitectura de software en el cual un proveedor de servicios en la nube ejecuta el servidor para un cliente y administra dinámicamente la asignación de recursos computacionales. El término “sin servidor” es un nombre inapropiado, puesto que los servidores todavía están involucrados en el proceso.

En lugar de basarse unidades de capacidad compradas previamente, el precio de estos tipos de servicios se basa en la cantidad real de recursos que consume una aplicación.

El mercado de arquitectura sin servidor alcanzó un total estimado de 4.250 millones de dólares en el 2018 y se espera que alcance un total de 14.930 millones de dólares en el 2023, una tasa de crecimiento compuesta anual (CAGR, por sus siglas en inglés) de 29% durante el período del pronóstico, según un informe del 2018 realizado por la firma de investigación Markets and Markets. Debido en parte a la adopción temprana de los servicios en la nube, se espera que América del Norte cuente con la mayor participación de mercado durante el período del pronóstico.

Los principales factores esperados para impulsar el crecimiento del mercado incluyen la eliminación de la necesidad de administrar servidores, lo que reduce los costos de infraestructura y facilita la implementación, administración y ejecución. Adicionalmente, la proliferación de arquitecturas de microservicios también contribuye a impulsar este crecimiento.

Según Markets and Markets, los servicios de automatización e integración desempeñan un papel importante en el despliegue de la arquitectura sin servidor. Con el fin de brindar una respuesta más rápida, junto a la optimización de los recursos informáticos, los servicios de automatización ayudan a administrar de manera eficiente los microservicios implementados en plataformas híbridas de TI.

Gartner también se muestra optimista respecto a la computación sin servidor; la firma de investigación incluyó a la computación sin servidor como una de sus 10 principales tendencias que afectarían la infraestructura y las operaciones en el 2019, y afirma que el modelo de arquitectura de software emergente promete eliminar la necesidad de administración y aprovisionamiento de infraestructura.

El atractivo de la computación sin servidor para los administradores de TI
La computación sin servidor es muy atractiva no solo para los desarrolladores de aplicaciones, sino también para el personal de operaciones de sistemas, afirma Ken Corless, director de la práctica de nube de Deloitte Consulting.

Ya sea que se ofrezca por proveedores de nube de hiperescala o sea implementada on premises con varias soluciones en el mercado, el objetivo de la computación sin servidor es el mismo: “automatización implacable y autoservicio para acelerar el ciclo de vida del desarrollo del software”, afirma Corless.

Para los administradores de TI, la computación sin servidor reduce el ciclo de “solicitud-respuesta” de las cargas de trabajo basadas en tickets, y permite que los administradores se centren en tareas de alto nivel, como el diseño de infraestructura o la creación de más automatización, afirma Corless.

Existen dos casos de uso principales que Corless está viendo. Uno de ellos es el desarrollo de aplicaciones para crear aplicaciones modernas, basadas en servicios de acoplamiento flexible. Tanto la función como servicio (FaaS, por sus siglas en inglés) como el backend como servicio (BaaS) -dos servicios habilitados para la nube que logran la computación sin servidor- pueden mejorar significativamente la productividad de un equipo de producción de software al mantenerlo pequeño, agrega.

El otro gran caso de uso ocurre con los administradores del sistema. “La misma automatización que buscan puede implementarse de manera rápida, fácil e incremental con tecnologías sin servidor”, afirma Corless. Por ejemplo, en el negocio de Cloud Managed Services de Deloitte, la empresa utiliza intensivamente la tecnología ‘sin servidor’ para automatizar las operaciones de sus productos.

Sin embargo, al igual que con los servicios en la nube, existen contextos en los que la tecnología ‘sin servidor’ puede costar más que pagar por las máquinas virtuales, señala Corless. Una aplicación que actualmente se ejecuta en máquinas virtuales, con un uso consistente del 80% en forma continua, probablemente costará más en un ambiente sin servidor, agrega.

“Sin embargo, la promesa real de la tecnología ‘sin servidor’ es que menos personas tendrán que dedicarse a realizar algunas de las tareas mundanas de TI”, como la actualización del software y el backup, afirma Corless. Esto genera dos beneficios. El primero ocurre cuando las personas que realizan dichas tareas pueden enfocarse más bien en crear valor en otras partes de TI o de la empresa.

“A nadie le emociona ser la persona que trabaja haciendo cambios en el DNS [sistema de nombres de dominio]”, afirma Corless. “Estas personas pueden ser reutilizadas para desarrollar nuevas capacidades. La generación de más automatización es el beneficio más común que puedo apreciar”.

El segundo beneficio es la capacidad, incluso en una gran corporación, de que incluso los equipos más pequeños sean más autodeterminísticos. “A medida que la experiencia y los lineamientos de la administración de la infraestructura se automatizan, los equipos pueden realizar el autoservicio y hacerlo de manera segura”, afirma Corless. “Sin embargo, normalmente se requiere algo de inversión para automatizar los estándares y directrices, puesto que a menudo podemos observar que los productos ‘sin servidor’ no son lo suficientemente ‘seguros’ para ser utilizados sin algún tipo de barrera/restricción”.

Cada vez que una aplicación puede aprovechar la computación basada en eventos, con servicios desacoplados, resulta ideal para la plataforma sin servidor, afirma Larry Carvalho, director de investigación de plataforma como servicio (PaaS) de International Data Corp. (IDC).

Los casos de uso más comunes son las aplicaciones de Internet de las cosas (IoT, por sus siglas en inglés) y los backendsmóviles que necesitan un procesamiento basado en eventos, señala Carvalho. Otros casos de uso son el procesamiento por lotes o el procesamiento continuo para reacciones en tiempo real frente a eventos.

Las mejores prácticas de la computación sin servidor
Entonces, ¿cómo pueden las organizaciones ayudar a garantizar el éxito con la computación sin servidor? Aquí hay algunas prácticas sugeridas por expertos.

Incorpore las restricciones del producto sin servidor al proceso de diseño: Los equipos de ingeniería que se cambian a la computación sin servidor a menudo olvidan que existen restricciones precisas incluso en los productos más flexibles, afirma Daniel Smith, arquitecto de plataformas de IoT en Cordial Inc., empresa proveedora de tecnología de marketing.

“Recordar que la computación sin servidor simplemente se trata del servidor o el contenedor de otra persona, que tiene sus propias limitaciones de diseño, será muy útil” para tener éxito con la computación sin servidor, afirma Smith. “En la computación sin servidor, la delimitación de las responsabilidades es mucho más importante en el stack, por lo que las restricciones como el tiempo total de ejecución, el tiempo de CPU consumido o la memoria total utilizada deben considerarse durante el diseño y la implementación”.

Cordial Inc. comenzó a explorar tecnologías sin servidor en el 2015, con el objetivo de tener un modelo de costo predecible durante un tiempo impredecible de uso de recursos. “Para una empresa nueva, resultaba atractivo contar con una estructura de costos predecible y basada en la demanda”, afirma Smith.

En mayo del 2018, la compañía comenzó a utilizar la tecnología Workers de Cloudflare como reemplazo de algunos de sus sistemas. Como compañía B2B que atiende a los consumidores en nombre de sus clientes, las interacciones entre Cordial Inc. y los consumidores deben ser lo más rápidas posible.

“Esto a menudo exige, geográficamente, acercar al máximo la carga de trabajo al consumidor”, algo que la computación sin servidor proporciona, afirma Smith.

Debido a que Cordial Inc. ha sido capaz de reducir el tamaño de los microservicios, ha estado dispuesta a experimentar con lenguajes de programación que, en caso contrario, no habría podido implementar. Esto le ha permitido a la compañía ofrecer productos más eficientes con mayor rapidez y confianza.

Diseñe cargas de trabajo finitas: Las organizaciones deben considerar a la arquitectura sin servidor como un motor de ejecución para un solo método o función, afirma Smith.

“Refinar aún más ese objetivo, el input y output de la función deberían ser los datos del menor tamaño posible en los que se pueda trabajar”, afirma Smith. “En lugar de utilizar una función sin servidor para procesar un archivo de datos, envíe cada fila de datos a una ejecución independiente”.

Al reducir el tamaño de cada unidad de trabajo, la narrativa comienza a cambiar a qué tan rápido la red puede mover los datos entre los servicios. “Para los datos en vuelo, podemos comenzar a pensar en la red como un tipo de almacenamiento volátil en el que cada segundo de reloj nos ofrece 10 [gigabytes] de almacenamiento por interfaz de red”, afirma Smith. “Por lo tanto, el disco, que es el componente más lento del sistema, se evita hasta que un output final deba ser almacenado persistentemente”.

Haga que las funciones sean ‘sin estado’ lo más posible: En las aplicaciones monolíticas, las variables globales comunes no funcionan con la computación sin servidor, porque el estado global podría no ser persistente entre las invocaciones, afirma Daniel Dyla, ingeniero de software de Dynatrace, empresa proveedora de software para el análisis del rendimiento de las aplicaciones.

“Para combatir esto, las funciones sin servidor deben carecer de estado siempre que sea posible”, afirma Dyla. “Si se requiere el estado, es mejor tener una función que, desde una [base de datos] externa, reúna el estado y llame a otra función sin estado que realice el procesamiento de los datos reales. De esta manera, puede mantener las interacciones de estado en cuarentena en los lugares designados donde son más fáciles de administrar”.

Dynatrace ha estado usando la tecnología ‘sin servidor’ durante los últimos dos años, afirma Dyla, atraída por el bajo costo, la capacidad de escala y las invocaciones basadas en eventos. La compañía está utilizando la computación sin servidor para los sistemas de sondeo que necesitan estar operando continuamente para el procesamiento por lotes.

“El principal beneficio que hemos visto es el bajo costo”, señala Dyla. “Nuestras funciones sin servidor tienden a ser pequeños fragmentos de código con cargas intermitentes que pueden crecer desde cero y reducirse a cero muy rápidamente”.

Automatice la implementación y las pruebas: Si bien existen herramientas que facilitan la implementación manual de la computación sin servidor, la automatización de la implementación le permite tener una implementación consistente y sin errores humanos, afirma Hristo Papazov, ingeniero de software de Relativity, proveedor de software de e-discovery.

La automatización “también permite que otros equipos dentro de su organización adopten fácilmente estas tecnologías”, afirma Papazov.

Como parte de un esfuerzo por mejorar la experiencia del cliente con su plataforma de e-discovery, Relativity está usando tecnología sin servidor del servicio de Microsoft Azure en la nube, asegurando que sus componentes principales estén en funcionamiento. La compañía aprovecha la tecnología sin servidor para sus herramientas de monitoreo interno, permitiendo a los usuarios procesar grandes cantidades de datos de telemetría para detectar y resolver problemas rápidamente, afirma Papazov.

Con la creciente complejidad de las aplicaciones sin servidor, las pruebas unitarias se convierten en una parte crítica del ciclo de desarrollo, y la automatización también ayuda con eso, agrega Papazov. “Cuando Microsoft introdujo Azure Functions hace un tiempo, las pruebas de unidad fueron muy difíciles, sino casi posibles”, señala. “Las cosas han avanzado mucho desde entonces y ahora agregar pruebas unitarias a un proyecto es muy fácil”.

Entienda la arquitectura moderna de las aplicaciones: Los administradores deben tratar de dividir las aplicaciones en servicios de ejecución corta, independientes y desacoplados, afirma Carvalho. “Diseñe una aplicación sin estado y aproveche los servicios de soporte como la administración de APIs para las comunicaciones y las funciones de seguridad para la identidad del usuario”, agrega.

Por ejemplo, un servidor de aplicaciones web que se ejecuta continuamente para procesar transacciones entrantes, podría dividirse extrayendo la lógica de negocios y ejecutándolas como microservicios en un marco sin servidor, afirma Carvalho. “Esto elimina el costo de la ejecución continua del servidor mientras se le delega el dolor de cabeza de la conmutación por error al proveedor de la nube”.

Haga de la ciberseguridad una prioridad: Aunque las empresas sin servidor pueden no tener que preocuparse por instalar actualizaciones en sus servidores o ejecutar software antivirus, un producto sin servidor basado en interfaces de programación de aplicaciones (APIs, por sus siglas en inglés) “multiplica radicalmente los puntos finales de su solución”, afirma Corless. “Y si sus clientes o sus socios usan sus APIs, se vuelve aún más complicado”.

Como resultado, es posible que las empresas deban replantearse su enfoque respecto a las reglas de sus firewalls, “ya que puede crear rápidamente un desastre inmanejable”, agrega Corless.

Bob Violino, NetworkWorld.com