Slideshow transcript
Slide 1: lacoctelera.com y The Shaker Conferencia Rails Hispana Fernando García y Álvaro Ortiz noviembre 2006 1
Slide 2: 2
Slide 3: php mysql xhtml css estándares web rdf sindicación … 3
Slide 4: 4
Slide 5: ¿qué es lacoctelera.com? servidor de blogs para personas normales que se ha convertido en una gran comunidad 5
Slide 6: páginas vistas situación actual Fuente: Nielsen Net-ratings lacoctelera.com 45.000 cuentas creadas 350.000 posts 900.000 comentarios 35.000 amigos 6
Slide 7: the shaker aplicación extraida del desarrollo de lacoctelera.com herramienta de gestión de comunidad y gestión de contenidos blogs, fotologs, medialogs, portadas temáticas, directorio, grupos, tags… 7
Slide 8: … 8
Slide 9: + … + 1.000.000 de peticiones Rails al día 175GB de transferencia diaria 8 servidores 9
Slide 10: internet peticiones peticiones estáticas (ficheros y caché) dinámicas lighttpd servidores web • 2 servidores web ficheros (imágenes, documentos, caché) • Balanceo de carga de servidor web con Pound • compartidos por NFS • Redundancia mediante VRRP • replicados • Escalabilidad horizontal Balanceo de carga a servidores de aplicaciones con Lighttpd ruby on rails servidores • 4 servidores de aplicaciones • FastCGIs aplicaciones • Antivirus: Kaspersky Balanceo de carga a servidores de BBDD con Rails mysql BBDD • MyISAM • 2 servidores de BBDD • Replicación de BDs Maestro-Esclavo • La carga de las lecturas se balancea entre múltiples esclavos batch • 1 servidor • Copias de seguridad • Conversión de videos • Correo • Generación estadísticas • Memcache 10
Slide 11: the shaker sistemas Debian Sarge Servidores Dell 1850/1950 Dual Xeon / Dual Core Ruby 1.8.4 App/Web: 2GB RAM BD: 10GB / 4GB RAM Rails 1.1.6 HD: RAID1 Lighttpd 1.4.10 Red privada 1GB MySQL 5.0.18 Memcache FastCGI Pound NTP, NFS, SNMP, VRRP, Ffmpeg … 11
Slide 12: the shaker caché comenzamos construyendo la nuestra cuando la de Rails apenas estaba desarrollada, estamos cambiando a la de Rails rutas, ajax cuando todavía no se llamaba ajax…), analisis de logs, RAILS_ROOT, tareas en background, internacionalización, etc… en lacoctelera.com muchas páginas tienen algo no cacheable si el usuario está loggeado: el lighttpd sirve la página estática, y con Ajax rellenamos el contenido no cacheable (petición mucho más ligera que un dispatch sirviendo una página entera, aunque sea de caché) si no está loggeado: el lighttpd sirve la página, no interviene Rails en absoluto cachear también en el back – una de las páginas más vistas de lacoctelera.com es la página de publicar historia, y no la teníamos cacheada 12
Slide 13: the shaker internacionalización varios niveles de internacionalización: soporte unicode ruby y el soporte de unicode: no hasta el año que viene se va a incluir soporte unicode en rails 1.2 (anunciado ayer) cadenas de la aplicación – resuelto! (lang.yml, no necesitamos más) contenido: depende de la aplicación que necesites desarrollar – lógica de negocio 100% en nuestro caso, no tiene sentido que un usuario tenga un blog multilenguaje (aunque puede escribir en el idioma que quiera – gracias UTF-8 y los estándares web) gestor de contenido multilenguaje: AI, workflow de traducción… (sería como pedir un gestor de encuestas en el core de rails) la internacionalización la tiene que trabajar quien la comunidad que la necesite 13
Slide 14: the shaker redundancia y replicación servidores web: 2; balanceo con Pound; VRRP para redundancia instancias específicas del servidor web según tarea: estáticos, dinámicos servidores de aplicación: balanceo con Lighttpd añadir nuevos web y app es trivial hemos hecho nuestros propios paquetes con todo lo necesario para montar un web o app ficheros de usuario: compartidos por NFS (y replicados) BBDD lacoctelera.com 1 maestro (R/W) y 1 esclavo (R) balanceo de lecturas entre ambos maestro resto de sites 1 maestro (R/W) y 1 esclavo (R) balanceo de lecturas entre ambos siguientes pasos: esclavo 1 esclavo 2 esclavo … n mysql cluster separar tablas en hosts segmentar usuarios por hosts 14
Slide 15: the shaker monitorización scripts caseros: check_tolai, kill_gumias errores de rails -> email daemon tools (monitorización interna) nagios (monitorización externa) monitorización de site: DB_read DB_write dinamic index static monitorización de host: CPU Carga DISK PING SMTP warning -> email critical -> sms guardias 24/7 kit B12: portatil + movil 3G 15
Slide 16: the shaker logs 23/11/2006 servidor web + pound > awstats logs de aplicación > awk MySQL: desarrollo: análisis de consultas pesadas de MySQL producción: SHOW FULL PROCESSLIST lastmin: peticiones/carga CPU huellas de Nielsen y Google Analytics 16
Slide 17: the shaker control de versiones y entregas repositorio SVN en el servidor de desarrollo de la oficina mirror de SVN en producción deploy: oficina -> mirror producción -> despligue a todos los servidores migrations capistrano control de versiones de la estructura de la BD roles primarios: integradas en los deploys web app tests / baterias de pruebas db (maestro, esclavo) roles secundarios: ejecutados en el deploy; rollbacks mirror por servidor shared batch configuración de máquinas en el repositorio tareas: despliegue con el capistrano de la configuración setup deploy web_deploy destroy_cache… 17
Slide 18: the shaker problemas y dificultades no estamos cómodos con los FastCGIs – son inestables, consumen mucho valorando alternativas: mongrels, nginx ataques de spam: usuarios y comentarios medidas progresivas: javascript en cliente solución definitiva: webservice antispam – filtro bayesiano +30% de comentarios son spam no hay mal que por bien no venga el servicio se puede acoplar de forma muy sencilla a otros servicios SPF – puntos de fallo únicos los hemos ido superando todos (web, ficheros, app, bbdd) nos queda uno: múltiples centros de datos Testing – no tiene sentido desarrollar sin tests una plataforma tan grande hay que estar manteniéndola de forma regular; gastas mucho tiempo, y eso es un problema si lo que te gusta es programar 18
Slide 19: the shaker hasta dónde hemos llegado empezamos desde el día 0 con un producto nuevo, desconocido para nosotros (¡y para cualquiera!) hemos sabido crecer disfrutamos con Ruby, Rails y con nuestro producto estamos convencidos de nuestra apuesta (… y esto no ha hecho más que empezar) 19
Slide 20: 20
Slide 21: 21
Slide 22: c/ Salamanca, 17 Madrid – 28020 España tel. +34 91 567 0605 www.the-cocktail.com 22




Add a comment on Slide 1
If you have a SlideShare account, login to comment; else you can comment as a guest- Favorites & Groups
Showing 1-50 of 0 (more)