¿Implementar wordpress como funciones AWS lambda?

6 minutos de lectura

Me pregunto si es factible implementar wordpress como una serie de funciones lambda en la puerta de enlace API de AWS. ¡Cualquier sugerencia sobre la viabilidad / errores sería muy apreciada!

Gracias por adelantado,

PKK

  • ¡Eh! Gracias Marcos B.

    – PKK

    04/04/2016 a las 20:40

  • ¿No hay una API de NodeJS para WP ahora? ¿Y los servicios RDBS en tándem? Definitivamente se puede hacer, pero es una gran cantidad de esfuerzo.

    – ilrein

    30 de junio de 2016 a las 17:43


  • @PKK Una forma de hacerlo es usando ` WordPress XML-RPC API ` Hay un buen paquete de nodos que puede usar scottgonzalez/node-wordpress un ejemplo: ` var wordpress = require( “wordpress” ); var cliente = wordpress.createClient({ url: “mi-sitio.com”, nombre de usuario: “admin”, contraseña: “secreto” }); cliente.getPosts(función(error, publicaciones) { respuesta.setHeader(“Tipo de contenido”, “texto/json”); respuesta.setHeader(“Control de acceso-permitir-origen”, “*”); respuesta.final (mensajes.longitud); }); `

    – eMM

    2 de julio de 2016 a las 13:02


  • Empaquetado de PHP en Lambda a través del blog de AWS (aws.amazon.com/blogs/compute/…) y empaquetar el código de WordPress y la configuración con él y luego exponer la REST-API suena interesante. Me pregunto si esto es posible o si la sobrecarga del paquete inundará el tiempo de respuesta.

    – Michael McGarrah

    2 de febrero de 2017 a las 15:31


  • La discusión de Laravel en cwhite.me/hosting-a-laravel-application-on-aws-lambda tiene algunas cosas buenas en las que pensar para mi comentario anterior. Me dan ganas de probar esto con API Gateway.

    – Michael McGarrah

    2 de febrero de 2017 a las 15:43

Tendrá muchas cosas que considerar con persistencia e incluso antes de eso, Lambda no es compatible con PHP. Probablemente miraría las funciones de Microsoft Azure que son compatibles con PHP y tienen almacenamiento persistente.

Mientras que otros lenguajes (como Go, Rust, Swift, etc.) pueden “envolverse” para ejecutarse en AWS Lambda con relativa facilidad, compilar PHP dirigido a la misma plataforma y ejecutarlo es un poco diferente (y ciertamente más laborioso). Piense en todos los diversos módulos de PHP que necesitaría para empezar. Además, no puedo imaginar que el rendimiento sea tan bueno como algo como un binario Go.

Si puede hacer algo inteligente con el marco Phalcon y crear un proceso fácil de compilación e implementación, entonces maayyyybee.

Sin embargo, probablemente necesites revisar algo como WordPress que no fue diseñado para esto en absoluto. Todavía usa algunas convenciones bastante antiguas debido a la antigüedad del proyecto y, si bien eso está muy bien para su servidor PHP típico, es un juego de pelota diferente en el sentido de esta instalación PHP “portátil”.

Tenga en cuenta que también se confía en las sesiones de PHP, por lo que tendrá que moverlas a otro lugar debido a la falta de persistencia con AWS Lambda. ¿Probablemente puedas encontrar algún tipo de complemento para WordPress que funcione con Redis? Me tengo que imaginar que ya se ha construido algo así… Pero habrá muchas complicaciones.

Consideraría seriamente usar Azure Functions para comenzar O usar Docker y renunciar al modelo de precios que ofrecen las funciones en la nube. Todavía puede encontrar alojamiento bastante barato y escalable por ahí.

Lo que hice anteriormente fue usar AWS ECS (Docker) con EFS (almacenamiento en red) para la persistencia y RDS para la base de datos. Si bien no tiene el mismo modelo de precios que Lambda, sigue siendo rentable. Puede configurar su servicio ECS para escalar automáticamente hacia arriba y hacia abajo. Entonces, de esa manera, está ejecutando el mínimo indispensable hasta que necesite más.

He escrito un artículo más detallado sobre esto aquí: https://serifandsemaphore.io/how-to-host-wordpress-like-a-boss-b5993fcfbd8e#.n6fbnf8ii … pero básicamente es solo la idea de ejecutar WordPress en Docker y usar EFS para descargar los problemas de almacenamiento persistentes. Si lo desea, puede cambiar muchas de las piezas del rompecabezas. Use una base de datos alojada en algún otro servicio Docker o Compose o donde sea. Esa parte no necesita ser RDS por ejemplo. Incluso su almacenamiento podría manejarse de una manera diferente, ¡aunque EFS funcionó bastante bien! Lo único importante a tener en cuenta sobre EFS es la velocidad de escritura. Sin embargo, la mayoría de los sitios de WordPress se leen mucho. Su millaje variará dependiendo de sus necesidades.

  • Honestamente, es probable que su mayor costo con WordPress sea su base de datos, que de todos modos no está resolviendo con AWS Lambda.

    – Tomás

    20 de marzo de 2017 a las 16:27

  • Con Lambda y Aurora Serverless esto podría cambiar.

    – K..

    2 jun 2018 a las 22:11

  • Podría empezar a cambiar. Recuerde que PHP todavía no es compatible de forma nativa con Lambda. Entonces aún necesita una forma de conservar el almacenamiento, S3 es viable con complementos, pero todos los complementos instalados deberán administrarse mediante implementación y muchas funcionalidades de administración no funcionarán debido a la falta de persistencia. Puede poner activos en S3, pero no otras cosas del sistema (complementos, etc.). Aurora Serverless cambiará las reglas del juego en muchos sentidos.

    – Tomás

    10 de julio de 2018 a las 22:15

  • Por lo que vale, wordpress no se basa en sesiones de PHP.

    – estúpido

    26 de julio de 2018 a las 11:36

  • Eso también es parte de un problema de escala. En última instancia, tuvimos problemas tanto con WordPress como con Drupal hace años con el sitio UsMagazine debido a las sesiones en la base de datos. Era muy difícil de escalar y, en última instancia, no se podía usar para un sitio con un tráfico tan alto (al menos con el inicio de sesión/comentarios de los visitantes). Un lugar mejor sería memcached/redis/etc. DynamoDB en términos de “sin servidor” ??? Pero eso podría requerir un poco de piratería. Por eso creo que Aurora Serverless es lo mejor que podría pasar para ayudar a esta causa.

    – Tomás

    27 de julio de 2018 a las 15:09

¿Es posible? Sí, todo es posible con suficiente tiempo y esfuerzo. ¿Vale la pena? Esa es una pregunta que es mejor que te hagas a ti mismo.

PHP se puede ejecutar en Lambda según la documentación que se encuentra aquí: https://aws.amazon.com/blogs/compute/scripting-languages-for-aws-lambda-running-php-ruby-and-go/ .

El mayor problema inicial como se indica en otros comentarios es un sistema de archivos persistente. S3 para el almacenamiento de medios es factible a través del complemento de WordPress (nuevamente de los comentarios), pero cualquier otro almacenamiento persistente para la ejecución de la solicitud/secuencia de comandos es el mayor obstáculo inicial. ¡Aborda un problema a la vez hasta que llegues al final!

¿Ha sido útil esta solución?