lacoctelera.com y The Shaker Conferencia Rails Hispana Fernando García y Álvaro Ortiz noviembre 2006
 
php mysql xhtml css estándares web rdf sindicación …
 
¿qué es lacoctelera.com?  servidor de blogs para personas normales que se ha convertido en una gran comunidad
situación actual lacoctelera.com 45.000 cuentas creadas 350.000 posts  900.000 comentarios 35.000 amigos Fuente: Nielsen N...
the shaker  aplicación extraida del desarrollo de lacoctelera.com herramienta de gestión de comunidad y gestión de conteni...
…
+ + 1.000.000 de peticiones Rails al día 175GB de transferencia diaria 8 servidores …
servidores aplicaciones servidores web BBDD lighttpd internet peticiones dinámicas peticiones estáticas (ficheros y caché)...
the shaker <ul><li>Debian Sarge </li></ul><ul><li>Ruby 1.8.4 </li></ul><ul><li>Rails 1.1.6 </li></ul><ul><li>Lighttpd 1.4....
the shaker <ul><li>comenzamos construyendo la nuestra cuando la de Rails apenas estaba desarrollada, estamos cambiando a l...
the shaker <ul><li>varios niveles de internacionalización: </li></ul><ul><ul><li>soporte unicode </li></ul></ul><ul><ul><u...
the shaker <ul><li>servidores web: 2; balanceo con Pound; VRRP para redundancia </li></ul><ul><ul><li>instancias específic...
the shaker <ul><li>scripts caseros: check_tolai, kill_gumias </li></ul><ul><li>errores de rails -> email </li></ul><ul><li...
the shaker <ul><li>servidor web + pound > awstats  </li></ul><ul><li>logs de aplicación > awk </li></ul><ul><li>MySQL: </l...
the shaker <ul><li>repositorio SVN  </li></ul><ul><ul><li>en el servidor de desarrollo de la oficina </li></ul></ul><ul><u...
the shaker <ul><li>no estamos cómodos con los FastCGIs – son inestables, consumen mucho </li></ul><ul><ul><li>valorando al...
the shaker <ul><li>empezamos desde el día 0 con un producto nuevo, desconocido para nosotros (¡y para cualquiera!) </li></...
 
 
c/ Salamanca, 17 Madrid – 28020 España tel. +34 91 567 0605 www.the-cocktail.com
Upcoming SlideShare
Loading in …5
×

LaCoctelera.com y The Shaker - Conferencia Rails Hispana 2006

2,023 views
1,972 views

Published on

Presentación sobre LaCoctelera.com y The Shaker en la Conferencia Rails Hispana 2006. Por Fernando García y Álvaro Ortiz

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

  • Be the first to like this

No Downloads
Views
Total views
2,023
On SlideShare
0
From Embeds
0
Number of Embeds
74
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

LaCoctelera.com y The Shaker - Conferencia Rails Hispana 2006

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

×