Drupal + Silex , una unión interesante

El motivo de Drupal + Silex es simplemente ver si sería factible por un lado desacoplar el backend de Drupal con la capa de presentación del contenido.

La idea es generar archivos estáticos del contenido mediante Drupal+Boost y servirlos luego con Silex.

Drupal + Boost se encarga de generar el contenido estático.

Silex se encargaría de recibir las peticiones de lectura del servidor, buscar la petición en los archivos estáticos y devolver la peticón. Esto tiene varios problemas, pero el uso de Nginx podría solucionarlo.

Ventajas:

  • Rapidez
  • Menor consumo de recursos.
  • Se puede tener varios Webhead sirviendo estáticos sin que toquen mayormente a bbdds.

Inconvenientes

  • Habrá que ver como se resuelven las llamadas en ajax/ahah
  • Habrá que ver como se resuelven las peticiones cuando no se han generado aun el archivo estático.
  • Habrá que ver como se resuelven los formularios (comentarios, contactos, etc).

Las prueba que he hecho con ab - Apache HTTP server benchmarking tool es: ab -n 1000 -c 100 http//ruta.local/nodo/150

Pruebas de Benchmarking:

Silex Drupal Boost
Server Software: Apache/2.2.22
Server Hostname: silex.local
Server Port: 80

Document Path: /node/150
Document Length: 13172 bytes

Concurrency Level: 100
Time taken for tests: 2.977 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 13451000 bytes
HTML transferred: 13172000 bytes
Requests per second: 335.89 [#/sec] (mean)

Time per request: 297.720 [ms] (mean)
Time per request: 2.977 [ms] (mean, across all concurrent requests)
Transfer rate: 4412.12 [Kbytes/sec] received

Connection Times (ms)
min mean [+/-sd] median max
Connect: 3 102 29.0 96 225
Processing: 51 192 44.7 196 285
Waiting: 1 105 41.7 105 225
Total: 144 294 55.0 295 504

Percentage of the requests served within a certain time (ms)
50% 295
66% 312
75% 322
80% 331
90% 353
95% 375
98% 452
99% 482
100% 504 (longest request)

Server Software: Apache/2.2.22
Server Hostname: labo.local
Server Port: 80

Document Path: /node/150
Document Length: 13191 bytes

Concurrency Level: 100
Time taken for tests: 22.658 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 13746000 bytes
HTML transferred: 13191000 bytes
Requests per second: 44.14 [#/sec] (mean)

Time per request: 2265.773 [ms] (mean)
Time per request: 22.658 [ms] (mean, across all concurrent requests)
Transfer rate: 592.46 [Kbytes/sec] received

Connection Times (ms)
min mean [+/-sd] median max
Connect: 0 9 29.1 0 118
Processing: 567 2160 488.5 2118 5096
Waiting: 447 947 474.4 1878 4973
Total: 567 2169 483.8 2120 5096

Percentage of the requests served within a certain time (ms)
50% 2120
66% 2287
75% 2431
80% 2524
90% 2769
95% 2983
98% 3482
99% 3695
100% 5096 (longest request)

Además adjunto una imagen donde se muestran otros datos interesantes, se puede ver que la petición al servidor en Silex son 55ms, y en Apache Boost para usuarios anónimos son 172ms, si tenemos en cuenta que el resto de elementos de la web apaches los sirve con los mismo tiempos vemos que la llamada inicial es fundamental. boost_vs_silex.png

Se que esto es una frikada, y posiblemente no lleve a ningún lado, pero me parecía interesante probarlo y ver resultados podía dar.

Espero que sea útil a alguien.