Cómo crear aplicaciones web escalables

Cómo crear aplicaciones web escalables


Una aplicación web escalable se llama así porque puede recibir más peticiones linealmente de una manera más elegante. A medida que se añada más hardware, el sitio web podrá gestionar montones de peticiones a la vez. Decir que un sitio web tiene escalabilidad en acción es simplemente significar que a medida que aumentan los usuarios y se desbordan las peticiones, el sitio web será capaz de gestionarlas todas igual de bien.

Ejemplo de un sitio web popular que se ha ampliado con éxito.

Si nos fijamos en el crecimiento de Facebook, sería asombroso comprobar cómo ha crecido a lo largo de los años. Incluso si no eres un usuario habitual de Facebook, sería difícil ignorar el impacto que el canal de medios sociales tiene sobre las empresas y los negocios. Según una estadística, hay más de
1.940 millones de usuarios activos de Facebook en marzo de 2017
registrando un aumento de más del 18% cada año. En cuanto a los usuarios móviles activos diarios, las cifras son asombrosas: 1.150 millones de usuarios.

Facebook está escrito en PHP, y su éxito masivo radica en su capacidad para escalar hasta un millón de usuarios, gracias a una enorme arquitectura de aplicaciones. La arquitectura evita los cuellos de botella, por lo que es escalable en cualquier lenguaje. La forma de la curva (que relaciona el coste con el uso) es lo que determina la arquitectura de la aplicación. Cuando una aplicación es escalable, la curva será más diagonal, pero cuando se enfrente a cuellos de botella, se volverá casi vertical.

El lenguaje, la base de datos o el compilador utilizados también influyen en la forma de la curva no lineal. Si hay un fallo de diseño subyacente (más que el detalle de implementación), entonces la curva es clave para dispararse rápidamente. La arquitectura de Facebook, en constante evolución, está a cargo de algunos de los mejores ingenieros del sector. Facebook tiene su propia versión de PHP optimizado y ha desarrollado software totalmente nuevo como Apache Cassandra.

Ahora viene la pregunta del millón: ¿cómo crear aplicaciones web escalables?

He aquí algunas opciones sencillas para escalar sus aplicaciones web:

1. Aumento de escala

Una vez que la carga en los neumáticos de back-end se vuelve demasiado pesada para manejarla, no es posible que el sitio web funcione. Una opción factible, pero probablemente muy cara, sería aumentar los recursos por entidad. Escale esto en otras dimensiones como velocidad de red, IOPs, capacidad de almacenamiento y memoria también. La razón por la que esto resulta caro es porque no ofrece una elasticidad incorporada, por lo que podría resultar costoso cuando la carga es baja.

Sin embargo, es importante tener en cuenta que la arquitectura de escalado necesita un equilibrador de carga (solicitudes de los usuarios finales, frontera entre las redes externas e internacionales.) para que pueda transmitir conexiones de un tipo concreto y un grupo de exploración (para realizar un seguimiento de la carga del sistema, generar nuevas instancias de CPU y realizar un seguimiento del inventario de instancias activas).

2. Almacenamiento en caché

La necesidad de escalado ha llevado a la demanda y el despliegue de escalado a gran escala. El almacenamiento en caché puede mejorar el rendimiento y reducir el consumo de recursos. El uso de recursos incluye CPU, tasas de S3, tasas de almacenamiento de datos, uso de API externas y base de datos. Para asegurarse de dónde puede aplicarse el almacenamiento en caché, realice un análisis de datos que le ayude a comprender la distribución de las solicitudes y el tamaño de los datos, incluida la relación lectura-escritura.

3. El tipo de particiones a realizar

El objetivo de la ampliación es, por supuesto, aumentar la capacidad. Esto puede hacerse de dos maneras: vertical u horizontal. En el escalado vertical, se añaden más recursos, por ejemplo, unidades más grandes o más duras a un único servidor. La operación de computación es mayor, con mejor memoria y CPU más rápida. En el escalado vertical, se toma un único recurso y se aumenta la capacidad de manipulación. En el escalado horizontal, puede añadir más nodos. La forma más habitual de escalar horizontalmente es dividir los servicios en particiones o fragmentos. Estos fragmentos se asignarían para atender funcionalidades específicas (por ejemplo, atender los intereses de distintos tipos de usuarios). La ventaja de los fragmentos es que pueden proporcionar almacenes de capacidad añadida. Sin embargo, el problema es que el diseño inicial debe prever el escalado horizontal, ya que añadirlo más adelante puede resultar una tarea realmente difícil.

Cosas que hay que recordar al escalar aplicaciones, Tenga en cuenta estos puntos mientras realiza la tarea

1. Sin comprometer el tiempo de actividad del sitio web

El sitio web debe estar a disposición de los usuarios en todo momento. Imagínese tener una tienda de e-commence y que el servidor se caiga cada vez que haya un pico de peticiones. Por lo tanto, el tiempo de actividad del sitio web es muy importante, y escalar su aplicación web para que esté disponible todo el tiempo, independientemente de los fallos e interrupciones del sistema.

2. Opción de recuperación

Es posible que los usuarios vuelvan a consultar los mismos datos, por lo que deben tener fácil acceso a los sane. A menos, claro, que tengas los datos actualizados. Puede ganarse la confianza de los usuarios si saben que pueden acceder a los datos del sitio web siempre que lo deseen.

3. Rendimiento

El principal objetivo del escalado de la aplicación es garantizar un rendimiento excelente. Una respuesta rápida con recuperación instantánea seguida de baja latencia es extremadamente importante.

4. Manejabilidad

Después de escalar el sitio web, es muy importante comprobar su manejabilidad para que sea fácil de manejar, mantener y actualizar.

Conclusión

Existe la idea errónea de que PHP no es escalable. ¿Cómo gestionaría entonces PHP otros sitios de gran envergadura? La escalabilidad tiene que ver más con la arquitectura de la aplicación que con el lenguaje. El tiempo necesario para desarrollar aplicaciones web escalables depende de la complejidad de la aplicación y del framework utilizado. Hay dos capas de programación diferentes en una aplicación escalable: Front end y Back end. Como su nombre indica, Front end es algo con lo que el usuario interactúa y la interfaz puede ser cualquier cosa, desde Android a iOS. El back-end supone alrededor del 80% del trabajo total, pero el usuario no es consciente de esta parte de su aplicación web. La funcionalidad desempeña un papel fundamental en la escalabilidad. Un usuario puede querer cargar imágenes, por lo que hay que tener en cuenta la escalabilidad del almacenamiento, ya que puede necesitar recuperarla en cualquier momento. Para mejorar las descargas y solicitudes de imágenes, es muy importante que la latencia sea baja.

Aquí tiene algunas lecturas interesantes sobre este tema:
7 Etapas del escalado de aplicaciones web, Estrategias para arquitectos.
¿Cómo crear aplicaciones web escalables?
Creación de aplicaciones escalables en la plataforma en la nube de Google.

Flickr.com/ klarititemplateshop.com/ Blogtrepreneur


Sobre el autor: Deepak es Director de PHPBabu y también trabaja en la empresa matriz YUHIRO Technologies Private Limited como director de oficina.

Deja un comentario