SlideShare una empresa de Scribd logo
1 de 47
Descargar para leer sin conexión
20-22 junio 2013
Madrid
ESCALABILIDAD Y
ALTO RENDIMIENTO
CON SYMFONY2
Ricard Clau
deSymfony
¡muchas gracias a nuestros
patrocinadores!
deSymfony
RICARD CLAU
Twitter @ricardclau / Gmail ricard.clau@gmail.com
Emigrante en Londres
A veces doy charlas
Y de vez en cuando me aceptan PR en Github
VAMOS A HABLAR DE...
• Performance y escalabilidad
• Profiling y optimización
• Storage: SQL vs NoSQL
• ¡Basado en hechos reales!
• Casi todo sirve también en entornos sin Symfony2
• Symfony2 es suficientemente rápido. ¡De verdad!
CONCEPTOS
Escalabilidad, Disponibilidad, Balanceo, Sharding
Millones de
Usuarios en
todo el mundo
24x7x365
ESCALANDO
¿Qué modelo creéis que es mejor y más sostenible?
DISPONIBLES 24X7X365
Debemos podernos levantar rápido de cualquier problema
BALANCEO DE CARGA
Permite hacer cambios sin dejar de dar servicio
SHARDING
Llega un momento en que hay que hacerlo...
¡Y puede ser muy doloroso!
NO NOS PRECIPITEMOS...
• Evitad optimizaciones prematuras
• Las microoptimizaciones no
sirven para nada
• Foco a cosas de impacto
• Mejoras incrementales
• Si no se factura, no sirve de nada
NI ESPEREMOS AL DESASTRE...
• Monitorizad servidores: Ram,
CPUs, Disco, red, procesos idle...
• Intentad implicar a negocio
• Cuando algo esté a la mitad de
su capacidad, preparad plan B
• Morir de éxito es fatal
MANOS A LA OBRA
¿Por dónde empezamos?
CUIDAD EL FRONTEND
Minimizad las peticiones y su tamaño
COSAS FÁCILES DE APLICAR
• La request más rápida es la que no se hace
• Iconos en base64 dentro del CSS
• CSS y JS minificados, imágenes con jpegoptim, pngcrush, ...
• Usad cabeceras HTTP para poder cachear
• La latencia de red importa más de lo que parece
• Se puede ganar muchísimo en experiencia de usuario
ESCALANDO PHP
Facebook,Wikipedia,WordPress,YouPorn, ...
Softonic, Emagister, Privalia, LetsBonus, SocialPoint,Tuenti, ...
¿ESCALAR ES FÁCIL?
• PHP bootstrapea todo en cada Request, y escalar es tan
fácil como añadir máquinas tras un Load Balancer
• Pero eso provoca peor rendimiento que otros lenguajes
• Hay cosas a compartir como las sesiones o el storage
pero frameworks como Symfony nos lo ponen muy fácil
• Es una tecnología probada por sitios MUY grandes
• Los primeros problemas suelen estar en las BBDD
VIDA MÁS ALLA DE LAMP
• Servidores web ligeros para los assets
• Usad reverse proxy cache comoVarnish si podéis
cachear páginas (o trozos, con ESI) durante un cierto tiempo
• Cachead todo lo que podáis (APC, Memcached, Redis, ...).
Caché 10 segundos -> ¡ Sólo 6 peticiones por minuto!
• MySQL aguanta MUCHO. Pero hay problemas que se
solucionan mejor con bases de datos NoSQL
PERFORMANCE PHP
Opcode caches, composer, quick wins
Actualizar a PHP5.4 acelerará un 15-30%
APC: NUESTRO MEJOR AMIGO
• Si no sabes qué es, nunca te has preocupado del rendimiento
• apc.stat -> Off (Apache reload para ver cambios)
• apc.serializer -> igbinary (compact_strings a Off)
• apc.shm_size -> Ajustar a las necesidades
• apc.write_lock -> Evita problemas con caches frías
• Revisad http://www.php.net/manual/en/apc.configuration.php
ESTADO DE APC
http://svn.php.net/viewvc/pecl/apc/trunk/apc.php?view=markup
ZEND OPCACHE
• Será incluido en distribución estándar de PHP5.5 (válido
desde 5.2) y se evitarán problemas como PHP5.4+APC
• Mejor rendimiento que APC en todos los tests
• README https://github.com/zendtech/ZendOptimizerPlus
• APC Cache + Upload Hooks seguirán existiendo en APCU
(https://github.com/krakjoe/apcu)
• En @EmagisterTech lo tienen en producción hace meses :)
ESTADO DE OPCACHE
Rasmus en estado puro :)
(https://github.com/rlerdorf/opcache-status)
COMPOSER AUTOLOAD
• Usáis todos Composer, ¿no?
• Autoload costoso ya que se suele acceder
mucho al FileSystem
• composer.phar install --optimize-
autoloader (-o) genera ClassMap
• Mismo rendimiento con apc.stat a Off que
ApcUniversalClassLoader y muchas
menos claves en APC!
APC VS ZEND OPCACHE
http://www.ricardclau.com/2013/03/apc-vs-zend-optimizer-
benchmarks-with-symfony2/
APC VS ZEND OPCACHE
http://www.ricardclau.com/2013/03/apc-vs-zend-optimizer-
benchmarks-with-symfony2/
Comparativa Requests / segundo
EXPRIMIENDO SYMFONY2
• Con Apache, app/console router:dump-apache
• SwiftMailer pesa bastante, intentad delegarlo a daemons
• Si podéis, usad SubRequests con ESI y Varnish
• Probad la extensión de Twig
• Podéis implementar incluso un Cache Warmer
PROFILING
Diagnosticando cuellos de botella
HERRAMIENTAS PROFILING
• ¿Cuánto tiempo dedicáis a hacer profiling?
• Existen xDebug (Derick Rethans) y XHProf (Facebook)
• Es muy conveniente tener alguna (o ambas) instaladas en
producción y poderlas activar unos minutos
• En local también podemos ver muchas cosas
• Algunas cosas sólo pueden reproducirse con tráfico real
XHPROF (DEV VS PROD)
https://github.com/jonaswouters/XhprofBundle
HELLO WORLD
PHP y los frameworks...
Y las comparativas entre cosas que no tienen nada que ver
¿FRAMEWORKS == LENTOS?
• Existe la creencia de que un framework propio escrito
desde 0 será mucho mejor que coger uno existente
• También que los frameworks grandes consumen mucho. (ZF1
y Symfony2 funcionan con memory_limit 32M)
• Si ese es realmente tu problema, PHP tampoco es la solución
• ¡No os fiéis de los Hello World PerformanceTests!
• ¡Nadie sabe más que la inteligencia colectiva!
TECHEMPOWER BENCHMARK
• Symfony2 queda mal clasificado
• La comparación con otros FW PHP es algo injusta. Se
cargan muchas cosas innecesarias (PR#229 de @beberlei)
Hay incoherencias (frameworks PHP >> PHP)
• PHP nunca será más rápido que un lenguaje compilado
• Un buen acceso a los datos y cachear igualan las cosas
• Está en el roadmap intentar optimizar performance
GUARDANDO DATOS
Usa la herramienta correcta para el trabajo
Ninguno soluciona todos los problemas
BBDD RELACIONALES
• Tecnologías maduras y buena performance
• Transacciones: Atomicidad, Consistencia, aIslamieto, Durabilidad
• Podemos usarlas como NOSQLs clave-valor usando
campos BLOB con objetos serializados en el interior
• Soportan integridad referencial, Joins, querys complejas
• Millones de registros sin problemas
SOLUCIONES NOSQL
• Soluciones a algunos problemas concretos
• Teorema CAP (Consistencia, Disponibilidad,Tolerancia a
particionamiento). Solo se pueden tener 2.
• Inmadurez en muchas de ellas. Problemas escalando.
• ¿Big Data? 100 millones de registros NO lo es.
• Redis, Cassandra, Riak y Solr funcionan muy bien
SISTEMAS DE COLAS
Casi nada tiene por qué ser REAL-TIME
¿REAL-TIME? ¿ES NECESARIO?
• Intentad delegar todo lo que podáis a procesos en lote
• Ejemplos: Envío de mails, peticiones a APIs externas,
redimensionado de imágenes, estadísticas, ...
• El 99% de estadísticas no hace falta que sean real-time
• ¡60 segundos de decalaje es real-time a todos los efectos!
• ¡Podemos usar varios lenguajes para maximizar rendimiento!
PHP A VECES NO BASTA
O no es la mejor herramienta para lo que necesitamos
ESCENARIOS MALOS PHP
• Aplicaciones con daemons CLI corriendo 24x7
• Cálculos matemáticos, procesados masivos de datos,
concursos de programación
• Escenarios de alta concurrencia de usuarios con
peticiones no cacheables
• Threading, Forking
LOOKING BEYOND PHP
• El futuro es la interacción continua cliente-servidor.
• JavaScript será el rey en cliente
• En el servidor, Erlang y Go cada vez tienen más presencia y
está por ver la evolución de Node.JS
• Y siempre seguirán siendo necesarios lenguajes
compilados como Go, C, C++ o Java para algunas cosas
• ¡Aprender otros lenguajes nos hace mejores!
ELVIRUS ERLANG
• Es muy diferente a PHP.Además es divertido
• Problemas complejos solucionados hace más de 20
años por ingenieros de Ericsson
• Creemos que el futuro de Internet pasa por un uso
masivo de Erlang en todas partes
• No os perdáis la charla de Jordi Llonch y Marcos
Quesada en unos instantes!
SYMFONY2
Es suficientemente rápido para lo que quieres hacer
¿POR QUÉ ELEGIR SYMFONY2?
• Symfony2 NO es el framework más rápido para Hello World
pero es muy rápido para APIs y aplicaciones web
• Usar un framework tan grande es bueno, porque permite
probar cualquier tecnología en 5 minutos
• Crear tu framework tiene costes y riesgos muy elevados!
• Tiene un roadmap de releases LTS, proyectos grandes en
producción y una comunidad, madurez, número de
bundles, y estabilidad envidiable
DRAGONCITY: NÚMEROS
• ~7 millones de usuarios diarios (Facebook + iOS)
• ~300 millones de usuarios registrados
• Cientos de millones de registros diarios para analítica
• MySQL (32x2 + Analytics), Redis (~30), Cassandra (3)
• Las requests son tu partida -> No se puede cachear
• Y sí, casi todo el código es Symfony2! :)
POWERED BY SYMFONY2
Y creciendo...
CONCLUSIONES
• PHP y Symfony2 sirve para la mayoría de proyectos
• La estrategia de caching nos ayudará
• Podemos mejorar el rendimiento con buen profiling
• La BBDD suele ser el primer cuello de botella al escalar
• Un buen diseño de arquitectura es lo más importante
• PHP no es la mejor solución para algunos problemas
¿PREGUNTAS?
• Twitter: @ricardclau
• E-mail: ricard.clau@gmail.com
• Github: https://github.com/ricardclau
• Blog de PHP y Symfony2: http://www.ricardclau.com
• Por favor, comentad en http://joind.in/talk/view/8845

Más contenido relacionado

La actualidad más candente

Organizando un datacenter virtual
Organizando un datacenter virtualOrganizando un datacenter virtual
Organizando un datacenter virtualIgnacio Nin
 
Nuevo QNAP SO QTS 4.2 en Español
Nuevo QNAP SO QTS 4.2 en EspañolNuevo QNAP SO QTS 4.2 en Español
Nuevo QNAP SO QTS 4.2 en EspañolFernando Barrientos
 
[El comercio]php zend framework (speech)
[El comercio]php zend framework (speech)[El comercio]php zend framework (speech)
[El comercio]php zend framework (speech)Ernesto Anaya
 
Tools for High Availability
Tools for High AvailabilityTools for High Availability
Tools for High AvailabilityLuis Toscano
 
Keda o como convertir Kubernetess en Serverless
Keda o como convertir Kubernetess en ServerlessKeda o como convertir Kubernetess en Serverless
Keda o como convertir Kubernetess en ServerlessEduard Tomàs
 
Introduccion a Ansible
Introduccion a AnsibleIntroduccion a Ansible
Introduccion a AnsibleOsvaldo
 
SQL Server sobre Linux - Open Source & Azure
SQL Server sobre Linux - Open Source & AzureSQL Server sobre Linux - Open Source & Azure
SQL Server sobre Linux - Open Source & AzurePlain Concepts
 
.NET Memoria y Rendimiento
.NET Memoria y Rendimiento.NET Memoria y Rendimiento
.NET Memoria y RendimientoEduard Tomàs
 
Gestionando tu infraestructura con Ansible
Gestionando tu infraestructura con Ansible Gestionando tu infraestructura con Ansible
Gestionando tu infraestructura con Ansible Moisés Maciá
 
Escalando workloads serverless en Kubernetes con Keda
Escalando workloads serverless en Kubernetes con KedaEscalando workloads serverless en Kubernetes con Keda
Escalando workloads serverless en Kubernetes con KedaEduard Tomàs
 
OpenNebulaConf 2016 - Fast Prototyping of a C.O. into a Micro Data Center - A...
OpenNebulaConf 2016 - Fast Prototyping of a C.O. into a Micro Data Center - A...OpenNebulaConf 2016 - Fast Prototyping of a C.O. into a Micro Data Center - A...
OpenNebulaConf 2016 - Fast Prototyping of a C.O. into a Micro Data Center - A...OpenNebula Project
 
Qnap nas training latam 2016 0810
Qnap nas training latam 2016 0810Qnap nas training latam 2016 0810
Qnap nas training latam 2016 0810QNAP Systems, Inc.
 
De desarrollo a producción usando docker
De desarrollo a producción usando dockerDe desarrollo a producción usando docker
De desarrollo a producción usando dockerChristian Rodriguez
 
Otras Novedades (Always Encrypted, Row-Level Security, Mejoras AG)
 Otras Novedades (Always Encrypted, Row-Level Security, Mejoras AG) Otras Novedades (Always Encrypted, Row-Level Security, Mejoras AG)
Otras Novedades (Always Encrypted, Row-Level Security, Mejoras AG)SolidQ
 
Webinar Arquitectura de Microservicios
Webinar Arquitectura de MicroserviciosWebinar Arquitectura de Microservicios
Webinar Arquitectura de MicroserviciosDomingo Suarez Torres
 

La actualidad más candente (20)

Organizando un datacenter virtual
Organizando un datacenter virtualOrganizando un datacenter virtual
Organizando un datacenter virtual
 
Nuevo QNAP SO QTS 4.2 en Español
Nuevo QNAP SO QTS 4.2 en EspañolNuevo QNAP SO QTS 4.2 en Español
Nuevo QNAP SO QTS 4.2 en Español
 
[El comercio]php zend framework (speech)
[El comercio]php zend framework (speech)[El comercio]php zend framework (speech)
[El comercio]php zend framework (speech)
 
ONE Xperience at Facultat d'Informàtica de Barcelona
ONE Xperience at Facultat d'Informàtica de BarcelonaONE Xperience at Facultat d'Informàtica de Barcelona
ONE Xperience at Facultat d'Informàtica de Barcelona
 
Tuning Lamp
Tuning LampTuning Lamp
Tuning Lamp
 
Tools for High Availability
Tools for High AvailabilityTools for High Availability
Tools for High Availability
 
Rendimiento extremo en php
Rendimiento extremo en phpRendimiento extremo en php
Rendimiento extremo en php
 
Keda o como convertir Kubernetess en Serverless
Keda o como convertir Kubernetess en ServerlessKeda o como convertir Kubernetess en Serverless
Keda o como convertir Kubernetess en Serverless
 
Introduccion a Ansible
Introduccion a AnsibleIntroduccion a Ansible
Introduccion a Ansible
 
SQL Server sobre Linux - Open Source & Azure
SQL Server sobre Linux - Open Source & AzureSQL Server sobre Linux - Open Source & Azure
SQL Server sobre Linux - Open Source & Azure
 
.NET Memoria y Rendimiento
.NET Memoria y Rendimiento.NET Memoria y Rendimiento
.NET Memoria y Rendimiento
 
Gestionando tu infraestructura con Ansible
Gestionando tu infraestructura con Ansible Gestionando tu infraestructura con Ansible
Gestionando tu infraestructura con Ansible
 
Escalando workloads serverless en Kubernetes con Keda
Escalando workloads serverless en Kubernetes con KedaEscalando workloads serverless en Kubernetes con Keda
Escalando workloads serverless en Kubernetes con Keda
 
OpenNebulaConf 2016 - Fast Prototyping of a C.O. into a Micro Data Center - A...
OpenNebulaConf 2016 - Fast Prototyping of a C.O. into a Micro Data Center - A...OpenNebulaConf 2016 - Fast Prototyping of a C.O. into a Micro Data Center - A...
OpenNebulaConf 2016 - Fast Prototyping of a C.O. into a Micro Data Center - A...
 
Qnap nas training latam 2016 0810
Qnap nas training latam 2016 0810Qnap nas training latam 2016 0810
Qnap nas training latam 2016 0810
 
De desarrollo a producción usando docker
De desarrollo a producción usando dockerDe desarrollo a producción usando docker
De desarrollo a producción usando docker
 
Otras Novedades (Always Encrypted, Row-Level Security, Mejoras AG)
 Otras Novedades (Always Encrypted, Row-Level Security, Mejoras AG) Otras Novedades (Always Encrypted, Row-Level Security, Mejoras AG)
Otras Novedades (Always Encrypted, Row-Level Security, Mejoras AG)
 
Devops episodio 1. devOpsTnf
Devops episodio 1. devOpsTnf Devops episodio 1. devOpsTnf
Devops episodio 1. devOpsTnf
 
Mi experiencia con Amazon AWS EC2 y S3
Mi experiencia con Amazon AWS EC2 y S3Mi experiencia con Amazon AWS EC2 y S3
Mi experiencia con Amazon AWS EC2 y S3
 
Webinar Arquitectura de Microservicios
Webinar Arquitectura de MicroserviciosWebinar Arquitectura de Microservicios
Webinar Arquitectura de Microservicios
 

Destacado

SST 2014; The Reluctant SME
SST 2014; The Reluctant SMESST 2014; The Reluctant SME
SST 2014; The Reluctant SMEElisa Sawyer
 
Rendimiento en aplicaciones web con Symfony2
Rendimiento en aplicaciones web con Symfony2Rendimiento en aplicaciones web con Symfony2
Rendimiento en aplicaciones web con Symfony2Asier Marqués
 
Symfony2: Optimización y rendimiento
Symfony2: Optimización y rendimientoSymfony2: Optimización y rendimiento
Symfony2: Optimización y rendimientoRaul Fraile
 
Conferencia Rails: Integracion Continua Y Rails
Conferencia Rails: Integracion Continua Y RailsConferencia Rails: Integracion Continua Y Rails
Conferencia Rails: Integracion Continua Y RailsDavid Calavera
 
BDD: Descubriendo qué requiere realmente tu cliente
BDD: Descubriendo qué requiere realmente tu clienteBDD: Descubriendo qué requiere realmente tu cliente
BDD: Descubriendo qué requiere realmente tu clienteJorge Gamba
 
Introducción a Ganglia
Introducción a GangliaIntroducción a Ganglia
Introducción a GangliaDardo Valdez
 
Alta disponibilidad con MySQL
Alta disponibilidad con MySQLAlta disponibilidad con MySQL
Alta disponibilidad con MySQLDennis Cohn
 
Software Debt: Qué Es y Cómo Gestionarlo Holísticamente
Software Debt: Qué Es y Cómo Gestionarlo HolísticamenteSoftware Debt: Qué Es y Cómo Gestionarlo Holísticamente
Software Debt: Qué Es y Cómo Gestionarlo HolísticamenteAngel Nuñez
 
Continous Delivering a PHP application
Continous Delivering a PHP applicationContinous Delivering a PHP application
Continous Delivering a PHP applicationJavier López
 
Automatizacion de proyectos con gradle
Automatizacion de proyectos con gradleAutomatizacion de proyectos con gradle
Automatizacion de proyectos con gradleEdson Chávez Montaño
 
Introducción a DDD
Introducción a DDDIntroducción a DDD
Introducción a DDDsergiopolo
 
PhpSpec 2.0 ilustrated by examples
PhpSpec 2.0 ilustrated by examplesPhpSpec 2.0 ilustrated by examples
PhpSpec 2.0 ilustrated by examplesMarcello Duarte
 
Building and Deploying Application to Apache Mesos
Building and Deploying Application to Apache MesosBuilding and Deploying Application to Apache Mesos
Building and Deploying Application to Apache MesosJoe Stein
 

Destacado (20)

SST 2014; The Reluctant SME
SST 2014; The Reluctant SMESST 2014; The Reluctant SME
SST 2014; The Reluctant SME
 
Rendimiento en aplicaciones web con Symfony2
Rendimiento en aplicaciones web con Symfony2Rendimiento en aplicaciones web con Symfony2
Rendimiento en aplicaciones web con Symfony2
 
Symfony2: Optimización y rendimiento
Symfony2: Optimización y rendimientoSymfony2: Optimización y rendimiento
Symfony2: Optimización y rendimiento
 
Conferencia Rails: Integracion Continua Y Rails
Conferencia Rails: Integracion Continua Y RailsConferencia Rails: Integracion Continua Y Rails
Conferencia Rails: Integracion Continua Y Rails
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
BDD: Descubriendo qué requiere realmente tu cliente
BDD: Descubriendo qué requiere realmente tu clienteBDD: Descubriendo qué requiere realmente tu cliente
BDD: Descubriendo qué requiere realmente tu cliente
 
Introducción a Ganglia
Introducción a GangliaIntroducción a Ganglia
Introducción a Ganglia
 
Introducción a LDAP
Introducción a LDAPIntroducción a LDAP
Introducción a LDAP
 
Alta disponibilidad con MySQL
Alta disponibilidad con MySQLAlta disponibilidad con MySQL
Alta disponibilidad con MySQL
 
Software Debt: Qué Es y Cómo Gestionarlo Holísticamente
Software Debt: Qué Es y Cómo Gestionarlo HolísticamenteSoftware Debt: Qué Es y Cómo Gestionarlo Holísticamente
Software Debt: Qué Es y Cómo Gestionarlo Holísticamente
 
OAUTH introducción y entretenida explicación.
OAUTH introducción y entretenida explicación.OAUTH introducción y entretenida explicación.
OAUTH introducción y entretenida explicación.
 
Conferencia Monitoreo de Servidores con Nagios
Conferencia Monitoreo de Servidores con NagiosConferencia Monitoreo de Servidores con Nagios
Conferencia Monitoreo de Servidores con Nagios
 
TDD with phpspec2
TDD with phpspec2TDD with phpspec2
TDD with phpspec2
 
Continous Delivering a PHP application
Continous Delivering a PHP applicationContinous Delivering a PHP application
Continous Delivering a PHP application
 
Maven Overview
Maven OverviewMaven Overview
Maven Overview
 
Automatizacion de proyectos con gradle
Automatizacion de proyectos con gradleAutomatizacion de proyectos con gradle
Automatizacion de proyectos con gradle
 
Integrando sonar
Integrando sonarIntegrando sonar
Integrando sonar
 
Introducción a DDD
Introducción a DDDIntroducción a DDD
Introducción a DDD
 
PhpSpec 2.0 ilustrated by examples
PhpSpec 2.0 ilustrated by examplesPhpSpec 2.0 ilustrated by examples
PhpSpec 2.0 ilustrated by examples
 
Building and Deploying Application to Apache Mesos
Building and Deploying Application to Apache MesosBuilding and Deploying Application to Apache Mesos
Building and Deploying Application to Apache Mesos
 

Similar a Escalabilidad y alto rendimiento con Symfony2

NoEresTanEspecial-PulpoCon22.pdf
NoEresTanEspecial-PulpoCon22.pdfNoEresTanEspecial-PulpoCon22.pdf
NoEresTanEspecial-PulpoCon22.pdfRicard Clau
 
Escalando hasta las 10.000 peticiones por segundo
Escalando hasta las 10.000 peticiones por segundoEscalando hasta las 10.000 peticiones por segundo
Escalando hasta las 10.000 peticiones por segundoTAPTAP Networks
 
Sergio arroyo | TAPTAP Networks | Developers
Sergio arroyo | TAPTAP Networks | DevelopersSergio arroyo | TAPTAP Networks | Developers
Sergio arroyo | TAPTAP Networks | DevelopersSmash Tech
 
Why Apache Flink is better than Spark by Rubén Casado
Why Apache Flink is better than Spark by Rubén CasadoWhy Apache Flink is better than Spark by Rubén Casado
Why Apache Flink is better than Spark by Rubén CasadoBig Data Spain
 
Industria 4.0 Cloud computing
Industria 4.0 Cloud computingIndustria 4.0 Cloud computing
Industria 4.0 Cloud computingAula Cloud
 
¿Por que cambiar de Apache Hadoop a Apache Spark?
¿Por que cambiar de Apache Hadoop a Apache Spark?¿Por que cambiar de Apache Hadoop a Apache Spark?
¿Por que cambiar de Apache Hadoop a Apache Spark?Socialmetrix
 
AWS Presentacion Universidad de los Andes "Escalando para sus primeros 10 Mil...
AWS Presentacion Universidad de los Andes "Escalando para sus primeros 10 Mil...AWS Presentacion Universidad de los Andes "Escalando para sus primeros 10 Mil...
AWS Presentacion Universidad de los Andes "Escalando para sus primeros 10 Mil...Amazon Web Services
 
Symfony y 3 millones de usuarios, nuestro dia a dia
Symfony y 3 millones de usuarios, nuestro dia a diaSymfony y 3 millones de usuarios, nuestro dia a dia
Symfony y 3 millones de usuarios, nuestro dia a diaJordi Llonch
 
BBVA Arquitectura - Demo DevOps
BBVA Arquitectura - Demo DevOpsBBVA Arquitectura - Demo DevOps
BBVA Arquitectura - Demo DevOpsErnesto Anaya
 
Escalando para sus primeros 10 millones de usuarios
Escalando para sus primeros 10 millones de usuariosEscalando para sus primeros 10 millones de usuarios
Escalando para sus primeros 10 millones de usuariosAmazon Web Services LATAM
 
SG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache CamelSG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache CamelDomingo Suarez Torres
 
Lado oscuro de big data y el ingeniero del siglo xxi
Lado oscuro de big data y el ingeniero del siglo xxiLado oscuro de big data y el ingeniero del siglo xxi
Lado oscuro de big data y el ingeniero del siglo xxiJosé Carlos García Serrano
 
Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...
Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...
Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...SolidQ
 
Presentación omega peripherals
Presentación omega peripheralsPresentación omega peripherals
Presentación omega peripheralsOmega Peripherals
 
Code Blast 2012 - Node.js
Code Blast 2012 - Node.jsCode Blast 2012 - Node.js
Code Blast 2012 - Node.jsINSIGNIA4U
 
Desarrollo modermo de aplicaciones web
Desarrollo modermo de aplicaciones webDesarrollo modermo de aplicaciones web
Desarrollo modermo de aplicaciones webRoberto Sanz Ciriano
 
Analitica y toma de decisiones en tiempo real sobre plataformas big data
Analitica y toma de decisiones en tiempo real sobre plataformas big dataAnalitica y toma de decisiones en tiempo real sobre plataformas big data
Analitica y toma de decisiones en tiempo real sobre plataformas big dataJosé Carlos García Serrano
 

Similar a Escalabilidad y alto rendimiento con Symfony2 (20)

NoEresTanEspecial-PulpoCon22.pdf
NoEresTanEspecial-PulpoCon22.pdfNoEresTanEspecial-PulpoCon22.pdf
NoEresTanEspecial-PulpoCon22.pdf
 
"Al rico" PHP
"Al rico" PHP"Al rico" PHP
"Al rico" PHP
 
Escalando hasta las 10.000 peticiones por segundo
Escalando hasta las 10.000 peticiones por segundoEscalando hasta las 10.000 peticiones por segundo
Escalando hasta las 10.000 peticiones por segundo
 
Sergio arroyo | TAPTAP Networks | Developers
Sergio arroyo | TAPTAP Networks | DevelopersSergio arroyo | TAPTAP Networks | Developers
Sergio arroyo | TAPTAP Networks | Developers
 
Why Apache Flink is better than Spark by Rubén Casado
Why Apache Flink is better than Spark by Rubén CasadoWhy Apache Flink is better than Spark by Rubén Casado
Why Apache Flink is better than Spark by Rubén Casado
 
Industria 4.0 Cloud computing
Industria 4.0 Cloud computingIndustria 4.0 Cloud computing
Industria 4.0 Cloud computing
 
¿Por que cambiar de Apache Hadoop a Apache Spark?
¿Por que cambiar de Apache Hadoop a Apache Spark?¿Por que cambiar de Apache Hadoop a Apache Spark?
¿Por que cambiar de Apache Hadoop a Apache Spark?
 
Panel Magmaconf
Panel MagmaconfPanel Magmaconf
Panel Magmaconf
 
AWS Presentacion Universidad de los Andes "Escalando para sus primeros 10 Mil...
AWS Presentacion Universidad de los Andes "Escalando para sus primeros 10 Mil...AWS Presentacion Universidad de los Andes "Escalando para sus primeros 10 Mil...
AWS Presentacion Universidad de los Andes "Escalando para sus primeros 10 Mil...
 
Symfony y 3 millones de usuarios, nuestro dia a dia
Symfony y 3 millones de usuarios, nuestro dia a diaSymfony y 3 millones de usuarios, nuestro dia a dia
Symfony y 3 millones de usuarios, nuestro dia a dia
 
BBVA Arquitectura - Demo DevOps
BBVA Arquitectura - Demo DevOpsBBVA Arquitectura - Demo DevOps
BBVA Arquitectura - Demo DevOps
 
Escalando para sus primeros 10 millones de usuarios
Escalando para sus primeros 10 millones de usuariosEscalando para sus primeros 10 millones de usuarios
Escalando para sus primeros 10 millones de usuarios
 
SG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache CamelSG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache Camel
 
Lado oscuro de big data y el ingeniero del siglo xxi
Lado oscuro de big data y el ingeniero del siglo xxiLado oscuro de big data y el ingeniero del siglo xxi
Lado oscuro de big data y el ingeniero del siglo xxi
 
Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...
Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...
Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...
 
Presentación omega peripherals
Presentación omega peripheralsPresentación omega peripherals
Presentación omega peripherals
 
Code Blast 2012 - Node.js
Code Blast 2012 - Node.jsCode Blast 2012 - Node.js
Code Blast 2012 - Node.js
 
Desarrollo modermo de aplicaciones web
Desarrollo modermo de aplicaciones webDesarrollo modermo de aplicaciones web
Desarrollo modermo de aplicaciones web
 
Servicios de Bases de Datos de AWS
Servicios de Bases de Datos de AWSServicios de Bases de Datos de AWS
Servicios de Bases de Datos de AWS
 
Analitica y toma de decisiones en tiempo real sobre plataformas big data
Analitica y toma de decisiones en tiempo real sobre plataformas big dataAnalitica y toma de decisiones en tiempo real sobre plataformas big data
Analitica y toma de decisiones en tiempo real sobre plataformas big data
 

Más de Ricard Clau

DevOps Barcelona Conference 2018 - Intro
DevOps Barcelona Conference 2018 - IntroDevOps Barcelona Conference 2018 - Intro
DevOps Barcelona Conference 2018 - IntroRicard Clau
 
Hashicorp at holaluz
Hashicorp at holaluzHashicorp at holaluz
Hashicorp at holaluzRicard Clau
 
What we talk about when we talk about DevOps
What we talk about when we talk about DevOpsWhat we talk about when we talk about DevOps
What we talk about when we talk about DevOpsRicard Clau
 
Building a bakery of Windows servers with Packer - London WinOps
Building a bakery of Windows servers with Packer - London WinOpsBuilding a bakery of Windows servers with Packer - London WinOps
Building a bakery of Windows servers with Packer - London WinOpsRicard Clau
 
Modern software architectures - PHP UK Conference 2015
Modern software architectures - PHP UK Conference 2015Modern software architectures - PHP UK Conference 2015
Modern software architectures - PHP UK Conference 2015Ricard Clau
 
Big Data! Great! Now What? #SymfonyCon 2014
Big Data! Great! Now What? #SymfonyCon 2014Big Data! Great! Now What? #SymfonyCon 2014
Big Data! Great! Now What? #SymfonyCon 2014Ricard Clau
 
Speed up your Symfony2 application and build awesome features with Redis
Speed up your Symfony2 application and build awesome features with RedisSpeed up your Symfony2 application and build awesome features with Redis
Speed up your Symfony2 application and build awesome features with RedisRicard Clau
 
Scaling with Symfony - PHP UK
Scaling with Symfony - PHP UKScaling with Symfony - PHP UK
Scaling with Symfony - PHP UKRicard Clau
 
Redis Everywhere - Sunshine PHP
Redis Everywhere - Sunshine PHPRedis Everywhere - Sunshine PHP
Redis Everywhere - Sunshine PHPRicard Clau
 
Redis everywhere - PHP London
Redis everywhere - PHP LondonRedis everywhere - PHP London
Redis everywhere - PHP LondonRicard Clau
 
Betabeers Barcelona - Buenas prácticas
Betabeers Barcelona - Buenas prácticasBetabeers Barcelona - Buenas prácticas
Betabeers Barcelona - Buenas prácticasRicard Clau
 
Desymfony - Servicios
Desymfony  - ServiciosDesymfony  - Servicios
Desymfony - ServiciosRicard Clau
 

Más de Ricard Clau (14)

devopsbcn23.pdf
devopsbcn23.pdfdevopsbcn23.pdf
devopsbcn23.pdf
 
devopsbcn22.pdf
devopsbcn22.pdfdevopsbcn22.pdf
devopsbcn22.pdf
 
DevOps Barcelona Conference 2018 - Intro
DevOps Barcelona Conference 2018 - IntroDevOps Barcelona Conference 2018 - Intro
DevOps Barcelona Conference 2018 - Intro
 
Hashicorp at holaluz
Hashicorp at holaluzHashicorp at holaluz
Hashicorp at holaluz
 
What we talk about when we talk about DevOps
What we talk about when we talk about DevOpsWhat we talk about when we talk about DevOps
What we talk about when we talk about DevOps
 
Building a bakery of Windows servers with Packer - London WinOps
Building a bakery of Windows servers with Packer - London WinOpsBuilding a bakery of Windows servers with Packer - London WinOps
Building a bakery of Windows servers with Packer - London WinOps
 
Modern software architectures - PHP UK Conference 2015
Modern software architectures - PHP UK Conference 2015Modern software architectures - PHP UK Conference 2015
Modern software architectures - PHP UK Conference 2015
 
Big Data! Great! Now What? #SymfonyCon 2014
Big Data! Great! Now What? #SymfonyCon 2014Big Data! Great! Now What? #SymfonyCon 2014
Big Data! Great! Now What? #SymfonyCon 2014
 
Speed up your Symfony2 application and build awesome features with Redis
Speed up your Symfony2 application and build awesome features with RedisSpeed up your Symfony2 application and build awesome features with Redis
Speed up your Symfony2 application and build awesome features with Redis
 
Scaling with Symfony - PHP UK
Scaling with Symfony - PHP UKScaling with Symfony - PHP UK
Scaling with Symfony - PHP UK
 
Redis Everywhere - Sunshine PHP
Redis Everywhere - Sunshine PHPRedis Everywhere - Sunshine PHP
Redis Everywhere - Sunshine PHP
 
Redis everywhere - PHP London
Redis everywhere - PHP LondonRedis everywhere - PHP London
Redis everywhere - PHP London
 
Betabeers Barcelona - Buenas prácticas
Betabeers Barcelona - Buenas prácticasBetabeers Barcelona - Buenas prácticas
Betabeers Barcelona - Buenas prácticas
 
Desymfony - Servicios
Desymfony  - ServiciosDesymfony  - Servicios
Desymfony - Servicios
 

Último

POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 

Último (16)

POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 

Escalabilidad y alto rendimiento con Symfony2

  • 1. 20-22 junio 2013 Madrid ESCALABILIDAD Y ALTO RENDIMIENTO CON SYMFONY2 Ricard Clau deSymfony
  • 2. ¡muchas gracias a nuestros patrocinadores! deSymfony
  • 3. RICARD CLAU Twitter @ricardclau / Gmail ricard.clau@gmail.com Emigrante en Londres A veces doy charlas Y de vez en cuando me aceptan PR en Github
  • 4. VAMOS A HABLAR DE... • Performance y escalabilidad • Profiling y optimización • Storage: SQL vs NoSQL • ¡Basado en hechos reales! • Casi todo sirve también en entornos sin Symfony2 • Symfony2 es suficientemente rápido. ¡De verdad!
  • 5. CONCEPTOS Escalabilidad, Disponibilidad, Balanceo, Sharding Millones de Usuarios en todo el mundo 24x7x365
  • 6. ESCALANDO ¿Qué modelo creéis que es mejor y más sostenible?
  • 7. DISPONIBLES 24X7X365 Debemos podernos levantar rápido de cualquier problema
  • 8. BALANCEO DE CARGA Permite hacer cambios sin dejar de dar servicio
  • 9. SHARDING Llega un momento en que hay que hacerlo... ¡Y puede ser muy doloroso!
  • 10. NO NOS PRECIPITEMOS... • Evitad optimizaciones prematuras • Las microoptimizaciones no sirven para nada • Foco a cosas de impacto • Mejoras incrementales • Si no se factura, no sirve de nada
  • 11. NI ESPEREMOS AL DESASTRE... • Monitorizad servidores: Ram, CPUs, Disco, red, procesos idle... • Intentad implicar a negocio • Cuando algo esté a la mitad de su capacidad, preparad plan B • Morir de éxito es fatal
  • 12. MANOS A LA OBRA ¿Por dónde empezamos?
  • 13. CUIDAD EL FRONTEND Minimizad las peticiones y su tamaño
  • 14. COSAS FÁCILES DE APLICAR • La request más rápida es la que no se hace • Iconos en base64 dentro del CSS • CSS y JS minificados, imágenes con jpegoptim, pngcrush, ... • Usad cabeceras HTTP para poder cachear • La latencia de red importa más de lo que parece • Se puede ganar muchísimo en experiencia de usuario
  • 15. ESCALANDO PHP Facebook,Wikipedia,WordPress,YouPorn, ... Softonic, Emagister, Privalia, LetsBonus, SocialPoint,Tuenti, ...
  • 16. ¿ESCALAR ES FÁCIL? • PHP bootstrapea todo en cada Request, y escalar es tan fácil como añadir máquinas tras un Load Balancer • Pero eso provoca peor rendimiento que otros lenguajes • Hay cosas a compartir como las sesiones o el storage pero frameworks como Symfony nos lo ponen muy fácil • Es una tecnología probada por sitios MUY grandes • Los primeros problemas suelen estar en las BBDD
  • 17. VIDA MÁS ALLA DE LAMP • Servidores web ligeros para los assets • Usad reverse proxy cache comoVarnish si podéis cachear páginas (o trozos, con ESI) durante un cierto tiempo • Cachead todo lo que podáis (APC, Memcached, Redis, ...). Caché 10 segundos -> ¡ Sólo 6 peticiones por minuto! • MySQL aguanta MUCHO. Pero hay problemas que se solucionan mejor con bases de datos NoSQL
  • 18. PERFORMANCE PHP Opcode caches, composer, quick wins Actualizar a PHP5.4 acelerará un 15-30%
  • 19. APC: NUESTRO MEJOR AMIGO • Si no sabes qué es, nunca te has preocupado del rendimiento • apc.stat -> Off (Apache reload para ver cambios) • apc.serializer -> igbinary (compact_strings a Off) • apc.shm_size -> Ajustar a las necesidades • apc.write_lock -> Evita problemas con caches frías • Revisad http://www.php.net/manual/en/apc.configuration.php
  • 21. ZEND OPCACHE • Será incluido en distribución estándar de PHP5.5 (válido desde 5.2) y se evitarán problemas como PHP5.4+APC • Mejor rendimiento que APC en todos los tests • README https://github.com/zendtech/ZendOptimizerPlus • APC Cache + Upload Hooks seguirán existiendo en APCU (https://github.com/krakjoe/apcu) • En @EmagisterTech lo tienen en producción hace meses :)
  • 22. ESTADO DE OPCACHE Rasmus en estado puro :) (https://github.com/rlerdorf/opcache-status)
  • 23. COMPOSER AUTOLOAD • Usáis todos Composer, ¿no? • Autoload costoso ya que se suele acceder mucho al FileSystem • composer.phar install --optimize- autoloader (-o) genera ClassMap • Mismo rendimiento con apc.stat a Off que ApcUniversalClassLoader y muchas menos claves en APC!
  • 24. APC VS ZEND OPCACHE http://www.ricardclau.com/2013/03/apc-vs-zend-optimizer- benchmarks-with-symfony2/
  • 25. APC VS ZEND OPCACHE http://www.ricardclau.com/2013/03/apc-vs-zend-optimizer- benchmarks-with-symfony2/ Comparativa Requests / segundo
  • 26. EXPRIMIENDO SYMFONY2 • Con Apache, app/console router:dump-apache • SwiftMailer pesa bastante, intentad delegarlo a daemons • Si podéis, usad SubRequests con ESI y Varnish • Probad la extensión de Twig • Podéis implementar incluso un Cache Warmer
  • 28. HERRAMIENTAS PROFILING • ¿Cuánto tiempo dedicáis a hacer profiling? • Existen xDebug (Derick Rethans) y XHProf (Facebook) • Es muy conveniente tener alguna (o ambas) instaladas en producción y poderlas activar unos minutos • En local también podemos ver muchas cosas • Algunas cosas sólo pueden reproducirse con tráfico real
  • 29. XHPROF (DEV VS PROD) https://github.com/jonaswouters/XhprofBundle
  • 30. HELLO WORLD PHP y los frameworks... Y las comparativas entre cosas que no tienen nada que ver
  • 31. ¿FRAMEWORKS == LENTOS? • Existe la creencia de que un framework propio escrito desde 0 será mucho mejor que coger uno existente • También que los frameworks grandes consumen mucho. (ZF1 y Symfony2 funcionan con memory_limit 32M) • Si ese es realmente tu problema, PHP tampoco es la solución • ¡No os fiéis de los Hello World PerformanceTests! • ¡Nadie sabe más que la inteligencia colectiva!
  • 32. TECHEMPOWER BENCHMARK • Symfony2 queda mal clasificado • La comparación con otros FW PHP es algo injusta. Se cargan muchas cosas innecesarias (PR#229 de @beberlei) Hay incoherencias (frameworks PHP >> PHP) • PHP nunca será más rápido que un lenguaje compilado • Un buen acceso a los datos y cachear igualan las cosas • Está en el roadmap intentar optimizar performance
  • 33. GUARDANDO DATOS Usa la herramienta correcta para el trabajo Ninguno soluciona todos los problemas
  • 34. BBDD RELACIONALES • Tecnologías maduras y buena performance • Transacciones: Atomicidad, Consistencia, aIslamieto, Durabilidad • Podemos usarlas como NOSQLs clave-valor usando campos BLOB con objetos serializados en el interior • Soportan integridad referencial, Joins, querys complejas • Millones de registros sin problemas
  • 35. SOLUCIONES NOSQL • Soluciones a algunos problemas concretos • Teorema CAP (Consistencia, Disponibilidad,Tolerancia a particionamiento). Solo se pueden tener 2. • Inmadurez en muchas de ellas. Problemas escalando. • ¿Big Data? 100 millones de registros NO lo es. • Redis, Cassandra, Riak y Solr funcionan muy bien
  • 36. SISTEMAS DE COLAS Casi nada tiene por qué ser REAL-TIME
  • 37. ¿REAL-TIME? ¿ES NECESARIO? • Intentad delegar todo lo que podáis a procesos en lote • Ejemplos: Envío de mails, peticiones a APIs externas, redimensionado de imágenes, estadísticas, ... • El 99% de estadísticas no hace falta que sean real-time • ¡60 segundos de decalaje es real-time a todos los efectos! • ¡Podemos usar varios lenguajes para maximizar rendimiento!
  • 38. PHP A VECES NO BASTA O no es la mejor herramienta para lo que necesitamos
  • 39. ESCENARIOS MALOS PHP • Aplicaciones con daemons CLI corriendo 24x7 • Cálculos matemáticos, procesados masivos de datos, concursos de programación • Escenarios de alta concurrencia de usuarios con peticiones no cacheables • Threading, Forking
  • 40. LOOKING BEYOND PHP • El futuro es la interacción continua cliente-servidor. • JavaScript será el rey en cliente • En el servidor, Erlang y Go cada vez tienen más presencia y está por ver la evolución de Node.JS • Y siempre seguirán siendo necesarios lenguajes compilados como Go, C, C++ o Java para algunas cosas • ¡Aprender otros lenguajes nos hace mejores!
  • 41. ELVIRUS ERLANG • Es muy diferente a PHP.Además es divertido • Problemas complejos solucionados hace más de 20 años por ingenieros de Ericsson • Creemos que el futuro de Internet pasa por un uso masivo de Erlang en todas partes • No os perdáis la charla de Jordi Llonch y Marcos Quesada en unos instantes!
  • 42. SYMFONY2 Es suficientemente rápido para lo que quieres hacer
  • 43. ¿POR QUÉ ELEGIR SYMFONY2? • Symfony2 NO es el framework más rápido para Hello World pero es muy rápido para APIs y aplicaciones web • Usar un framework tan grande es bueno, porque permite probar cualquier tecnología en 5 minutos • Crear tu framework tiene costes y riesgos muy elevados! • Tiene un roadmap de releases LTS, proyectos grandes en producción y una comunidad, madurez, número de bundles, y estabilidad envidiable
  • 44. DRAGONCITY: NÚMEROS • ~7 millones de usuarios diarios (Facebook + iOS) • ~300 millones de usuarios registrados • Cientos de millones de registros diarios para analítica • MySQL (32x2 + Analytics), Redis (~30), Cassandra (3) • Las requests son tu partida -> No se puede cachear • Y sí, casi todo el código es Symfony2! :)
  • 45. POWERED BY SYMFONY2 Y creciendo...
  • 46. CONCLUSIONES • PHP y Symfony2 sirve para la mayoría de proyectos • La estrategia de caching nos ayudará • Podemos mejorar el rendimiento con buen profiling • La BBDD suele ser el primer cuello de botella al escalar • Un buen diseño de arquitectura es lo más importante • PHP no es la mejor solución para algunos problemas
  • 47. ¿PREGUNTAS? • Twitter: @ricardclau • E-mail: ricard.clau@gmail.com • Github: https://github.com/ricardclau • Blog de PHP y Symfony2: http://www.ricardclau.com • Por favor, comentad en http://joind.in/talk/view/8845