Alto rendimiento en la web
-
Upload
nil-portugues-caldero -
Category
Technology
-
view
46 -
download
0
Transcript of Alto rendimiento en la web
Nil Portugués CalderóSenior PHP Developer @ Atrapalo.com
OpenDay La Salle Campus Barcelona | Sábado 18 de Abril 2015
1
Alto Rendimientoen la web
¿Quién soy yo?- Ingeniero Técnico en Informática de Sistemas
- Más de 15 años haciendo desarrollo web
- Empecé con Perl, SSI y PHP3 en 1999
- Me muevo entre el Backend y sistemas.
- Proyecto más duradero que he llevado: 14 años.
- Contribuyo en proyectos open source y libero propios
- Charlas: como asistente y ponente o colaborador
1. Red A tener en cuenta...
● Routing.
● Latencia según punto de acceso (CDNs)
● Optimización de saltos entre servidores.
● Bandwidth (ancho de banda)
9
2. Hardware
A tener en cuenta
Hardware○ RAM○ Procesador○ HDD SDD
Throughput de la tarjeta de red.
Sistemas operativo y su configuración.12
Programador
3. Infraestructura Beneficiarios del alto rendimiento:
14
Usuarios SysAdminEmpresa /
Empresario
3. Infraestructura Versión del lenguaje de programación
○ PHP 5.3
○ PHP 5.4
○ PHP 5.5
○ PHP 5.6
17
○ PHP 7.0
○ Hack (fork de Facebook)
3. Infraestructura Bases de datos
○ SQLite
○ MySQL
○ Postgresql
○ Sphinx
18
○ MongoDB
○ CouchDB
○ Riak
○ Hadoop
Programador
4. Código Fuente: Lado servidorBeneficiarios del alto rendimiento:
23
Usuarios SysAdminEmpresa /
Empresario
Lenguaje de programación
○ Documentación + Grado de madurez
○ Throughput/velocidad first byte.
○ Frameworks maduros disponibles.
○ Librerías disponibles.
4. Código Fuente: Lado servidor
25
Patrones de diseño
○ Cómo aplicarlos en el lenguaje de programación.
○ Conocer sus ventajas y limitaciones.
○ Estándares de estilo: PSR-2, Symfony…
○ Escribir “Clean Code” y eliminar los “Code Smells”.
26
4. Código Fuente: Lado servidor
28
¿Clean code?Ejemplos de “code smells”:
○ Hay código que nadie sabe como modificar o entiende.
○ Código que al modificarlo, rompe otras funcionalidades (...y no lo sabes hasta que lo reporta un cliente)
○ Errores que “a veces pasan”. Desconocimiento del problema.
○ Añadir una funcionalidad simple requiere muchas horas.
Reusabilidad de tu código.
○ DRY: Don’t repeat yourself.
○ Bug fixing en paquetes open source (a ser posible).
29
4. Código Fuente: Lado servidor
Mantenibilidad de tu código
○ TDD / Unit testing a nivel de clase.
○ BDD / Unit testing a nivel de integración.
31
4. Código Fuente: Lado servidor
Programador
4. Código Fuente: Lado clienteBeneficiarios del alto rendimiento:
33
Usuarios SysAdminEmpresa /
Empresario
Multimedia
○ PNG, JPG ,GIF, WEBP, MP4, SVG
○ Optimización de imágenes
○ Domain Sharding
34
4. Código Fuente: Lado cliente
CSS
○ Critical Rendering Path Performance
○ Responsive Web
○ Frameworks CSS
35
4. Código Fuente: Lado cliente
Programador
5. Económico
Beneficiarios del alto rendimiento:
39
Usuarios SysAdminEmpresa /
Empresario
Time to market
○ Cada día que pasa en subir una funcionalidad resulta más cara, aporte o no beneficios.
○ Cada día que pasa y no se ha subido una funcionalidadel departamento de marketing pierde competitividad.
5. Económico
40
Tolerancia a los fallos humanos
○ ¿Cuánto tardamos en detectar un fallo de código?
○ ¿Cuánto tardamos en resolver un fallo de código?
41
5. Económico
Integración contínua: detectar un fallo de código
○ Detección inmediata de errores.
○ No se sube a producción si hay errores.
43
5. Económico
Tolerancia a lo inesperado
○ ¿Cómo reaccionamos a una avalancha de usuarios inesperada?
○ Mejor aún, ¿sabemos predecir si se avecina una avalancha de usuarios?
44
5. Económico
Métricas
○ Justificar el tiempo invertido o razones de una decisión.
○ ¿Mejora de rendimiento respecto a que indicadores?
45
5. Económico