Symfony, cloud computing y webs scalables - decharlas

2,726 views

Published on

Charla sobre symfony, cloud computing y webs escalables a cargo de Asier Marqués en las primeras jornadas symfony - decharlas.com

Published in: Technology, Business
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,726
On SlideShare
0
From Embeds
0
Number of Embeds
132
Actions
Shares
0
Downloads
93
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

Symfony, cloud computing y webs scalables - decharlas

  1. 1. Castellón - 5 y 6 de Julio 2010 – Universitat Jaume I<br />Jornadas Symfony<br />5 y 6 de julio 2010<br />Universitat Jaume I, Castellón<br />http://decharlas.uji.es/symfony<br />patrocinan<br />organizan<br />colaboran<br />
  2. 2. Symfony, cloud computing y web escalables<br />Asier Marqués, blackslot.com<br />5 y 6 de julio 2010<br />Universitat Jaume I, Castellón<br />Jornadas Symfony<br />http://decharlas.uji.es/symfony<br />
  3. 3. Proveemos y gestionamos infraestructuras basadas en servidores y soluciones cloud<br />http://blackslot.com<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  4. 4. Proveemos y gestionamos infraestructuras basadas en servidores y soluciones cloud<br />Desarrollamos aplicaciones web<br />http://blackslot.com<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  5. 5. Proveemos y gestionamos infraestructuras basadas en servidores y soluciones cloud<br />Desarrollamos aplicaciones web<br />Por supuesto, en Symfony<br />http://blackslot.com<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  6. 6. Agenda<br />0. Presentación/Spam<br />Arquitectura web: escalabilidad y rendimiento<br />Cloud computing<br />Preguntas<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  7. 7. Agenda<br />0. Presentación<br />Arquitectura web: escalabilidad y rendimiento<br />Cloud computing<br />Preguntas<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  8. 8. Escalabilidad:<br /><ul><li>Capacidad de crecimiento
  9. 9. Rendimiento
  10. 10. Alta disponibilidad
  11. 11. Gestión simplificada</li></ul>Jornadas Symfony http://decharlas.uji.es/symfony<br />
  12. 12. Escalabilidad:<br /><ul><li>Capacidad de crecimiento
  13. 13. Rendimiento
  14. 14. Alta disponibilidad
  15. 15. Gestión simplificada</li></ul>Jornadas Symfony http://decharlas.uji.es/symfony<br />
  16. 16. Conceptos<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  17. 17. Escalabilidad<br />Una aplicación web o infraestructura es escalable cuando es capaz de aumentar la capacidad de dar servicio y funcionalidad, con la menor carga administrativa y de desarrollo posible.<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  18. 18. Rendimiento<br />Disponemos de buen rendimiento cuando somos capaces de soportar la mayor carga de trabajo posible con los menores recursos de hardware posibles.<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  19. 19. Alta disponibilidad<br />Gozamos de Alta disponibilidad cuando seguimos dando servicio aunque nuestra infraestructura sufra problemas en algunas de sus partes críticas.<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  20. 20. Symfony<br /><ul><li>Implementación nativa de MVC
  21. 21. Flexible gracias a especialización y configuración
  22. 22. Arquitectura REST
  23. 23. Potente framework para automatizar tareas mediante línea de comandos</li></ul>Jornadas Symfony http://decharlas.uji.es/symfony<br />
  24. 24. Escalabilidad / puntos críticos<br /><ul><li>Desarrollo
  25. 25. Base de datos
  26. 26. Caché
  27. 27. División de nuestra aplicación en capas críticas
  28. 28. Gestión de la infraestructura</li></ul>Jornadas Symfony http://decharlas.uji.es/symfony<br />
  29. 29. Escalabilidad / puntos críticos<br /><ul><li>Desarrollo (pensando en nuestra infraestructura)
  30. 30. Base de datos
  31. 31. Caché
  32. 32. División de nuestra aplicación en capas críticas
  33. 33. Gestión de la infraestructura</li></ul>Jornadas Symfony http://decharlas.uji.es/symfony<br />
  34. 34. Desarrollo<br />Desarrolla pensando en la infraestructura<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  35. 35. Symfony / Desarrollo<br />Usa la configuración<br />Permite que una persona no programador mantenga tu aplicación.<br />Automatiza el mantenimiento mediante tareas.<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  36. 36. ejemplo<br />SITUACIÓN<br />Son las 4am y nuestro administrador de sistemas necesita añadir un nuevo nodo de memcached al pool<br />Nosotros estamos ([ durmiendo | en Tokio | bien acompañados ]+) <br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  37. 37. Problema: implementación actual<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  38. 38. Problema: implementación actual<br />Ips hardcodeadas en el código<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  39. 39. Problema: implementación actual<br />Ips hardcodeadas en el código<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  40. 40. Problema: implementación actual<br />Usamos nuestro propio sistema de cache<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  41. 41. Problema: implementación actual<br /><ul><li>Las ips de los servidores están hardcodeadas en el código
  42. 42. Si un administrador añade un nuevo servidor de memcached, debe modificar el código para que nuestra aplicación lo pueda utilizar
  43. 43. No es fácilmente automatizable</li></ul>Jornadas Symfony http://decharlas.uji.es/symfony<br />
  44. 44. Configuración de caché propia<br />config / bsCache.yml<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  45. 45. Configuración de caché propia<br />config / bsCache.yml<br />Más elegante y mantenible<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  46. 46. Configuración de caché propia<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  47. 47. Configuración de caché propia<br />Cacheamos el archivo de configuración<br />Leemos la configuración desde cache<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  48. 48. Configuración de caché propia<br /><ul><li>Hemos dejado más accesible la configuración a los sysadmin y otras personas no programadoras que mantengan el pool de memcached
  49. 49. Estaría bien que se pudiese automatizar el despliegue de nuevos nodos para memcached de forma fácil</li></ul>Jornadas Symfony http://decharlas.uji.es/symfony<br />
  50. 50. Automatizamos el añadir nuevos servers al pool<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  51. 51. Automatizamos el añadir nuevos servers al pool<br />Leemos la configuración y agregamos un nuevo servidor en el caso de que sea necesario<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  52. 52. Resultado<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  53. 53. Resultado<br />Con un solo comando la aplicación usará el nuevo nodo del pool de memcached<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  54. 54. MySQL<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  55. 55. Symfony / MySql<br />Suele ser la primera necesidad a la hora de escalar y el principal cuello de botella en rendimiento<br />Opciones habituales:<br /><ul><li>Arquitectura Master – Slave
  56. 56. Optimización de consultas , ¿ORM, DQL? y mysql
  57. 57. Desnormalización y No-SQL
  58. 58. Particiones o estrategias federated
  59. 59. Busquedas: Sphinx</li></ul>Jornadas Symfony http://decharlas.uji.es/symfony<br />
  60. 60. MySql / Master - Slave<br />Nodos master: para escribir<br />Nodos slaves: para leer<br />Objetivos:<br /><ul><li>Replicación y alta disponibilidad.
  61. 61. Delegamos las consultas read-only en los Slaves, liberando de esa carga a los servidores Master.</li></ul>Jornadas Symfony http://decharlas.uji.es/symfony<br />
  62. 62. MySql / Master - Slave<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  63. 63. MySql / Master - Slave<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  64. 64. MySql / Master - Slave<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  65. 65. MySql / Master - Slave<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  66. 66. MySql / Master - Slave<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  67. 67. MySql / Master - Slave<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  68. 68. MySql / Master - Slave<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  69. 69. MySql / Master - Slave<br />Extendemos las clases Doctrine_Query y Doctrine_Record<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  70. 70. MySql / Master - Slave<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  71. 71. MySql / Master - Slave<br />Si la query es de tipo SELECT la conexión se hará a un servidor Slave, en caso contrario al master<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  72. 72. MySql / Master - Slave<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  73. 73. MySql / Master - Slave<br />Cuando salvemos, la consulta se hará contra el servidor master<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  74. 74. MySql / Optimizar<br />Reducir el número de consultas VS desglosar una consulta compleja en varias sencillas<br />QueryCache<br />Sustituir Count(*) por FOUND_ROWS()<br />Olvidarnos de DQL en consultas complejas<br />Desnormalizar VS usar NO-SQL: Memcached, Redis, Cassandra..<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  75. 75. MySql / sfPager sin Count<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  76. 76. MySql / sfPager sin Count<br />Añadimos SQL_CAC_FOUND_ROWS al SELECT<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  77. 77. MySql / sfPager sin Count<br />Contamos las tuplas totales con FOUND_ROWS<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  78. 78. MySql / Búsquedas<br />Limitaciones de MySql en búsquedas<br />Bajo rendimiento en tablas con muchas tuplas en las que es necesario buscar en campos de texto muy grandes.<br />No distingue resultados en base a su relevancia.<br />A menudo obliga a desnormalizar.<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  79. 79. MySql / Búsquedas<br />Sphinx<br /><ul><li>Ranking de resultados por relevancia
  80. 80. Distribuido
  81. 81. Muy rápido, tanto indexando como a la hora de devolver los resultados
  82. 82. Indexación en caliente</li></ul>Jornadas Symfony http://decharlas.uji.es/symfony<br />
  83. 83. MySql / Búsquedas<br />Sphinx: proceso de búsqueda<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  84. 84. MySql / Búsquedas<br />Sphinx: proceso de búsqueda<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  85. 85. MySql / Búsquedas<br />Sphinx: proceso de búsqueda<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  86. 86. MySql / Búsquedas<br />Sphinx: proceso de búsqueda<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  87. 87. Cache<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  88. 88. Symfony / Cache<br />ViewCache(Symfony <=1.4)<br /><ul><li>Caché a nivel de acción
  89. 89. Caché a nivel de componente y partial</li></ul>Doctrine posee caché a nivel de consultas<br />Opciones:<br />APC, Xcache, Memcached, SQLite, Disco…<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  90. 90. Cache / APC<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  91. 91. Cache / APC<br />Cada servidor web almacena objetos localmente, inaccesibles desde el resto de frontales<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  92. 92. Cache / APC<br />Pros<br /><ul><li>Opcode para php, reduce carga de procesador
  93. 93. Nos permite almacenar información
  94. 94. Caché muy rápida</li></ul>Contras<br /><ul><li>La caché es local
  95. 95. No escala horizontalmente</li></ul>Jornadas Symfony http://decharlas.uji.es/symfony<br />
  96. 96. Cache / APC<br />apc.shm_size (por defecto 30MB)<br />Tamaño de memoria compartida utilizada para almacenar objetos.<br />apc.stat (por defecto 1)<br />Si se encuentra activado comprueba por cada ciclo de<br />ejecución si el código ha cambiado. <br />Estableciéndolo 0 incrementa el rendimiento siempre que usemos rutas absolutas en los requires/includes.<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  97. 97. Cache / Memcached<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  98. 98. Cache / Memcached<br />Cualquier servidor web puede gestionar la información de cache<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  99. 99. Cache / Memcached<br />Cualquier servidor web puede gestionar la información de cache<br />Cada servidor de memcached es el responsable de una serie de objetos<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  100. 100. Cache / Memcached<br /> Pros<br /><ul><li>Uno de los sistemas más rápidos
  101. 101. Nos permite distribuir la información
  102. 102. Fácilmente escalable</li></ul>Contras<br /><ul><li>Almacenamiento no persistente
  103. 103. No hay replicación
  104. 104. Limitaciones:
  105. 105. keys <= 255caracteres
  106. 106. valores <= 1MB</li></ul>Jornadas Symfony http://decharlas.uji.es/symfony<br />
  107. 107. Cache / Memcached<br /> Pros<br /><ul><li>Uno de los sistemas más rápidos
  108. 108. Nos permite distribuir la información
  109. 109. Fácilmente escalable</li></ul>Contras<br /><ul><li>Almacenamiento no persistente
  110. 110. No hay replicación*
  111. 111. Limitaciones:
  112. 112. keys <= 255caracteres
  113. 113. valores <= 1MB</li></ul>Jornadas Symfony http://decharlas.uji.es/symfony<br />
  114. 114. Cache / Memcached<br />RepCache para Memcached<br />Dota a memcached de replicación<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  115. 115. Cache / sfViewCache<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  116. 116. Cache / sfViewCache<br />Cache de acción, incluyendo el layout<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  117. 117. Cache / sfViewCache<br />Cache de acción, sin incluir el layout<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  118. 118. Cache / sfViewCache<br />Cache de partial y componente<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  119. 119. Cache / sfViewCache<br /><ul><li>Nos facilita la invalidación de cache
  120. 120. Claves basadas en REST e integradas con el sistema de routing
  121. 121. Está bien para empezar, pero en proyectos avanzados tendremos que considerar otras opciones:
  122. 122. Estrategia personalizada de cache a nivel de controlador y modelo
  123. 123. Proxy Caché a nivel de sistema
  124. 124. ESI: EdgeSideIncludes, integrado en symfony 2</li></ul>Jornadas Symfony http://decharlas.uji.es/symfony<br />
  125. 125. Cache / proxyCache<br /><ul><li>Ideal para cachear estáticos almacenados en otras ubicaciones como s3
  126. 126. Más óptimo que cualquier caché gestionado en nuestra aplicación, pero menos flexible
  127. 127. La invalidación y en algunos casos la creación de la cache, debe ser gestionada desde la aplicación web o tareas automatizadas.
  128. 128. Nos permite el uso de ESI, EdgeSideIncludes</li></ul>Jornadas Symfony http://decharlas.uji.es/symfony<br />
  129. 129. Cache / proxyCache<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  130. 130. Cache / proxyCache<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  131. 131. Cache / proxyCache<br />Evalúa si tiene cache<br />de la vista solicitada.<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  132. 132. Cache / proxyCache<br />En caso de no tener,<br />solicita la información a los<br />servidores web y de archivos.<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  133. 133. Cache / proxyCache<br />Almacena la información en caché y responde a la petición.<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  134. 134. Cache / proxyCache<br />La siguiente petición es servida desde caché<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  135. 135. Cache / proxyCache<br />Opciones más usadas:<br /><ul><li>Varnish: varnish-cache.org
  136. 136. Nginx: nginx.org
  137. 137. Squid: squid-cache.org </li></ul>Jornadas Symfony http://decharlas.uji.es/symfony<br />
  138. 138. Cache / proxyCache / Varnish<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  139. 139. Cache / proxyCache / Varnish<br />Conexión al servidor web<br />Cacheamos los estáticos<br />No cacheamos las peticiones POST<br />No cacheamos las peticiones que incluyan autenticación http o una cookie __sesion<br />Lo demás se cachea<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  140. 140. Cache / proxyCache / Varnish<br />Cuando una url es gestionada por la cache de varnish, se llamará a los métodos hit, miss y fetch<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  141. 141. Cache / proxyCache / Varnish<br />vcl_hit<br />Configuramos que si la url contiene la palabra «PURGAR_CACHE» elimine la caché. <br />vcl_miss<br />Configuramos que si la url contiene la palabra «PURGAR_CACHE» y no se encuentra en caché, nos avise<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  142. 142. Cache / proxyCache / Varnish<br />vcl_fetch<br />Miss llama a este método para que cree la caché.<br />Ahí le establecemos el tiempo de vida de la misma<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  143. 143. Cache / proxyCache / ESI<br />ESI (EdgeSideIncludes) nos permiten incluir contenidos de una url en nuestras vistas.<br />Podemos distribuir contenido de nuestro site e incluso tratar cada parte como si se tratase de una aplicación web independiente.<br />Symfony2 incluirá soporte nativo para ESI.<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  144. 144. Cache / proxyCache / ESI<br /><esi:include src = " /esi/categorias.php" <br /> alt = " <?php echo url_for(…) ?>" <br /> onerror="continue" /><br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  145. 145. Cache / proxyCache / ESI<br /><esi:includesrc = " /esi/categorias.php" <br />alt = " <?php echo url_for(…) ?>" <br />onerror="continue" /><br />Las urls pueden ser relativas o absolutas<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  146. 146. Dividir en capas<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  147. 147. Dividir en capas<br />Arquitecturas más modulares y por lo tanto, más fáciles de escalar horizontalmente.<br />Separamos los problemas en capas.<br />Nos permite usar varias tecnologías de forma transparente, la más adecuada para cada caso.<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  148. 148. Dividir en capas <br /><ul><li>Almacenamiento de archivos y estáticos
  149. 149. Cache
  150. 150. Acceso a fuentes de datos
  151. 151. Mailing
  152. 152. Procesamiento de media o tareas de cálculo</li></ul>Jornadas Symfony http://decharlas.uji.es/symfony<br />
  153. 153. Capas / Acceso a base de datos<br />Consejo de Yahoo!: no usar ORMs<br />Una buena estrategia si:<br /><ul><li>Usamos diferentes tecnologías de bases de datos según el tipo de información
  154. 154. Equipos de trabajo concentrados exclusivamente en esa área
  155. 155. Nuestra tecnología de base de datos no implementa interfaz PDO</li></ul>Jornadas Symfony http://decharlas.uji.es/symfony<br />
  156. 156. Gestión IT<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  157. 157. Gestión IT<br />Monitorización<br /><ul><li>Alertas: Nagios
  158. 158. Gráficos: Munin, Ganglia, Cacti</li></ul>Aprovisionamiento<br /><ul><li>Buena nomenclatura
  159. 159. Configuraciones bajo control de versiones
  160. 160. Automatización de aprovisionamiento (Virtualización o instalación por red)</li></ul>Backup<br /><ul><li>¿Has probado a restaurar?
  161. 161. Configuraciones bajo control de versiones</li></ul>Jornadas Symfony http://decharlas.uji.es/symfony<br />
  162. 162. Agenda<br />0. Presentación<br />Arquitectura web: escalabilidad y rendimiento<br />Cloud computing<br />Preguntas<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  163. 163. Cloud computing<br /><ul><li>Tres modelos principales: SAAS, PAAS y IAAS
  164. 164. Nos despreocupamos de los costes y gestión de la capa de hardware y de red
  165. 165. El despliegue es inmediato
  166. 166. Pago por uso
  167. 167. La escalabilidad horizontal no es un problema</li></ul>Jornadas Symfony http://decharlas.uji.es/symfony<br />
  168. 168. IAAS vs PAAS<br />PAAS<br /><ul><li>Hay que pensar de forma distinta a como pensaríamos en una infraestructura física.
  169. 169. Hay que desarrollar siendo conscientes de los requisitos y recursos de dicho entorno
  170. 170. Suele ser mucho más sencillo para un programador. Abstrae de la complejidad de la capa de sistemas.</li></ul>IAAS<br /><ul><li>No hay que aprender nada nuevo en la capa de sistemas.
  171. 171. Nos permite migrar aplicaciones sin hacer grandes cambios
  172. 172. Tenemos límites similares o menores a los que tendríamos en una infraestructura física</li></ul>Jornadas Symfony http://decharlas.uji.es/symfony<br />
  173. 173. IAAS vs PAAS / Proveedores<br />PAAS<br /><ul><li>Microsoft Azure
  174. 174. Google App Engine
  175. 175. Amazon S3, SDB
  176. 176. …</li></ul>IAAS<br /><ul><li>Amazon EC2
  177. 177. Softlayer
  178. 178. UbiCloud
  179. 179. Rackspace
  180. 180. …</li></ul>Jornadas Symfony http://decharlas.uji.es/symfony<br />
  181. 181. AMAZON EC2, S3, SQS<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  182. 182. Jornadas Symfony http://decharlas.uji.es/symfony<br />
  183. 183. Amazon / EC2<br /><ul><li>Permite desplegar instancias virtuales desde AMIsen minutos
  184. 184. Permite configurar AMIsy compartirlas con la comunidad
  185. 185. Distintos tipos de instancias: desde 1.7GB de Ram hasta 64.8GB de Ram
  186. 186. Pago por tiempo de CPU, transferencia de datos e I/O
  187. 187. Disponemos de volúmenes EBS, ip fijas, snapshots, balanceo y monitorización (CloudWatch)</li></ul>Jornadas Symfony http://decharlas.uji.es/symfony<br />
  188. 188. Amazon / S3<br /><ul><li>Almacenamiento de objetos clave / valor. Cada archivo es un objeto.
  189. 189. Para recuperar grandes cantidades de objetos, disponemos de AWS Import/Export
  190. 190. Se paga por almacenamiento, número de peticiones y transferencia.
  191. 191. El almacenamiento es flexible e infinito, pero cada objeto tiene un límite de 5GB
  192. 192. Accesible mediante REST con url basada en subdominios o directorio:</li></ul>http:// [bucket_id] .dominio.com/objeto<br />http://s3.amazonaws3.com/ [bucket_id] /objeto<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  193. 193. Amazon / SQS<br /><ul><li>Servicio de cola de mensajes
  194. 194. Ideal para trabajos de alta carga que se puedan hacer de forma asíncrona
  195. 195. Se paga por transferencia y número de mensajes.
  196. 196. El almacenamiento es flexible e infinito.</li></ul>Jornadas Symfony http://decharlas.uji.es/symfony<br />
  197. 197. Amazon / Cloudfusion<br /><ul><li>Conjunto de clases para trabajar con los servicios web de Amazon
  198. 198. Muy bien documentada y soporta todos los servicios de Amazon
  199. 199. Es muy sencilla de utilizar</li></ul>Jornadas Symfony http://decharlas.uji.es/symfony<br />
  200. 200. Amazon / Cloudfusion / S3<br />Subimos un archivo a S3<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  201. 201. Amazon / Cloudfusion / S3<br />Creamos un bucket<br />Subimos un archivo a S3<br />Subimos el archivo al bucket <br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  202. 202. Amazon / Cloudfusion / EC2<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  203. 203. Amazon / Cloudfusion / EC2<br />Arranco una instancia virtual en EC2<br />Le asocio una dirección ip pública.<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  204. 204. Amazon / Cloudfusion<br /><ul><li>Usando cloudfusion junto a las herramientas de configuración y tareas de Symfony, automatizamos el crecimiento y gestión de la infraestructura.
  205. 205. Podemos en todo momento aumentar nuestra capacidad de almacenamiento y proceso, de forma inmediata y flexible</li></ul>Jornadas Symfony http://decharlas.uji.es/symfony<br />
  206. 206. Resumen<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  207. 207. Resumen<br /><ul><li>Debemos empezar a pensar en la infraestructura como parte de nuestro proyecto de desarrollo
  208. 208. Además de por escalar, necesitamos preocuparnos por el rendimiento para reducir nuestros costes
  209. 209. Hoy en día existen más opciones que Apache + Mysqlen entornos Linux
  210. 210. El cloudcomputing es una opción asequible para disponer de arquitecturas pensadas para escalar desde el principio.</li></ul>Jornadas Symfony http://decharlas.uji.es/symfony<br />
  211. 211. Agenda<br />0. Presentación<br />Arquitectura web: escalabilidad y rendimiento<br />Cloud computing<br />Preguntas<br />Jornadas Symfony http://decharlas.uji.es/symfony<br />
  212. 212. GRACIAS<br />Asier Marqués <br />asiermarques@blackslot.com<br />5 y 6 de julio 2010<br />Universitat Jaume I, Castellón<br />Jornadas Symfony<br />http://decharlas.uji.es/symfony<br />

×