Cree rápidamente una plataforma de comercio electrónico basada en el servicio sin servidor con tecnología de nube de Amazon: rendimiento

Ventajas de utilizar Serverless para crear un sitio web independiente

En el modo de arquitectura tradicional, si se requiere una gran promoción de comercio electrónico, los recursos informáticos deben configurarse previamente con anticipación para admitir un alto acceso concurrente, lo que provocará un desperdicio de recursos informáticos y aumentará la carga de trabajo de operación y mantenimiento. Este artículo presenta una nueva forma de implementar WordPress y WooCommerce en Amazon Lambda. Lambda es un método informático sin servidor que puede ejecutar código sin aprovisionar recursos, responder automáticamente a solicitudes de ejecución de código de cualquier escala, desde una docena de eventos por día hasta cientos de miles de eventos por segundo, y pagar por el tiempo de computación (en milisegundos). facturar verdaderamente según el uso, de modo de ahorrar recursos preestablecidos y costos de operación y mantenimiento. Esta característica de Lambda hace que Lambda sea cada vez más popular, y cada vez más clientes eligen Lambda para implementar aplicaciones, incluidas aplicaciones web. Los clientes familiarizados con Lambda pueden saber que Lambda se activa en función de eventos. Para las aplicaciones web, se debe utilizar API Gateway para recibir solicitudes HTTP y convertir solicitudes HTTP en eventos Lambda para activar la ejecución de Lambda.

La comunidad de desarrolladores de tecnología en la nube de Amazon proporciona a los desarrolladores recursos tecnológicos de desarrollo global. Hay documentos técnicos, casos de desarrollo, columnas técnicas, vídeos de formación, actividades y concursos, etc. Ayude a los desarrolladores chinos a conectarse con las tecnologías, ideas y proyectos más avanzados del mundo, y recomiende desarrolladores o tecnologías chinos destacados a la comunidad global de la nube. Si aún no ha prestado atención/favorito, no se apresure cuando vea esto, ¡ haga clic aquí para convertirlo en su tesoro técnico!

En el pasado, para las aplicaciones web existentes, era necesario llevar a cabo una transformación ligera del código de la aplicación para manejar eventos Lambda. Para muchos clientes de comercio electrónico que utilizan componentes maduros como WordPress y WooCommerce, es imposible realizar la transformación del código, por lo que no pueden aprovechar Lambda. la respuesta es negativa. El uso de la nueva función de Lambda, las imágenes del contenedor Lambda y el componente de código abierto, el adaptador Amazon Lambda, permite que WordPress se ejecute en Lambda sin ninguna modificación del código. Esta solución se implementa en Lambda empaquetando Lambda Adapter, WordPress, WooCommerce y otros complementos necesarios en contenedores. Al mismo tiempo, esta solución también utiliza la nueva función de Lambda, Function URL, para reemplazar API Gateway, que puede acceder directamente a Lambda a través de HTTP (s) a través de Function URL, ahorrando así el costo que genera API Gateway. La solicitud dinámica del usuario se envía de vuelta a la URL de Lambda a través de CloudFront para activar la ejecución de Lambda. Dentro de Lambda, el adaptador Lambda recibe el evento Lambda y lo convierte en una solicitud HTTP que WordPress puede manejar. Esto hace posible ejecutar WordPress en Lambda sin modificar el código.

Este artículo se centra en la imagen del contenedor Lambda y la URL de la función Lambda. Para obtener detalles de implementación del adaptador Lambda, consulte este blog.

Imagen del contenedor Lambda

Para ejecutar un contenedor en Lambda, la imagen del contenedor debe contener los clientes de la interfaz de ejecución de la API de tiempo de ejecución  para administrar la interacción entre Lambda y el código de función. Los clientes pueden incluir el cliente de interfaz de tiempo de ejecución en sus imágenes para admitir la ejecución en Lambda. Amazon proporciona un conjunto de imágenes base de código abierto que se pueden utilizar para crear imágenes de contenedores . Estas imágenes base incluyen clientes de interfaz de tiempo de ejecución  . La imagen Lambda es de solo lectura, pero el código de función puede acceder a un directorio grabable /tmp con 512 MB de almacenamiento. Este escenario utiliza Docker para crear la imagen. Dockerfile utiliza la imagen base Amazon Linux 2 proporcionada por Amazon y utiliza Bedrock para administrar la instalación de WordPress y complementos. Algunos complementos necesarios están preconfigurados en esta solución y los clientes pueden modificar la configuración de Bedrock para agregar los complementos necesarios.

URL de la función Lambda

Ahora puede activar la ejecución de Lambda creando una URL de función que admita el uso de HTTP para acceder a esta URL. Cuando la función de URL de función no se publica, la creación de aplicaciones web basadas en Lambda debe combinarse con API Gateway para recibir solicitudes HTTP. Sin embargo, en el escenario de implementación de WooCommerce en Lambda, debido a que WordPress está empaquetado en un contenedor, solo se necesita una función Lambda. La función de la puerta de enlace API es convertir las solicitudes HTTP en eventos Lambda y las funciones avanzadas proporcionadas por API Gateway. como API Management, autenticación de solicitudes, etc., no son necesarios. Por lo tanto, con la función de URL de función, puede reemplazar la función de API Gateway en este escenario y no aumentará el costo de Lambda, sino que también ahorrará el costo de API Gateway.

prueba de carga

Basándonos en el blog anterior, utilizamos el complemento de WordPress Blocksy para crear rápidamente un sitio de inicio y utilizar este sitio como objeto de prueba.

Esta solución ha sido de código abierto en Github, visite este [Repo] ( https://github.com/aws-samples/serverless-WooCommerce-workshop) para obtener el código completo.

En la carpeta test/k6, esta solución también proporciona scripts k6 para pruebas de rendimiento. Simula el proceso completo desde que el usuario ingresa a la página de inicio, selecciona productos, los agrega al carrito de compras, actualiza la dirección y envía el pedido. Para obtener instrucciones específicas, consulte el archivo test/readme.md.

main.js se utiliza como archivo de entrada de la prueba, simulando la escena en la que 100 usuarios están en línea en los primeros 5 minutos, 1000 usuarios están en línea en los 10 minutos intermedios y 100 usuarios están en línea en los últimos 5 minutos. Los lectores pueden modificar el archivo main.js según las necesidades de la prueba.

Debido a que la instancia RDS Aurora mysql y el clúster Elasticahe Redis preestablecido en la plantilla CDK predeterminada son demasiado pequeños, no son adecuados para pruebas. Modifique el código CDK cdk/lib/woocommerce-stack.ts aquí y use r5.4xlarge de RDS Aurora mysql. El clúster de Elasticahe Redis cambió a r5.xlarge. Los clientes también pueden cambiar la escala por sí mismos para una gama más amplia de pruebas.

imagen.png

Actualice los recursos con el siguiente comando.

make diff
make deploy

Aquí utilizamos un c5.xlarge Amazon Linux 2 EC2 para realizar pruebas. E instale el Agente de CloudWatch para cargar los indicadores generados por k6 en CloudWatch para su visualización. Tenga en cuenta que EC2 necesita tener permiso para escribir en CloudWatch Metrics; aquí usamos el rol de EC2 para otorgar permisos. Al crear una función, seleccione la política de alojamiento CloudWatchAgentAdminPolicy en la figura siguiente y vincule esta función a EC2.

imagen.png

Utilice los siguientes comandos para instalar y configurar k6 y CloudWatch Agent, y ejecute k6 para realizar pruebas.

sudo yum -y install https://dl.k6.io/rpm/repo.rpm
sudo yum -y install --nogpgcheck k6
sudo yum -y install git 
git clone https://github.com/aws-samples/serverless-woocommerce-workshop.git
cd ~/serverless-woocommerce-workshop/test/k6
sudo yum install -y amazon-cloudwatch-agent
cat << EOF > cw-statsd.json
{
    "metrics": {
        "namespace": "k6",
        "metrics_collected": {
            "statsd": {
                "service_address": ":8125",
                "metrics_collection_interval": 1,
                "metrics_aggregation_interval": 0
            }
        }
    }
}
EOF
sudo amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:./cw-statsd.json
K6_STATSD_ENABLE_TAGS=true k6 run --out statsd -e HOSTNAME=<your WooCommerce website domain name> main.js

La siguiente figura es el resultado estadístico de la prueba k6.

imagen.png

En las métricas k6 de CloudWatch, puede ver la cantidad de pedidos completados por segundo y la simultaneidad de Lambda. Se puede ver que Lambda escalará automáticamente a medida que aumente el volumen de solicitudes/pedidos. Se puede ver que Lambda puede manejar picos altos y bajos de tráfico sin ninguna operación.

imagen.png

Resumir

Sobre la base del blog anterior, este blog presenta las ventajas de la solución de creación de sitios web sin servidor y realiza una prueba de carga en WordPress basada en el servicio sin servidor. Se puede ver que Lambda puede hacer frente automáticamente a picos y bajos de tráfico sin ninguna operación. y operaciones de mantenimiento, lo que ahorra en gran medida los costos de operación y mantenimiento. Los lectores también pueden modificar el script de prueba según sus propias necesidades para realizar pruebas de rendimiento a mayor escala.

apéndice

El autor de este artículo.

imagen.png

Wang Qixiang  , arquitecto de soluciones de Amazon, responsable de la consultoría de arquitectura y la implementación del diseño de las soluciones de computación en la nube de Amazon, tiene una amplia experiencia en la resolución de problemas prácticos de los clientes y está interesada en la investigación y aplicación del aprendizaje profundo.

imagen.png

Xu Changyue  arquitecto de soluciones de Amazon, responsable de la consultoría y el diseño, implementación y promoción de la arquitectura de soluciones de computación en la nube con sede en Amazon, bueno en el desarrollo de software, tiene una rica experiencia en la resolución de problemas prácticos de los clientes.

Fuente del artículo: https://dev.amazoncloud.cn/column/article/630b30932ecbae73705ffb63?sc_medium=regulartraffic&sc_campaign=crossplatform&sc_channel=CSDN

Supongo que te gusta

Origin blog.csdn.net/u012365585/article/details/132529140
Recomendado
Clasificación