PHP Conference Argentina 2014

Post on 06-Jul-2015

371 views 0 download

description

Infrastructura para un proyecto de gran porte

Transcript of PHP Conference Argentina 2014

Infraestructura para un

proyecto de gran porte

Noviembre 2014

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?