Matías Montes: Optimización y Escalabilidad

Embed Size (px)

DESCRIPTION

Charla de Matías Montes titulada "Optimización y Escalabilidad" en las Primeras Charlas del Grupo PHP Argentina

Text of Matías Montes: Optimización y Escalabilidad

  • 1. Optimizacin y Escalabilidad

2. Quin soy yo? Matas Montes (Barbazul) Developer @ SemExpert [email_address] YO ElePHPant 3. De que estamos hablando?

  • Optimizacion:[...]proceso de modificar un sistema para mejorar su eficiencia o tambin el uso de los recursos disponibles.

4. Escalabilidad:[...] es la propiedad deseable de un sistema, una red o un proceso, que indica su habilidad para extender el margen de operaciones sin perder calidad, o bien manejar el crecimiento continuo de trabajo de manera fluida, o bien para estar preparado para hacerse ms grande sin perder calidad en los servicios ofrecidos. Fuente: Wikipedia 5. De qu hablamos realmente? 6. El modelo 3-tier YO $ $ $ 7. Crear sistemas escalables

  • Programar pensando en escalar (estrategia)

8. Conocer las limitaciones 9. Conocer los recursos 10. Monitorear y medir el crecimiento 11. Optimizar, siempre optimizar 12. Estudiar para bombero 13. Cuatro cuadrantes de una web app Fuente: Flaptor No escala Pocos usuarios Escala Pocos usuarios No escala Muchos usuarios Escala Muchos usuarios Popularidad Escalabilidad HEAVEN 14. Estrategias para crear sistemas escalables 15. Escalabilidad Vertical

  • Ampliar los recursos (disco, memoria, red, etc) de un nodo del sistema

16. Escalabilidad Horizontal

  • Divide y venceras

17. Webservers

  • Load balancing

18. Mirroring 19. CDNs BBDDs

  • BBDD federadas

20. Sharding 21. La estrategia del NO

  • NO uses la base

22. NO uses el server 23. NO uses cualquier recurso limitado siempre que puedas evitarlo 24. Herramientas (algunas nomas) 25. APC

  • Alternative PHP Cache

26. Cache de datos en memoria (local) 27. Permite manejar un pool de datos persistente entre pedidos 28. Los datos se guardan como Bytecode 29. El acceso es mediante clave-valor 30. Ideal para NO usar la base 31. Memcached

  • Cache de datos en memoria (distribuido)

32. Soporta multiples servidores (divide y venceras) 33. Los datos se guardan serializados como strings 34. Permite zipear los datos para optimizar el espacio 35. Incluye un handler de sesiones 36. Sphinx

  • Indice de busqueda FULL TEXT

37. Permite trabajar con tablas InnoDB 38. Algunos features interesantes como stopwords, ranking, proximidad de terminos, etc. 39. Soporta indices distribuidos 40. 100% PHP 41. Soporte para MySQL, PostgreSQL y XML 42. Todavia se queda atras de soluciones basadas en Lucene (como Solr o Houndr) tanto en escalabilidad como en features 43. Gearman

  • Distribucion de trabajos entre trabajadores

44. Las tareas se pueden monitorear o realizar asincrnicamente 45. Permite liberar la carga del server y dar respuestas mas rapido 46. Para seguir leyendo Yslow! http://developer.yahoo.com/yslow/ Page Speed http://code.google.com/speed/page-speed/ Web Scaling: http://www.webscalingblog.com/ MySQL Performance: http://www.mysqlperformanceblog.com/ APC: http://php.net/manual/en/book.apc.php Memcached: http://memcached.org/ Sphinx: http://www.sphinxsearch.com/ Solr: http://lucene.apache.org/solr/ Hounder:http://hounder.org/ Gearman: http://gearman.org/ 47. Dudas? Reclamos?