Matías Montes: Optimización y Escalabilidad

  • Published on
    17-May-2015

  • View
    790

  • Download
    2

Embed Size (px)

DESCRIPTION

Charla de Matas Montes titulada "Optimizacin y Escalabilidad" en las Primeras Charlas del Grupo PHP Argentina

Transcript

<ul><li> 1. Optimizacin y Escalabilidad</li></ul> <p> 2. Quin soy yo? Matas Montes (Barbazul) Developer @ SemExpert [email_address] YO ElePHPant 3. De que estamos hablando? </p> <ul><li>Optimizacion:[...]proceso de modificar un sistema para mejorar su eficiencia o tambin el uso de los recursos disponibles.</li></ul> <p> 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 </p> <ul><li>Programar pensando en escalar (estrategia)</li></ul> <p> 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 </p> <ul><li>Ampliar los recursos (disco, memoria, red, etc) de un nodo del sistema </li></ul> <p> 16. Escalabilidad Horizontal </p> <ul><li>Divide y venceras</li></ul> <p> 17. Webservers </p> <ul><li>Load balancing</li></ul> <p> 18. Mirroring 19. CDNs BBDDs </p> <ul><li>BBDD federadas</li></ul> <p> 20. Sharding 21. La estrategia del NO </p> <ul><li>NO uses la base</li></ul> <p> 22. NO uses el server 23. NO uses cualquier recurso limitado siempre que puedas evitarlo 24. Herramientas (algunas nomas) 25. APC </p> <ul><li>Alternative PHP Cache</li></ul> <p> 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 </p> <ul><li>Cache de datos en memoria (distribuido)</li></ul> <p> 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 </p> <ul><li>Indice de busqueda FULL TEXT</li></ul> <p> 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 </p> <ul><li>Distribucion de trabajos entre trabajadores</li></ul> <p> 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?</p>