Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Matías Montes: Optimización y Escalabilidad

1,057 views

Published on

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

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Matías Montes: Optimización y Escalabilidad

  1. 1. Optimización y Escalabilidad
  2. 2. ¿Quién soy yo? Matías Montes (Barbazul) Developer @ SemExpert [email_address] YO ElePHPant
  3. 3. ¿De que estamos hablando? <ul><li>Optimizacion: [...] proceso de modificar un sistema para mejorar su eficiencia o también el uso de los recursos disponibles.
  4. 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 más grande sin perder calidad en los servicios ofrecidos. </li></ul>Fuente: Wikipedia
  5. 5. ¿De qué hablamos realmente?
  6. 6. El modelo 3-tier YO $ $ $
  7. 7. Crear sistemas escalables <ul><li>Programar pensando en escalar (estrategia)
  8. 8. Conocer las limitaciones
  9. 9. Conocer los recursos
  10. 10. Monitorear y medir el crecimiento
  11. 11. Optimizar, siempre optimizar
  12. 12. Estudiar para bombero </li></ul>
  13. 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. 14. Estrategias para crear sistemas escalables
  15. 15. Escalabilidad Vertical <ul><li>Ampliar los recursos (disco, memoria, red, etc) de un nodo del sistema </li></ul>
  16. 16. Escalabilidad Horizontal <ul><li>Divide y venceras
  17. 17. Webservers </li><ul><li>Load balancing
  18. 18. Mirroring
  19. 19. CDNs </li></ul><li>BBDDs </li><ul><li>BBDD federadas
  20. 20. Sharding </li></ul></ul>
  21. 21. La estrategia del NO <ul><li>NO uses la base
  22. 22. NO uses el server
  23. 23. NO uses cualquier recurso limitado siempre que puedas evitarlo </li></ul>
  24. 24. Herramientas (algunas nomas)
  25. 25. APC <ul><li>Alternative PHP Cache
  26. 26. Cache de datos en memoria (local)
  27. 27. Permite manejar un pool de datos persistente entre pedidos
  28. 28. Los datos se guardan como Bytecode
  29. 29. El acceso es mediante clave-valor
  30. 30. Ideal para NO usar la base </li></ul>
  31. 31. Memcached <ul><li>Cache de datos en memoria (distribuido)
  32. 32. Soporta multiples servidores (divide y venceras)
  33. 33. Los datos se guardan serializados como strings
  34. 34. Permite zipear los datos para optimizar el espacio
  35. 35. Incluye un handler de sesiones </li></ul>
  36. 36. Sphinx <ul><li>Indice de busqueda FULL TEXT
  37. 37. Permite trabajar con tablas InnoDB
  38. 38. Algunos features interesantes como stopwords, ranking, proximidad de terminos, etc.
  39. 39. Soporta indices distribuidos
  40. 40. 100% PHP
  41. 41. Soporte para MySQL, PostgreSQL y XML
  42. 42. Todavia se queda atras de soluciones basadas en Lucene (como Solr o Houndr) tanto en escalabilidad como en features </li></ul>
  43. 43. Gearman <ul><li>Distribucion de “trabajos” entre “trabajadores”
  44. 44. Las tareas se pueden monitorear o realizar asincrónicamente
  45. 45. Permite liberar la carga del server y dar respuestas mas rapido </li></ul>
  46. 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. 47. ¿Dudas? ¿Reclamos?

×