Desarrollo en la nube         Javier Nievas Muñoz      CTO en Pynso | CTO en Hitsbook                      jnievas@pynso.com
BienvenidosAntes de empezar...                    ...algunos “keywords”Nube. Web 2.0. Servidor Web. Servidor deBase de dat...
BienvenidosTARGETProyectos web con previsión decrecimiento en contenidos y visitas
ObjetivoMISIÓNConseguir que la plataforma web estéonline el 99% del tiempo
ObjetivoMISIÓNConseguir que la plataforma web estéonline el 99% del tiempo             ¿Imposible?
Intro            El problema            Para entender el problema debemos considerar todos los            elementos que in...
IntroEl problemaTodo esto consume recursos del servidor:RAM + CPU + HDD + Red
Hosting                   Servidor                   Los recursos de los servidores son finitos y, por tanto, tienen una c...
Hosting                   Servidor                   Los recursos de los servidores son finitos y, por tanto, tienen una c...
HostingEscalabilidadEl gran problema...
SolucionesHay muchos problemas...… que hay que resolver individualmente para conseguiruna plataforma realmente preparada. ...
Soluciones                   Servidor Web                            Típicamente se ha utilizado Apache.                  ...
Soluciones                           Servidor Web   Servidor web   Servidor Base de Datos   Servir ficheros estáticos ...
Soluciones                           Servidor Web   Servidor web   Servidor Base de Datos   Servir ficheros estáticos ...
Soluciones                   Servidor BBDD                            Habitualmente se utiliza MySQL y PostGres. Ambos sis...
Soluciones                 Servir MEDIA                            NO utilizar Apache!!!                               Es...
Soluciones                  Procesamiento                              Las tareas que requieran un tiempo de              ...
Soluciones                  Generar HTML                              Más del 90% del HTML que se genera visita           ...
Soluciones                  Servidor                              Si el servidor se te queda pequeño... amplíalo.         ...
Soluciones                   Servidor                              ¿y si ya no puedes ampliarlo más? → Contrata otro      ...
SolucionesLa nube al rescate!La nube/cloud es el lugar ideal donde alojar este tipo de proyectos.Nos proporciona una plata...
SolucionesLa nube al rescate!En la “nube” podremos disponer de equipos que podemos arrancar bajodemanda montando sobre ell...
SolucionesLa nube al rescate!Arquitectura hiperflexible:  Servidores frontales con un autobalanceador  Servidores de apl...
SolucionesLa nube al rescate!Arquitectura hiperflexible:  Servidores frontales con un autobalanceador e IP elástica  Ser...
La recetaIngredientes   Amazon EC2: Todos los servidores que necesites   Amazon S3 + Cloudfront: Servir los Media   Ama...
ReferenciasMira qué hacen los demás...                                     ...que lo mismo aprendes algo ;-) Muchos porta...
DudasAprovecha la ocasión...                 ...y no te quedes con la dudaPREGUNTAD!                        :-)
Desarrollo en la nube
Próxima SlideShare
Cargando en…5
×

Desarrollo en la nube

946 visualizaciones

Publicado el

Los proyectos que son creados con miras internacionales o que soporten una alta carga de usuarios o contenidos han de diseñar de manera que pueda ser escalables. Para esto se suelen utilizar sistemas de computación en la nube. Javi nos contó la problemática que se encuentran estos proyectos cuando reciben altos picos de tráfico y cuales son las soluciones a estas situaciones.

Publicado en: Tecnología
0 comentarios
2 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

Sin descargas
Visualizaciones
Visualizaciones totales
946
En SlideShare
0
De insertados
0
Número de insertados
409
Acciones
Compartido
0
Descargas
10
Comentarios
0
Recomendaciones
2
Insertados 0
No insertados

No hay notas en la diapositiva.

Desarrollo en la nube

  1. 1. Desarrollo en la nube Javier Nievas Muñoz CTO en Pynso | CTO en Hitsbook jnievas@pynso.com
  2. 2. BienvenidosAntes de empezar... ...algunos “keywords”Nube. Web 2.0. Servidor Web. Servidor deBase de datos. Caché. Aplicaciones Web.Hosting. Uptime. Amazon AWS.
  3. 3. BienvenidosTARGETProyectos web con previsión decrecimiento en contenidos y visitas
  4. 4. ObjetivoMISIÓNConseguir que la plataforma web estéonline el 99% del tiempo
  5. 5. ObjetivoMISIÓNConseguir que la plataforma web estéonline el 99% del tiempo ¿Imposible?
  6. 6. Intro El problema Para entender el problema debemos considerar todos los elementos que intervienen a la hora de servir una página dentro de una aplicación web. Petición Consulta(s) Generar Servir Servir Media Procesos (Imgs, CSS, JS...)GET/POST BBDD HTML HTML largos Módulos Streaming Envío de recurrentes emails
  7. 7. IntroEl problemaTodo esto consume recursos del servidor:RAM + CPU + HDD + Red
  8. 8. Hosting Servidor Los recursos de los servidores son finitos y, por tanto, tienen una capacidad limitada. Las opciones habituales que nos hemos encontrado a la hora de contratar un servidor han sido:  Servidor compartido  Servidor virtual (VPS)  Servidor dedicadoServidor compartido Servidor virtual VPS Servidor dedicadoDesde 10€/mes Desde 30€/mes Desde 100€/mesPoca capacidad Capacidad configurable Capacidad fijaRecursos limitados y compartidos Recursos compartidos pero con Recursos 100% disponibles reserva de unos mínimos
  9. 9. Hosting Servidor Los recursos de los servidores son finitos y, por tanto, tienen una capacidad limitada. Las opciones habituales que nos hemos encontrado a la hora de contratar un servidor han sido:  Servidor compartido  Servidor virtual (VPS) ¡NO SON ESCALABLES!  Servidor dedicadoServidor compartido Servidor virtual VPS Servidor dedicadoDesde 10€/mes Desde 30€/mes Desde 100€/mesPoca capacidad Capacidad configurable Capacidad fijaRecursos limitados y compartidos Recursos compartidos pero con Recursos 100% disponibles reserva de unos mínimos
  10. 10. HostingEscalabilidadEl gran problema...
  11. 11. SolucionesHay muchos problemas...… que hay que resolver individualmente para conseguiruna plataforma realmente preparada.  Servidor web  Servidor Base de Datos  Servir ficheros estáticos  Procesamiento / Envío de emails  Generar HTML  Servidor
  12. 12. Soluciones Servidor Web Típicamente se ha utilizado Apache.  Consume mucha memoria Servidor web Servidor Base de Datos  Muchas opciones de configuración que apenas se utilizan Servir ficheros estáticos Procesamiento Generar HTML Servidor  NGINX + FastCGI / uWSGI
  13. 13. Soluciones Servidor Web Servidor web Servidor Base de Datos Servir ficheros estáticos Procesamiento Generar HTML Servidor
  14. 14. Soluciones Servidor Web Servidor web Servidor Base de Datos Servir ficheros estáticos Procesamiento Generar HTML Servidor
  15. 15. Soluciones Servidor BBDD Habitualmente se utiliza MySQL y PostGres. Ambos sistemas de BBDD están diseñados para poder escalar. Solución típica: utilizar varios equipos con versiones de sólo lectura de la base de datos, y que todos escriban en una sola, que se Servidor web encarga de replicarse en la demás. Servidor Base de Datos Servir ficheros estáticos Otras opciones: Procesamiento ● Cambiar de concepto, y pasarse a otro tipo de BBDD, las no Generar HTML Servidor relacionales / NoSQL. Ejemplos: MongoDB, SimpleDB, CouchDB
  16. 16. Soluciones Servir MEDIA NO utilizar Apache!!!  Es matar moscas a cañonazos! Servidor web  Podríamos usar nginx, pero tampoco es buena Servidor Base de Datos idea... Servir ficheros estáticos Procesamiento  Es una tarea secundaria ¿y si externalizamos Generar HTML Servidor este “marrón”?  Utilizar un CDN (p.e. Amazon S3)
  17. 17. Soluciones Procesamiento Las tareas que requieran un tiempo de procesamiento elevado no pueden ejecutarse Servidor web en “tiempo de petición”, deben delegarse y Servir ficheros estáticos ejecutarse en background. Servidor Base de Datos  Utilizar un gestor de colas de tareas puede Procesamiento Generar HTML Servidor ser una idea excelente  Por ejemplo: Celery + Redis
  18. 18. Soluciones Generar HTML Más del 90% del HTML que se genera visita tras visita es igual al que se ha generado la Servidor web última vez. ¿Por qué regenerar toda esa Servidor Base de Datos Servir ficheros estáticos información cuando podemos evitarnos esos Procesamiento Generar HTML cálculos simplemente guardando el HTML Servidor resultado?  Utiliza la caché! → memcached
  19. 19. Soluciones Servidor Si el servidor se te queda pequeño... amplíalo. Si se te vuelve a quedar pequeño... vuelve a Servidor web ampliarlo. Servidor Base de Datos Servir ficheros estáticos Si vuelve a quedarse pequeño... vuelve a Procesamiento Generar HTML ampliarlo. Servidor Y si se queda pequeño otra vez.. amplíalo más
  20. 20. Soluciones Servidor ¿y si ya no puedes ampliarlo más? → Contrata otro servidor y reparte las tareas entre ambos. ¿y si se queda pequeño con ese otro? → Contrata Servidor web Servidor Base de Datos otro más! Servir ficheros estáticos Procesamiento ¿y si resulta que ahora ya me sobran 2 porque hoy Generar HTML Servidor no hay apenas visitas? Erm... ¿me fastidio?
  21. 21. SolucionesLa nube al rescate!La nube/cloud es el lugar ideal donde alojar este tipo de proyectos.Nos proporciona una plataforma ideal donde servir nuestrosproyectos con capacidad para escalarlos “ilimitadamente”.  Podemos disponer de tantas máquinas como necesitemos, en el momento en el que las necesitemos.  Pagaremos realmente por el uso real que tenga nuestra plataforma  Y lo mejor, es que podemos conseguir que se regule y ajuste de forma automágica. Por ejemplo: Amazon EC2
  22. 22. SolucionesLa nube al rescate!En la “nube” podremos disponer de equipos que podemos arrancar bajodemanda montando sobre ellos imágenes de disco previamentepreparadas. ¿Qué nos permite esto?Si tenemos poca carga:  1 servidor con el Nginx frontal y algunos procesos FastCGI/uWSGISi tenemos más carga:  1 servidor con el nginx frontal  X servidores con procesos FastCGI/uWSGI sirviendo la plataforma
  23. 23. SolucionesLa nube al rescate!Arquitectura hiperflexible:  Servidores frontales con un autobalanceador  Servidores de aplicaciones (FastCGI/uWSGI)  Servidores de tareas (Celery Workers)  Granja de BBDD (Amazon RDS)  Servidores de caché de contenidos (memcached o Amazon Elasticache)Se supervisa gracias a Amazon CloudWatchSe “autoescala” gracias a Amazon Auto Scaling en base a parámetrosde carga de los equipos configurables
  24. 24. SolucionesLa nube al rescate!Arquitectura hiperflexible:  Servidores frontales con un autobalanceador e IP elástica  Servidores de aplicaciones (FastCGI/uWSGI)  Servidores de tareas (Celery Workers)  Granja de BBDD (Amazon RDS)  Servidores de caché de contenidos (memcached)Se supervisa gracias a Amazon CloudWatchSe “autoescala” gracias a Amazon Auto Scaling en base aparámetros de carga de los equipos configurables
  25. 25. La recetaIngredientes Amazon EC2: Todos los servidores que necesites Amazon S3 + Cloudfront: Servir los Media Amazon RDS: Granja de BBDD Amazon SES: Envio de emails Amazon Elasticache: Caché de contenidos (memcached) Amazon CloudWatch + Amazon Auto Scaling: Para la magia ¿Todo con Amazon? En realidad hay más alternativas, pero Amazon ha sido pionero y por ello tienen más experiencia y mejor abanico de herramientas
  26. 26. ReferenciasMira qué hacen los demás... ...que lo mismo aprendes algo ;-) Muchos portales de los “grandes” tienen blogs en los que cuentan sus “batallas” contra los picos de visitas. Leelos. Empápate. ● Por ejempo, el proyecto Disqus o Tuenti ● http://www.kitchensoap.com/ (trabajó en Flickr) Hay muchos libros interesantes al respecto: ● Building Scalable Web Sites (by Cal Henderson) ● Scalable Internet Architectures (by Theo Schlossnagle) ● The Art of Scalability (by Martin L.Abbott)
  27. 27. DudasAprovecha la ocasión... ...y no te quedes con la dudaPREGUNTAD! :-)

×