Cuando se trata de escalabilidad y rendimiento, cuestione a sus proveedores. Puede que no se lo estén contando todo.
En el contexto del software, ¿qué significa escalabilidad? Esta pregunta aparentemente simple está rodeada de información incorrecta y marketing poco claro, y se ha usado de forma errónea, lo que genera confusión en cuanto a un tema de suma importancia. Me gustaría ayudar a aclarar parte de esta confusión con un análisis reflexivo de la escalabilidad.
Lo primero que debemos hacer es entender a qué nos referimos cuando decimos que un software es escalable.
Las definiciones de escalabilidad varían mucho. Por ejemplo, la definición de Wikipedia es: "La escalabilidad es la propiedad de un sistema para manejar una cantidad creciente de trabajo al agregar recursos al sistema". Gartner define la escalabilidad como "[l]a capacidad de un sistema para aumentar o disminuir el rendimiento y el costo en respuesta a los cambios en las demandas de procesamiento de aplicaciones y sistemas". Y hay muchas más.
A pesar de las muchas formas de definir la escalabilidad, todas las definiciones comparten algunos elementos similares. Por ejemplo, la escalabilidad se centra en dos aspectos de un sistema: el hardware y el software.
Cada plataforma tendrá diferentes límites de rendimiento en función del hardware en el que se ejecuta. Y cada máquina o red de máquinas opera con una cantidad limitada de CPU, de RAM, de espacio en disco, etc. Para el hardware, la escalabilidad mide cuántos recursos tiene.
Con el software, la escalabilidad implica las bibliotecas y el código que este necesita para desempeñar su función. Cada programa informático requiere cierta cantidad de recursos del servidor para funcionar. La escalabilidad del software mide cuánto cuesta ejecutarlo.
Además, la escalabilidad tiene que ver con cómo un sistema responde a los requisitos actuales y futuros. Si bien muchos escenarios están relacionados con esta característica, también son muchas la organizaciones que quieren asegurarse de que lo que desarrollen hoy continuará satisfaciendo las demandas del mañana.
En pocas palabras, cualquier cosa que no tenga relación con la capacidad de un sistema para gestionar solicitudes con una cantidad determinada de recursos, no tiene nada que ver con la escalabilidad. Estos son algunos de los ejemplos de información errónea con respecto a la escalabilidad que he encontrado al examinar Internet:
Cuando escuche cosas como estas de un proveedor, dude de él. Busque proveedores que estén dispuestos a ayudarlo a comprender cómo se escalará su solución en particular.
Al determinar la escalabilidad de una plataforma de software, debe tener en cuenta cuatro variables:
Estas variables le ayudan a evaluar la escalabilidad de un sistema. Por ejemplo, supongamos que tengo 10 usuarios simultáneos que ejecutan 100 operaciones al día, y que cada operación usa de media 1 MB de datos. Imaginemos también que esta cantidad de servicio consume el 10 % de los recursos del hardware. Si agrego 10 usuarios adicionales, ¿consumirán solamente otro 10 % de los recursos del sistema? En caso afirmativo, esta plataforma se puede escalar de forma lineal.
El software puede pasar de la escalabilidad lineal a la paralelización, pero de este tema hablaremos otro día. También es importante tener en cuenta que, el hecho de que una solución siga la linealidad en un momento dado, no significa que siempre seguirá esta tendencia. La linealidad tiene un límite y, una vez alcanzado, la adición de recursos adicionales generará menos rendimiento.
El motivo por el que comprobamos la escalabilidad de una plataforma es por el dinero. ¿Cuánto trabajo puede hacer de la manera más eficaz posible? Incluso si una solución muestra un buen rendimiento, debe darse de manera rentable.
Recientemente, analicé los datos de escalabilidad publicados de otro proveedor. Sus cifras eran realmente impresionantes, pero estaba ejecutando las pruebas en un servidor de 26 millones de dólares. Tenga en cuenta en Amazon que puede obtener una solución en la nube de primera calidad por aproximadamente 4,50 dólares la hora; y hasta que no la usara durante 660 años, no le saldría rentable el servidor de 26 millones de dólares. Para sus propósitos, no importa si el sistema del proveedor puede alojar a 10 000 o a 100 000 personas. Sigue sin merecer la pena.
Otra "trampa" la encontramos al trabajar con proveedores que crean desafíos de escalabilidad artificiales. Se presenta en forma de tasas por transacción o tasas por unidad de soluciones. Las opciones con este tipo de tarifas pueden parecer una buena idea para comenzar, pero usted, el cliente, se verá obligado a tomar malas decisiones de diseño.
Imagine que se le cobra por cada llamada a la API. ¿No intentaría aumentar la carga útil de cada llamada para maximizar la eficacia? Claro, pero ¿qué pasa si su caso de uso requiere muchas llamadas durante un largo período de tiempo? Deberá decidir si desea crear una solución sobredimensionada, porque tiene que transportar una sola carga útil muy grande, o pagar las tasas adicionales para desarrollar su solución de forma adecuada.
Las tarifas basadas en objetos plantean un escenario similar. Si paga por objeto, intentará reducir su diseño a la menor cantidad posible de pasos. Esto crea una necesidad artificial de diseñar en exceso los elementos de su solución, lo que puede conducir a un rendimiento poco óptimo.
De las variables descritas anteriormente, la carga de las llamadas y la cantidad de transacciones son con las que más se pueden ofuscar los resultados de rendimiento. Los proveedores son muy perspicaces. Saben que cobrar tasas en estas áreas es una forma eficaz de ocultar los costos reales de una solución.
Vamos a enlazar todo esto. Dando por hecho que la información anterior es verdadera, a continuación tenemos algunas prácticas recomendadas bastante universales para evaluar la escalabilidad de una plataforma.
Es fundamental saber por dónde empezar. Para cada caso de uso, debe saber el número de usuarios y lo que necesita hacer. A partir de ahí, calcule los recursos que requiere cada persona. Finalmente, elija una configuración de hardware que cree que ejecutará esta solución.
Ponga a prueba su línea de base. ¿Cuál ha sido su rendimiento? Una vez que haya probado eso, modifique su variable y vuelva a realizar la prueba. ¿Cómo funciona la solución con el doble de usuarios? ¿Con 10 veces más usuarios? ¿Y con 50 veces más usuarios? Descubra qué sucede cuando introduce una nueva operación para aumentar el número de llamadas y o la carga de las llamadas. ¿Cuándo empieza a ser deficiente el rendimiento del hardware que usa? ¿Qué ocurre si aumenta el tamaño del hardware al escalarlo vertical u horizontalmente?
Recuerde, la escalabilidad no solo son resultados de pruebas. Una prueba le dirá si una solución es escalable, pero no si esa solución es rentable. Tenga cuidado con los costes ocultos como los cargos por transacción o las tasas adicionales por objeto o unidad. Aunque el sistema podría asumir la carga de trabajo, puede que su bolsillo no.
Voy a decirle algo que nunca pensó que diría de un proveedor de software: la escalabilidad es su problema. Tanto si desarrolla la solución usted mismo como si paga a un tercero para que se encargue de ello, tendrá que vivir con las consecuencias del diseño general.
Cualquier plataforma de software se puede escalar de forma deficiente. Por el contrario, con un presupuesto ilimitado en hardware, puede hacer que cualquiera de esas soluciones funcione.
Si un proveedor le dice que su solución es escalable y que no necesita preocuparse, cuestiónelo. Creo que Appian tiene una de las plataformas con mayor rendimiento del mercado. Nuestros servicios están inscritos en un marco más eficiente en comparación con nuestros competidores. Además, las evaluaciones de Appian se pueden realizar en paralelo, algo que no admiten otros proveedores. Incluso con estas ventajas, no quiero hacerle pensar que ahí se acaba todo. Más allá del poder del back-end de nuestra plataforma, queremos trabajar con usted para garantizar que está creando las aplicaciones más escalables posibles.
Appian quiere ayudarle a crear la solución más escalable y rentable disponible. Podríamos decirle que somos los mejores, pero preferimos demostrárselo.
Si desea conocer las cifras del rendimiento de Appian, consulte nuestro informe de escalabilidad. En él descubrirá lo bien que funciona nuestra plataforma en tres instancias de hardware independientes.
Después de leer el documento, póngase en contacto con nuestro equipo de ventas. Creo que se sorprenderá al descubrir lo interesados que estamos en ganarnos su confianza y convertirnos en su proveedor preferido. Estamos más que dispuestos a guiarle a través de nuestra plataforma y a ayudarle a descubrir la forma más eficaz de usar nuestro producto.
No es fácil escalar aplicaciones empresariales en sistemas críticos. Cuéntenos su caso y le ayudaremos a comprender mejor cómo puede escalar de manera eficaz con Appian.
Appian es una empresa de software que orquesta procesos de negocio. La plataforma Appian permite a los líderes diseñar, automatizar y optimizar procesos empresariales importantes de principio a fin. Con nuestra plataforma líder en el sector y nuestro compromiso con el éxito del cliente, las principales organizaciones confían en Appian para impulsar un cambio transformador de los procesos.