Symfony Barcelona: We Are Marketing acude al evento Symfony del año

Más de 400 personas acudieron estos días al meetup organizado por Symfony Barcelona, We Are Marketing estuvo allí y aquí te informamos de todas las novedades.

¡The Inbounder World Tour 2017 ha llegado! Cuatro ciudades han sido los escenarios elegidos en España, Europa y Estados Unidos. Tras el éxito de Madrid, Londres y Nueva York la nave The Inbounder llegará a Milán. Las entradas para Milán del próximo 15 de septiembre ya están a la venta. ¡No te quedes en tierra! Sube a la nave #theInbounder

Una vez más asistí a la nueva edición del evento de Symfony Barcelona  del pasado martes 22 de septiembre. Una vez más, los ponentes fueron de un altísimo nivel, Lukas Smith, que habló sobre API REST con Symfony, y Fabien Potencier, creador de Symfony, que habló sobre su nuevo proyecto Blackfire.

 Alfonso Symfony Barcelona 1.jpg

(Imagen: Fabien Potencier, creador de Symfony y Alfonso Machado, senior developer de We Are Marketing)

 

El evento se hizo en el auditorio AXA, una sala para eventos de 600 personas. Un lugar muy apropiado para el impacto y repercusión que iba tener el evento dado la calidad de los ponentes ya que la última vez ya se quedó pequeño el Grizzly 72 Sports Bar.

 

Empezó con una pequeña presentación por parte de Marc Morera presentando la comunidad y agradeciendo a todos los sponsors (entre los que estaba WAM We Are Marketing) porque gracias a ellos se había podido realizar este evento de esta magnitud. A continuación presentó a los ponentes y dio paso a Lukas Smith.

 

Captura de pantalla 2015-09-25 a las 12.17.20.png

 

"RESTing with Symfony”

Lukas trabaja en Liip, una empresa de Suiza con más de 120 trabajadores, ha colaborado en más de 12 proyectos open source, ha trabajado en el core de PHP, creador del bundle FOSRestBundle y actualmente mantiene el CMF de Symfony.

 

Comenzó haciendo una reflexión sobre su experiencia con API REST en la que dijo que realmente comprendió REST cuando llego a ver y usar las cabeceras de caché de la request y la response y cuando usó proxis inversos para cachear las peticiones.

 

A partir de aquí hizo una breve introducción sobre el Rest Maturity Model, RMM, que planteo Martin Fowler sobre como deberían ser definidos los servicios REST.

 

martinfowler.png

 

(Imagen: Martinfowler.com)

 

  • Nivel 0: nivel más básico y simple. Es simplemente un mecanismo de llamadas (RPC) entre servidores para enviar o recibir información. No aporta ninguna semántica la comunicación ni se aprovechan las ventajas del protocolo HTTP. Es habitual que en este tipo de APIs se necesite leer absolutamente toda la documentación para poder entender qué hace, ya que no hay coherencia entre las llamadas o las entradas y valores devueltos de las mismas.

 

  • Nivel 1: Se le aporta un poco de semántica. Aparece el concepto de ‘recurso’ al que se le aplican ciertas operaciones (creación, actualización, borrado, etc). Cada recurso se identifica con un identificador (URI). Se sigue sin aprovechar realmente el protocolo HTTP para darle más semántica a la comunicación.

 

  • Nivel 2: La definición de la API se basa en recursos que se identifican por URI y en los “verbos” o métodos (GET, POST, PUT, DELETE, etc ) y códigos de respuesta (404 Not found, 201 Created, 501 Not Implemented, etc) de HTTP.

 

  • Nivel 3:  Basándose en el nivel 2, añade la relación entre servicios y, por consecuencia, el poder ir descubriendo los recursos a medida que se va navegando por los mismos. Aparece el concepto de ‘HATEOAS Hypertext As The Engine Of Application State’, es decir, la propia navegación que haría un usuario a través de los distintos recursos la puede hacer la propia aplicación basándose en estos enlaces.

 

Por último, destacó la negociación del contenido. El formato de la respuesta no es parte de la URI, por lo que es necesario un mecanismo que permita devolver al cliente la respuesta en un formato que entienda. Para esto no existe ningún algoritmo estandarizado por lo que  cada uno podría implementar el suyo. Apache ha desarrollado un módulo que implementa una posible solución: mod_negotiation. Este módulo usa la misma técnica que se usa para la cabecera de los lenguajes aceptados por el navegador (Accept-Languages). Un ejemplo de cabecera sería:

 

Accept: application/json, application/xml;q=0.9, text/html;q=0.8,text/*;q=0.7, */*;q=0.5

 

En la que el orden de prioridad para devolver la respuesta en cierto formato sería:

 

Priority Description

 

q=1.0 application/json

q=0.9 application/xml

q=0.8 text/html

q=0.7 text/* (ie. any text)

q=0.5*/* (ie. any media type)

 

Y de acuerdo a esas prioridades el servidor devuelve la respuesta en el formato que entienda el cliente.

 

Después de la teoría viene la práctica. Y Lukas Smith explicó - por encima y brevemente - las siguientes librerías PHP para poder desarrollar una API REST en Symfony.

 

  • JMSserializeBundle: una librería que permite mediante anotaciones de symfony configurar de una forma muy sencilla la serialización de las entidades en json y xml entre otros formatos.

  • FOSRestBundle: un conjunto de servicios y listeners que facilitan la creación de API RESTFull. Permite generar respuestas en HTML, XML y JSON, facilita la creación de las rutas, validación de parámetros get, versionado de la api, y más cosas que puedes ver en su documentación (http://symfony.com/doc/current/bundles/FOSRestBundle/index.html).

  • BazingaHateoasBundle: Permite crear de una forma muy sencilla la relación de los recursos entre sí, permitiendo de esta forma poder llegar al nivel 3 de RMM de una forma relativamente simple.

  • TemplatedUriBundle: ayuda con la generación de la url de los recursos para que se mantenga el identificador único del recurso (URI).

Y, aunque ya no explicó mucho más porque no le quedaba tiempo, comentó que también son muy útiles NelmioApiDocBundle, FOSHttpCacheBundle, HWIOAuthBundle y FOSOAuthServerBundle.

 

“Performance is no more a curse”

Ahora es el turno de Fabien Portencier, el creador de Symfony, una eminencia en el mundo PHP. La charla de Fabien a diferencia de la de Lukas fue muy concreta y fue directo al grano: vender Blackfire como la mejor herramienta de profiling.

 

Comenzó hablando sobre la importancia que tiene hoy en día que el tiempo de carga de una web sea muy rápida. Comenta que las estadísticas dicen que un 40% de los usuarios abandonan la página web cuando tarda más de 3 segundos en cargarse y es por ello que considera que es fundamental tener muy en cuenta este aspecto.

 

Para conseguir mejorar la performance de una página web una de las mejores formas es a través del profiling, una técnica que consiste en analizar el tiempo que invierte cada función o parte del código y detectar cuales tardan más para optimizarlas.

 

Entre las alternativas que existen está el profiler de Xdebug, que, según comentó Fabien, tiene el problema de sobrecargar la ejecución del código, ya que está constantemente observando lo que hace la aplicación por lo que los tiempos resultantes no son muy fiables.

 

Por otro lado está xhprof una herramienta de profiling que desarrolló Facebook e hizo pública en 2009. Esta herramienta ya no se está manteniendo mucho y por su parte Facebook la dejó de lado.

 

Es por esto que Fabien, partiendo de la base de xhprof, comienza a desarrollar Blackfire: herramienta de profiling para proyectos PHP con unos informes de tiempos muy intuitivos a la hora de comprender y analizar la información que proporciona. Genera unos árboles de llamadas a través de los cuales se puede ir navegando y viendo el tiempo que consume cada una de las funciones tanto de CPU, como de memoria o de elementos de entrada y salida (conexión a internet, acceso a base de datos, entre otros ejemplos).

 

El propio Fabien dice que la ha usado para servicios internos de SensioLabs y ha conseguido reducir un proceso que tenían en 5 workers a 2.

 

Lo mejor es que veas el vídeo presentación, ya que realmente entra mucho más por los ojos.

 

Finalmente, volvió a salir Marc al escenario y repartió muchos premios que ofrecían los patrocinadores entre los asistentes y cerró el evento.

Captura de pantalla 2015-09-25 a las 12.17.31.png

 

Después de estas dos últimas ediciones será muy difícil subir el nivel, solo espero que siga igual y poder volver a asistir.

 

¿Aún no te has suscrito a nuestra Newsletter?

¡Tenemos un montón de cosas que contarte! Actualidad, entrevistas, artículos de interés, herramientas imprescindibles, curiosidades… Todo, cada dos semanas en tu buzón.

amachado
amachado
25/09/2015

OMG

¿Aún no te has suscrito a nuestra Newsletter?

¡Tenemos un montón de cosas que contarte! Actualidad, entrevistas, artículos de interés, herramientas imprescindibles, curiosidades… Todo, cada dos semanas en tu buzón.