View
372
Download
0
Category
Preview:
DESCRIPTION
Infrastructura para un proyecto de gran porte
Citation preview
Infraestructura para un
proyecto de gran porte
Noviembre 2014
Andrés
Montañez@andres_montanez
Rodrigo
Mendez@menrod
Alejandro
Glejberman@aglejberman
@aciliainternet
Introducción
■ Sobre el proyecto
■ Infraestructura de servidores
■ Software y servicios utilizados
■ Desafíos
■ Conclusiones
El Proyecto
Punto de Partida
■ Migración a una nueva plataforma
■ Tráfico heredado
■ En caso de error… no rollback
■ Contenido Editorial
■ Manejador de contenido
■ Sitios web
■ Multi país/región
Situación inicial
■ ¿Que debemos soportar inicialmente?■ Aplicaciones “legacy”: LAMP
■ Una nueva aplicación en Symfony 2
■ Otras aplicaciones web y mobile en el futuro
■ ¿Con que recursos empezamos?■ Balanceador CISCO ACE
■ Ocho servidores
Los Fierros
Balanceo de tráfico
■ Opciones■ Round Robin en DNS
■ Heart Beat
■ Load Balancer
■ Cisco ACE■ Único punto de acceso a las aplicaciones
■ ¡Es hardware dedicado!
■ Deriva todo el tráfico a los servidores Varnish
■ Permite escalar horizontalmente el cache
Receta clásica: LAMP
■ Tenemos dos servidores de Frontend■ ¡Hagamos todo LAMP!
■ Pero... ■ Aplicaciones incompatibles (módulos, versiones)
■ Necesitamos redundancia
■ ¿Cómo solucionamos?■ ¡Virtualizamos todo!
Frontends Virtualizados
■ ¿Qué logramos virtualizando?■ Aislamos las diferentes aplicaciones
■ Logramos redundancia
■ Distribución de recursos y tráfico
■ Servicio de virtualización: KVM■ Ventaja: funciona…
■ Desventaja: …pero no tan bien
Backends
■ Bases de Datos■ MySQL
■ MongoDB
■ Gestión de Contenidos
■ Feeds de uso externo■ Apps
■ Integradores
■ Scripts de mantenimiento
Media
■ Varios TeraBytes de assets
■ Web Server■ Nginx
■ Optimizado para statics
■ PHP-FPM (imágenes “on the fly”)
■ Montado en Backends y Frontends
■ Origen de los CDNs
Poniendo
todo junto
Desafíos
Entornos de Trabajo
Pero en local me funciona…
■ Ambientes de staging
■ Entornos por aplicación
■ Entornos por issue
■ Control de Versiones
Deployment
¿Cómo subimos a producción?
■ Magallanes
■ Peticiones de Deployment
■ Deploy Master
■ ¡Los viernes no se hace deploy!
Performance y Cache
¿Cómo mejoramos la performance?
■ Varnish
■ Memcached■ Sesiones de PHP
■ Fragment Cache
SSL
¿Cómo usamos HTTPs con una sola IP?
■ Varnish no soporta HTTPs
■ Son varios certificados SSL
■ Solución… Pound
Búsquedas
¿Aparece algo si busco “собака сплетник”?
■ Más de 30 idiomas
■ Incluyendo Chino, Ruso, Griego, Turco…
■ Solucionamos con… Sphinx
DELETE FROM … Oops!
■ Control de Versiones en Git
■ Respaldo y Réplicas de Bases de Datos
■ Respaldo de Assets
■ Respaldo de código no versionado
Backups
Monitoreo
¿Te levanta el sitio?
■ Testing Unitario y Funcional
■ Integración Continua
■ Monitoreo permanente
■ Guardia 24x7
Moraleja
Situación Actual
✓ Servidores: 13
✓ Máquinas virtuales: 24
✓ Aplicaciones: 7 y sumando
✓ Sitios: +120
✓ Feeds: +10
✓ Visitas únicas: +7 millones por mes
✓ Líneas de PHP: ~500.000 made in Acilia
¿Qué nos ha dejado la experiencia?
“Una infraestructura a medida para cada aplicación”
– La virtualización rinde
“¡En PHP 5.4 tenemos traits!”
– Beneficios de estar actualizados
“Desarrollar para el problema y no para el proyecto”
– Acilia Components
Gracias
¿Preguntas?
Enlaces
Acilia Internet@aciliaInternet
Rodrigo Mendez@menrod
Alejandro Glejberman@aglejberman
Andrés Montañez@andres_montanez
Varnish
OSSEC
Magallanes
Pound
Sphinx
rdiff-backup
Recommended