PHP Conference Argentina 2014

26
Infraestructura para un proyecto de gran porte Noviembre 2014

description

Infrastructura para un proyecto de gran porte

Transcript of PHP Conference Argentina 2014

Page 1: PHP Conference Argentina 2014

Infraestructura para un

proyecto de gran porte

Noviembre 2014

Page 3: PHP Conference Argentina 2014

Introducción

■ Sobre el proyecto

■ Infraestructura de servidores

■ Software y servicios utilizados

■ Desafíos

■ Conclusiones

Page 4: PHP Conference Argentina 2014

El Proyecto

Page 5: PHP Conference Argentina 2014

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

Page 6: PHP Conference Argentina 2014

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

Page 7: PHP Conference Argentina 2014

Los Fierros

Page 8: PHP Conference Argentina 2014

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

Page 9: PHP Conference Argentina 2014

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!

Page 10: PHP Conference Argentina 2014

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

Page 11: PHP Conference Argentina 2014

Backends

■ Bases de Datos■ MySQL

■ MongoDB

■ Gestión de Contenidos

■ Feeds de uso externo■ Apps

■ Integradores

■ Scripts de mantenimiento

Page 12: PHP Conference Argentina 2014

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

Page 13: PHP Conference Argentina 2014

Poniendo

todo junto

Page 14: PHP Conference Argentina 2014

Desafíos

Page 15: PHP Conference Argentina 2014

Entornos de Trabajo

Pero en local me funciona…

■ Ambientes de staging

■ Entornos por aplicación

■ Entornos por issue

■ Control de Versiones

Page 16: PHP Conference Argentina 2014

Deployment

¿Cómo subimos a producción?

■ Magallanes

■ Peticiones de Deployment

■ Deploy Master

■ ¡Los viernes no se hace deploy!

Page 17: PHP Conference Argentina 2014

Performance y Cache

¿Cómo mejoramos la performance?

■ Varnish

■ Memcached■ Sesiones de PHP

■ Fragment Cache

Page 18: PHP Conference Argentina 2014

SSL

¿Cómo usamos HTTPs con una sola IP?

■ Varnish no soporta HTTPs

■ Son varios certificados SSL

■ Solución… Pound

Page 19: PHP Conference Argentina 2014

Búsquedas

¿Aparece algo si busco “собака сплетник”?

■ Más de 30 idiomas

■ Incluyendo Chino, Ruso, Griego, Turco…

■ Solucionamos con… Sphinx

Page 20: PHP Conference Argentina 2014

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

Page 21: PHP Conference Argentina 2014

Monitoreo

¿Te levanta el sitio?

■ Testing Unitario y Funcional

■ Integración Continua

■ Monitoreo permanente

■ Guardia 24x7

Page 22: PHP Conference Argentina 2014

Moraleja

Page 23: PHP Conference Argentina 2014

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

Page 24: PHP Conference Argentina 2014

¿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

Page 25: PHP Conference Argentina 2014

Gracias

¿Preguntas?