31

Refactorizando Pccomponentes.com con Symfony

Embed Size (px)

Citation preview

Un poco de historia

•De tienda física a tienda online

•Posicionamiento + desarrollo rápido

•Departamentos

•Dept. Informática

•Almacén y entrega rápida

Nos buscan y nos encuentran

Sesiones anuales desde 2011 a 2015 Fuente: Google Analytics-PcComponentes

Pedidos anuales desde 2011 a 2015 Fuente: PcComponentes

La evolución de sesiones y pedidos en los últimos cinco años ha seguido una marcada tendencia creciente, siendo más acentuada en el caso

de los pedidos finalizados por clientes.

Nuestra competencia

Nuestra diferenciación reside en la especialización dentro del

sector de la tecnología e informática.

Somos líderes en precio, servicio y calidad dentro del sector.

Somos la tienda online especializada en tecnología más visitada

de España por encima de empresas como Media Markt, Fnac,

Redcoon y Worten.

Nuestro Black Friday 2015

PcComponentes fue la tienda online con más

visibilidad de España, por encima de la competencia y

tan sólo por debajo del agregador Cupones Mágicos y

los resultados de noticias, manteniendo una visibilidad

del 5.28%.

Posicionamiento sin precedentes como tienda

online líder de tecnología : PcComponentes junto a

Amazon.

Aplicaciones por departamento

Aplicaciones por departamento (simulación)

Deuda técnica

Ward Cunningham • Negocio necesita nueva

funcionalidad

• Productos no acabados o con errores conocidos en producción

• Velocidad a corto plazo, suma complejidad

• Frustración, miedo a desplegar, horas extras…

• Limite cuando el gasto es mayor que el ingreso

Vamos a cambiar (refactorización)

• Intentos CORE SLIM

•Arquitectura nueva (API RESTFULL)

• Lenguaje común

• Cache

•Códigos de error y excepciones (1xx, 2xx, 3xx, 4xx 5xx)

• Estándares de código (PSR1-PSR2-PSR4)

• IDE

•Aplicación de un framework

Arquitectura

Elección del framework

Frameworks

¿Qué bundles puedo usar y cómo?

•Cuando creo uno

• Estudio de previo

•Adaptación a nuestro contexto

•Descarte por incompatibilidad

¿Donde pongo toda mi lógica?

MANAGER

CONTROLADOR

VISTA MODELO

¿Donde pongo toda mi lógica?

MANAGER

CONTROLADOR

VISTA MODELO

MANAGER

Nelmio

• Obtiene datos por introspección

• Posibilidad de hablar de swagger

• Hay que acordarse de desactivarlo en producción!!

• Junto con doxygen

Nelmio

Validadores

• Entidades complejas con asserts

• Uso de Constraints

• Custom Validation

Excepciones (InvalidArgumentsException)

Seguridad

•Autenticación basada en Oauth 2.0

• FOSOAuthServerBundle

•Client (cliente confiable ej. Frontend, cron)

•Resource owner password (usuario + pass ej. login)

• SSL

Refactorizar Base de Datos

•Base de datos compleja

3500 tablas aprox

•Bases de datos cambiantes

•Consultas muy pesadas

•Refactorizar comportamiento y semántica

DOCTRINE

•Capa intermedia con alguna lógica

•ORM – DQL & DBAL – MYSQL

•Mapear entidades

• Extensiones (Ej. Translatable)

•Console comands

• Crear entidades

• Ejecutar consultas

• Información de errores

DOCTRINE TRANSLATABLE

REDIS

• Cache de datos en RAM Ej. Datos del carro de compra

• 581 entradas en menos de 5 mins

• Mejora en 50 ms algunas llamadas

Rendimiento

Seguimos adelante

• Microservicios

• Colas de mensajes

• RabbitMQ

• Resque

• ElasticSearch (ej. buscadores, detalles de artículo)

• Test (selenium + nightwatch)

• Despliegues (Ansible)

PC Equipo

+

Leandro

Lorena

María

Carlos

Adrián

Alberto Vioque

Sergio

Pedro

Diego

Pedro Raja

Jero

Y familias

Agradecimientos

https://linkedin.com/in/mario-marin

https://twitter.com/mariomarin13

[email protected]

https://twitter.com/symfony_mur