Alto rendimiento en la web

48
Nil Portugués Calderó Senior PHP Developer @ Atrapalo.com OpenDay La Salle Campus Barcelona | Sábado 18 de Abril 2015 1 Alto Rendimiento en la web

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

¡EMPEZAMOS!

Alto rendimiento

4¿respecto a qué o quién?

1. Red

2. Hardware

3. Infraestructura

4. Código Fuente

5. Económico

5

Alto rendimiento según:

6

Actores

ProgramadorUsuarios SysAdminEmpresa /

Empresario

7

La RedPor dónde circulan la información

Programador

1. Red Beneficiarios del alto rendimiento:

8

Usuarios SysAdminEmpresa /

Empresario

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

10

El HardwareDonde viven la información

2. Hardware Beneficiarios del alto rendimiento:

11

ProgramadorUsuarios SysAdminEmpresa /

Empresario

2. Hardware

A tener en cuenta

Hardware○ RAM○ Procesador○ HDD SDD

Throughput de la tarjeta de red.

Sistemas operativo y su configuración.12

13

La InfraestructuraCómo gestionamos la información

Programador

3. Infraestructura Beneficiarios del alto rendimiento:

14

Usuarios SysAdminEmpresa /

Empresario

3. Infraestructura Protocolo web

○ HTTP 1.1

○ Spdy / HTTP 2.0

15

3. Infraestructura Servidor web

○ Apache 2

○ Nginx

○ ReactPHP

16

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

3. Infraestructura Motores de búsqueda

○ Sphinx

○ Elasticsearch / Solr

19

3. Infraestructura Sistemas de cache

○ Redis

○ Memcached

20

3. Infraestructura Procesado de datos en background

○ Sistema de colas

○ Back-ups

21

22

Código FuenteModelado de la información

Programador

4. Código Fuente: Lado servidorBeneficiarios del alto rendimiento:

23

Usuarios SysAdminEmpresa /

Empresario

24

4. Código Fuente: Lado servidor

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

27

¿Clean code?

Robert Cecil Martin (Uncle Bob)

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

30

DRY: Don’t repeat yourself

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

4. Código Fuente: Lado cliente

32

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

Javascript

○ Sync, Async, Deferred

○ Librerias Javascript

36

4. Código Fuente: Lado cliente

HTML○ W3C Compliant

○ Semantic HTML

○ Schema.org

○ SEO

37

4. Código Fuente: Lado cliente

38

EconómicoCuán rentable es nuestra información

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

Métricas día a día y contra el año anterior

46

5. Económico

47

Nil Portugués Calderó

[email protected]

@niluspc

48

Gracias