SlideShare una empresa de Scribd logo
1 de 37
Descargar para leer sin conexión
MASTER EN PROGRAMACIÓN DE ALTO
RENDIMIENTO
Junio 2015
Sergi González
¿QUIÉN SOY?
• Sergi González
• Chief Trolling Officer
• IngenieroTécnico Sistemas
• Software Developer con 7
años de experiencia
• Akamon
• Atrápalo
@SergiGP
linkedin.com/in/sergigp
sergi@sergigp.com
DDD as an implementation
detail @ PHP Barcelona
https://www.youtube.com/watch?v=LT0M3o7Mk6g
Mejorando en Git @ Software
Craftmanship BCN
http://sergigp.com/slides-de-mejorando-en-git@SergiGP
linkedin.com/in/sergigp
sergi@sergigp.com
¿QUÉ HAGO?
• Web
• Facebook
• iOS
• Android
AKAMON
• Más de 60 trabajadores (30 developers)
• 12 millones de € facturados en 2014
• Transparencia
• Lean development
• Flexibilidad
• Self empowerment
AKAMON
• 24 millones usuarios registrados
• 25.000 jugadores recurrentes
• 420.000 usuarios activos diarios
• 50 - 100 servidores
HACEMOS COSAS CON …
¿PERO QUÉ ME ESTÁS
CONTAINER?
¿QUÉVAMOS AVER?
• Symfony
• ¿Cómo usamos Symfony en Akamon?
• La odisea de la request HTTP
• Coding Dojo
SYMFONY 2
• Componentes vs Full Stack Framework
• DRY, SOLID,TDD, KISS… WTF?!
• Configuration vs Convention
• Comunidad y ecosistema
• Es PHP para lo bueno y para lo malo
COMPONENTES SYMFONY 2
HTTP Foundation
Console
Debug
Yaml
DOM Crawler
Event Dispatcher
Filesystem
Form
Routing
Templating
Security
Dependency
Injection
… 31 componentes
EXTENSIBLE
+
• Symfony2 Bundles
http://knpbundles.com
SYMFONY 2 EN AKAMON
• Varias aplicaciones en una
• Nuestra Lógica de negocio no tiene nada que ver
con Sf2
COMPONENTES SYMFONY 2
HTTP Foundation
Console
Debug
Yaml
DOM Crawler
Event Dispatcher
Filesystem
Form
Routing
Templating
Security
Dependency
Injection
UN POQUITO DE HTTP
Url
Headers
Data
Verbo
HTTP Request
HTTP Response
• HTTP Request simplificada
• Verbos: GET, POST, PUT, DELETE, …
• Headers: Cookies, autenticación, …
• Data: Submit de un formulario (opcional)
UN POQUITO DE HTTP
twitter.com/i/tweet/create
…
status=Toma+HTTP+Request!
POST
FOS REST BUNDLE
• HTTPVerbs
- GET - Lee
- POST - Crea
- PUT - Actualiza
- DELETE - Borrar
Más sobre REST en: Teach a dog to REST
GET /users?fecha_registro=20150601
POST /users { id: 2, nombre: sergi }
PUT /users/2 { nombre: pepito }
DELETE /users/2
BUNDLES QUE USAMOS
• Monolog - Logs
• JMS Serializer - Serializar responses (Obj -> json)
• Nelmio Api Doc - Documentar Api
• Gaufrette -Virtual Filesystem (FTP, S3…)
COSAS QUE NO HACEMOS
• No reinventamos la rueda
• No tenemos miedo a cambiar (Testing)
• No nos acoplamos a Symfony
CQRS
CQRS
• Command and Query Responsibility Segregation
• Dame cosasVs Haz cosas
Query Command
¿Usuarios registrados ayer? Registra un usuario
¿Pagos de Sergi? Borra un usuario
¿Que bonos disponibles tiene Sergi? Crea un pago
Da 100 fichas a Sergi
LA ODISEA DE LA
PETICIÓN HTTP
• Poder registrar un usuario
• Abrirle una cuenta de economía para que pueda tener fichas
• Enviarle un email de bienvenida
DOMAIN EVENTS
(O EVENTOS DE DOMINIO)
EVENTOS DE DOMINIO
• Haz algo cuando pase algo
• Cuando se registre un usuario:
• Mandamos un mail de bienvenida. (asíncrono)
• Abrimos una cuenta de economía. (síncrono)
Evento
Subscriber
Usuario registrado
Subscriber
Mandar mail
Cuenta economia
DEP
EVENTOS DE DOMINIO
Evento
síncronos
API en PHP
Otro sistema
Analitica en Clojure
Marketing en PHP
FUCK YOUR THEORY!
VOLVEMOS EN 5 MINUTOS
REPASO CONCEPTOS
• Comandos y Command Bus
• Queries y Oráculo
• Eventos de dominio y Domain Event Publisher
• Separar, separar y volver a separar
PlayerPostController Command Bus
PlayerRegistrationCommandHandler
PlayerRegistrar
Domain
Event
Publisher
CreateAccountOnPlayerRe
gistered
AccountOpener
Player
PlayerRepository Event
Subscribers
.
.
.
POST /users
[
id: 0db90987-5ce1-4683-bb05-7d1b5539cb0b
name: Pepito
]
Command
Handlers
.
.
.
PlayerRegistered
Player
BASIC REQUEST
PlayerRegistration
PlayerRegistration
PlayerId
PlayerName
name
playerId
PlayerRegistered
playerId
PlayerRepositoryMysql
COMMAND BUS
DEP
EJERCICIO
• Un usuario quiere jugar a nuestro juego
• Le creamos una cuenta de usuario
• Le creamos una cuenta de economia para que pueda
apostar fichas
• Le damos un Welcome Bonus para que empiece a
jugar
EJERCICIO (BONUS)
• Cuando el balance de fichas del usuario se
actualiza, lanzamos un evento
• Testing
PARA QUE NOTE PIERDAS…
1. Test de aceptación del Welcome Bonus (WB) fallando
2. Subscriber para crear WB cuando se abre una cuenta de economia
3. Procesador transacciones de economia
4. Guardar el nuevo balance
5. Usando el service container para configurar los subscribers *
6. Publicando un evento de dominio cuando se actualiza el balance
MOLTES GRÀCIES :)

Más contenido relacionado

Destacado

Modelo de Alto Rendimiento empresarial
Modelo de Alto Rendimiento empresarialModelo de Alto Rendimiento empresarial
Modelo de Alto Rendimiento empresarialCarlos Guiteras
 
La estructura de los equipos de alto rendimiento. Series: Modelos de negocio
La estructura de los equipos de alto rendimiento. Series: Modelos de negocioLa estructura de los equipos de alto rendimiento. Series: Modelos de negocio
La estructura de los equipos de alto rendimiento. Series: Modelos de negocioJorge Edgar Mora Reyes
 
Administracion De Operaciones Ii Exposicion Equipos De Alto Rendimiento
Administracion De Operaciones Ii Exposicion Equipos De Alto RendimientoAdministracion De Operaciones Ii Exposicion Equipos De Alto Rendimiento
Administracion De Operaciones Ii Exposicion Equipos De Alto RendimientoInstituto Tecnologico De Pachuca
 
Equipos de alto rendimiento
Equipos de alto rendimientoEquipos de alto rendimiento
Equipos de alto rendimientoluisj23
 
Characteristics Of High Performance Teams
Characteristics Of High Performance TeamsCharacteristics Of High Performance Teams
Characteristics Of High Performance Teamsbeverlybradstock
 
Equipos de alto rendimiento
Equipos de alto rendimientoEquipos de alto rendimiento
Equipos de alto rendimientoAna Gutierrez
 
Sistemas de ecuaciones de 2 x 2
Sistemas de ecuaciones de  2 x 2Sistemas de ecuaciones de  2 x 2
Sistemas de ecuaciones de 2 x 2andredorado
 
Mi trbajo de pintura nª4
Mi trbajo de pintura nª4Mi trbajo de pintura nª4
Mi trbajo de pintura nª4cristinachip
 
Petit déjeuner Coordination Sud / Déclic
Petit déjeuner Coordination Sud / Déclic Petit déjeuner Coordination Sud / Déclic
Petit déjeuner Coordination Sud / Déclic astro
 
Merci Pour Vos Mails
Merci Pour Vos MailsMerci Pour Vos Mails
Merci Pour Vos Mailsmarsipulami
 
Formation Maroc Telecom
Formation Maroc Telecom Formation Maroc Telecom
Formation Maroc Telecom Mourad Amalik
 
Le point ooas sfmc-strat adviser sur ébola au dimanche 07 décembre 2014
Le point ooas sfmc-strat adviser sur ébola au dimanche 07 décembre 2014Le point ooas sfmc-strat adviser sur ébola au dimanche 07 décembre 2014
Le point ooas sfmc-strat adviser sur ébola au dimanche 07 décembre 2014Jan-Cedric Hansen
 
Ángel Ron asegura que banco Popular eleva su solvencia y sitúa su CT1 EBA en ...
Ángel Ron asegura que banco Popular eleva su solvencia y sitúa su CT1 EBA en ...Ángel Ron asegura que banco Popular eleva su solvencia y sitúa su CT1 EBA en ...
Ángel Ron asegura que banco Popular eleva su solvencia y sitúa su CT1 EBA en ...Banco Popular
 
E twinning legionnaires
E twinning legionnairesE twinning legionnaires
E twinning legionnaireszloubet
 
4emes Rencontres Nationales du etourisme institutionnel - Speed dating L'accu...
4emes Rencontres Nationales du etourisme institutionnel - Speed dating L'accu...4emes Rencontres Nationales du etourisme institutionnel - Speed dating L'accu...
4emes Rencontres Nationales du etourisme institutionnel - Speed dating L'accu...Ludovic Dublanchet
 
2. omar sayegrih bural projet ignite
2. omar sayegrih bural projet ignite2. omar sayegrih bural projet ignite
2. omar sayegrih bural projet igniteSalah Benzakour
 

Destacado (20)

Modelo de Alto Rendimiento empresarial
Modelo de Alto Rendimiento empresarialModelo de Alto Rendimiento empresarial
Modelo de Alto Rendimiento empresarial
 
La estructura de los equipos de alto rendimiento. Series: Modelos de negocio
La estructura de los equipos de alto rendimiento. Series: Modelos de negocioLa estructura de los equipos de alto rendimiento. Series: Modelos de negocio
La estructura de los equipos de alto rendimiento. Series: Modelos de negocio
 
Administracion De Operaciones Ii Exposicion Equipos De Alto Rendimiento
Administracion De Operaciones Ii Exposicion Equipos De Alto RendimientoAdministracion De Operaciones Ii Exposicion Equipos De Alto Rendimiento
Administracion De Operaciones Ii Exposicion Equipos De Alto Rendimiento
 
Equipos de alto rendimiento
Equipos de alto rendimientoEquipos de alto rendimiento
Equipos de alto rendimiento
 
Characteristics Of High Performance Teams
Characteristics Of High Performance TeamsCharacteristics Of High Performance Teams
Characteristics Of High Performance Teams
 
Equipos de alto rendimiento
Equipos de alto rendimientoEquipos de alto rendimiento
Equipos de alto rendimiento
 
Sistemas de ecuaciones de 2 x 2
Sistemas de ecuaciones de  2 x 2Sistemas de ecuaciones de  2 x 2
Sistemas de ecuaciones de 2 x 2
 
Mi trbajo de pintura nª4
Mi trbajo de pintura nª4Mi trbajo de pintura nª4
Mi trbajo de pintura nª4
 
Petit déjeuner Coordination Sud / Déclic
Petit déjeuner Coordination Sud / Déclic Petit déjeuner Coordination Sud / Déclic
Petit déjeuner Coordination Sud / Déclic
 
La cabane-a-sucre-ekim
La cabane-a-sucre-ekimLa cabane-a-sucre-ekim
La cabane-a-sucre-ekim
 
Ima 2010
Ima 2010Ima 2010
Ima 2010
 
Merci Pour Vos Mails
Merci Pour Vos MailsMerci Pour Vos Mails
Merci Pour Vos Mails
 
Formation Maroc Telecom
Formation Maroc Telecom Formation Maroc Telecom
Formation Maroc Telecom
 
El foro de discusion
 El foro de discusion El foro de discusion
El foro de discusion
 
Le point ooas sfmc-strat adviser sur ébola au dimanche 07 décembre 2014
Le point ooas sfmc-strat adviser sur ébola au dimanche 07 décembre 2014Le point ooas sfmc-strat adviser sur ébola au dimanche 07 décembre 2014
Le point ooas sfmc-strat adviser sur ébola au dimanche 07 décembre 2014
 
Ángel Ron asegura que banco Popular eleva su solvencia y sitúa su CT1 EBA en ...
Ángel Ron asegura que banco Popular eleva su solvencia y sitúa su CT1 EBA en ...Ángel Ron asegura que banco Popular eleva su solvencia y sitúa su CT1 EBA en ...
Ángel Ron asegura que banco Popular eleva su solvencia y sitúa su CT1 EBA en ...
 
Puissance10
Puissance10Puissance10
Puissance10
 
E twinning legionnaires
E twinning legionnairesE twinning legionnaires
E twinning legionnaires
 
4emes Rencontres Nationales du etourisme institutionnel - Speed dating L'accu...
4emes Rencontres Nationales du etourisme institutionnel - Speed dating L'accu...4emes Rencontres Nationales du etourisme institutionnel - Speed dating L'accu...
4emes Rencontres Nationales du etourisme institutionnel - Speed dating L'accu...
 
2. omar sayegrih bural projet ignite
2. omar sayegrih bural projet ignite2. omar sayegrih bural projet ignite
2. omar sayegrih bural projet ignite
 

Similar a Slides Master Programación de Alto Rendimiento 2015

Charla LogicApps en el CEUS
Charla LogicApps en el CEUSCharla LogicApps en el CEUS
Charla LogicApps en el CEUSrobertogg
 
Catalogo servicios somos.plus
Catalogo servicios somos.plusCatalogo servicios somos.plus
Catalogo servicios somos.plusElena Gámez 🦖
 
Catalogo servicios somos.plus
Catalogo servicios somos.plusCatalogo servicios somos.plus
Catalogo servicios somos.plusRaquelRuiz75
 
Catalogo servicios somos.plus
Catalogo servicios somos.plusCatalogo servicios somos.plus
Catalogo servicios somos.plusAsierCaballero
 
CÓMO MONTAR UNA TIENDA ONLINE Y QUE VENDA.
CÓMO MONTAR UNA TIENDA ONLINE Y QUE VENDA.CÓMO MONTAR UNA TIENDA ONLINE Y QUE VENDA.
CÓMO MONTAR UNA TIENDA ONLINE Y QUE VENDA.Aje Región de Murcia
 
Creando Productos SaaS
Creando Productos SaaSCreando Productos SaaS
Creando Productos SaaSAsier Marqués
 
Presentación Felipe Daiber- eCommerce Day Santiago 2015
Presentación Felipe Daiber- eCommerce Day Santiago 2015 Presentación Felipe Daiber- eCommerce Day Santiago 2015
Presentación Felipe Daiber- eCommerce Day Santiago 2015 eCommerce Institute
 
Symfony y 3 millones de usuarios, nuestro dia a dia
Symfony y 3 millones de usuarios, nuestro dia a diaSymfony y 3 millones de usuarios, nuestro dia a dia
Symfony y 3 millones de usuarios, nuestro dia a diaJordi Llonch
 
SEOnderground 2022 | Migraciones web: el verdadero viernes 13
SEOnderground 2022 | Migraciones web: el verdadero viernes 13SEOnderground 2022 | Migraciones web: el verdadero viernes 13
SEOnderground 2022 | Migraciones web: el verdadero viernes 13Paula Alvarez
 
Cómo auditar tu presencia online | Montserrat Cano - Webinar SiteGround
Cómo auditar tu presencia online | Montserrat Cano - Webinar SiteGroundCómo auditar tu presencia online | Montserrat Cano - Webinar SiteGround
Cómo auditar tu presencia online | Montserrat Cano - Webinar SiteGroundSiteGround España
 
Construyendo hechos y dimensiones lentamente cambiantes para tu dw
Construyendo hechos y dimensiones lentamente cambiantes para tu dwConstruyendo hechos y dimensiones lentamente cambiantes para tu dw
Construyendo hechos y dimensiones lentamente cambiantes para tu dwSpanishPASSVC
 

Similar a Slides Master Programación de Alto Rendimiento 2015 (20)

Frontal avanzado y assetic
Frontal avanzado y asseticFrontal avanzado y assetic
Frontal avanzado y assetic
 
Frontal Avanzado y Assetic
Frontal Avanzado y AsseticFrontal Avanzado y Assetic
Frontal Avanzado y Assetic
 
Charla LogicApps en el CEUS
Charla LogicApps en el CEUSCharla LogicApps en el CEUS
Charla LogicApps en el CEUS
 
Catalogo servicios somos.plus
Catalogo servicios somos.plusCatalogo servicios somos.plus
Catalogo servicios somos.plus
 
Catalogo servicios somos.plus
Catalogo servicios somos.plusCatalogo servicios somos.plus
Catalogo servicios somos.plus
 
Catalogo servicios somos.plus
Catalogo servicios somos.plusCatalogo servicios somos.plus
Catalogo servicios somos.plus
 
Catalogo servicios somos.plus
Catalogo servicios somos.plusCatalogo servicios somos.plus
Catalogo servicios somos.plus
 
Catalogo servicios somos.plus
Catalogo servicios somos.plusCatalogo servicios somos.plus
Catalogo servicios somos.plus
 
Catalogo servicios somos.plus
Catalogo servicios somos.plusCatalogo servicios somos.plus
Catalogo servicios somos.plus
 
Catalogo servicios somos.plus
Catalogo servicios somos.plusCatalogo servicios somos.plus
Catalogo servicios somos.plus
 
Catalogo servicios somos.plus
Catalogo servicios somos.plusCatalogo servicios somos.plus
Catalogo servicios somos.plus
 
Herramientas para Startups
Herramientas para StartupsHerramientas para Startups
Herramientas para Startups
 
CÓMO MONTAR UNA TIENDA ONLINE Y QUE VENDA.
CÓMO MONTAR UNA TIENDA ONLINE Y QUE VENDA.CÓMO MONTAR UNA TIENDA ONLINE Y QUE VENDA.
CÓMO MONTAR UNA TIENDA ONLINE Y QUE VENDA.
 
Creando Productos SaaS
Creando Productos SaaSCreando Productos SaaS
Creando Productos SaaS
 
19 años de Lean y Agile
19 años de Lean y Agile19 años de Lean y Agile
19 años de Lean y Agile
 
Presentación Felipe Daiber- eCommerce Day Santiago 2015
Presentación Felipe Daiber- eCommerce Day Santiago 2015 Presentación Felipe Daiber- eCommerce Day Santiago 2015
Presentación Felipe Daiber- eCommerce Day Santiago 2015
 
Symfony y 3 millones de usuarios, nuestro dia a dia
Symfony y 3 millones de usuarios, nuestro dia a diaSymfony y 3 millones de usuarios, nuestro dia a dia
Symfony y 3 millones de usuarios, nuestro dia a dia
 
SEOnderground 2022 | Migraciones web: el verdadero viernes 13
SEOnderground 2022 | Migraciones web: el verdadero viernes 13SEOnderground 2022 | Migraciones web: el verdadero viernes 13
SEOnderground 2022 | Migraciones web: el verdadero viernes 13
 
Cómo auditar tu presencia online | Montserrat Cano - Webinar SiteGround
Cómo auditar tu presencia online | Montserrat Cano - Webinar SiteGroundCómo auditar tu presencia online | Montserrat Cano - Webinar SiteGround
Cómo auditar tu presencia online | Montserrat Cano - Webinar SiteGround
 
Construyendo hechos y dimensiones lentamente cambiantes para tu dw
Construyendo hechos y dimensiones lentamente cambiantes para tu dwConstruyendo hechos y dimensiones lentamente cambiantes para tu dw
Construyendo hechos y dimensiones lentamente cambiantes para tu dw
 

Último

Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Opentix
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionarmando_cardenas
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOSelenaCoronadoHuaman
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfmasogeis
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTEREMMAFLORESCARMONA
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...ITeC Instituto Tecnología Construcción
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3AlexysCaytanoMelndez1
 

Último (7)

Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacion
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdf
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTER
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
 

Slides Master Programación de Alto Rendimiento 2015

  • 1. MASTER EN PROGRAMACIÓN DE ALTO RENDIMIENTO Junio 2015 Sergi González
  • 3. • Sergi González • Chief Trolling Officer • IngenieroTécnico Sistemas • Software Developer con 7 años de experiencia • Akamon • Atrápalo @SergiGP linkedin.com/in/sergigp sergi@sergigp.com
  • 4. DDD as an implementation detail @ PHP Barcelona https://www.youtube.com/watch?v=LT0M3o7Mk6g Mejorando en Git @ Software Craftmanship BCN http://sergigp.com/slides-de-mejorando-en-git@SergiGP linkedin.com/in/sergigp sergi@sergigp.com
  • 6.
  • 7. • Web • Facebook • iOS • Android
  • 8. AKAMON • Más de 60 trabajadores (30 developers) • 12 millones de € facturados en 2014 • Transparencia • Lean development • Flexibilidad • Self empowerment
  • 9. AKAMON • 24 millones usuarios registrados • 25.000 jugadores recurrentes • 420.000 usuarios activos diarios • 50 - 100 servidores
  • 11. ¿PERO QUÉ ME ESTÁS CONTAINER?
  • 12. ¿QUÉVAMOS AVER? • Symfony • ¿Cómo usamos Symfony en Akamon? • La odisea de la request HTTP • Coding Dojo
  • 13. SYMFONY 2 • Componentes vs Full Stack Framework • DRY, SOLID,TDD, KISS… WTF?! • Configuration vs Convention • Comunidad y ecosistema • Es PHP para lo bueno y para lo malo
  • 14. COMPONENTES SYMFONY 2 HTTP Foundation Console Debug Yaml DOM Crawler Event Dispatcher Filesystem Form Routing Templating Security Dependency Injection … 31 componentes
  • 16. SYMFONY 2 EN AKAMON • Varias aplicaciones en una • Nuestra Lógica de negocio no tiene nada que ver con Sf2
  • 17. COMPONENTES SYMFONY 2 HTTP Foundation Console Debug Yaml DOM Crawler Event Dispatcher Filesystem Form Routing Templating Security Dependency Injection
  • 18. UN POQUITO DE HTTP Url Headers Data Verbo HTTP Request HTTP Response • HTTP Request simplificada • Verbos: GET, POST, PUT, DELETE, … • Headers: Cookies, autenticación, … • Data: Submit de un formulario (opcional)
  • 19. UN POQUITO DE HTTP twitter.com/i/tweet/create … status=Toma+HTTP+Request! POST
  • 20. FOS REST BUNDLE • HTTPVerbs - GET - Lee - POST - Crea - PUT - Actualiza - DELETE - Borrar Más sobre REST en: Teach a dog to REST GET /users?fecha_registro=20150601 POST /users { id: 2, nombre: sergi } PUT /users/2 { nombre: pepito } DELETE /users/2
  • 21. BUNDLES QUE USAMOS • Monolog - Logs • JMS Serializer - Serializar responses (Obj -> json) • Nelmio Api Doc - Documentar Api • Gaufrette -Virtual Filesystem (FTP, S3…)
  • 22. COSAS QUE NO HACEMOS • No reinventamos la rueda • No tenemos miedo a cambiar (Testing) • No nos acoplamos a Symfony
  • 23. CQRS
  • 24. CQRS • Command and Query Responsibility Segregation • Dame cosasVs Haz cosas Query Command ¿Usuarios registrados ayer? Registra un usuario ¿Pagos de Sergi? Borra un usuario ¿Que bonos disponibles tiene Sergi? Crea un pago Da 100 fichas a Sergi
  • 25. LA ODISEA DE LA PETICIÓN HTTP • Poder registrar un usuario • Abrirle una cuenta de economía para que pueda tener fichas • Enviarle un email de bienvenida
  • 27. EVENTOS DE DOMINIO • Haz algo cuando pase algo • Cuando se registre un usuario: • Mandamos un mail de bienvenida. (asíncrono) • Abrimos una cuenta de economía. (síncrono) Evento Subscriber Usuario registrado Subscriber Mandar mail Cuenta economia DEP
  • 28. EVENTOS DE DOMINIO Evento síncronos API en PHP Otro sistema Analitica en Clojure Marketing en PHP
  • 30. VOLVEMOS EN 5 MINUTOS
  • 31. REPASO CONCEPTOS • Comandos y Command Bus • Queries y Oráculo • Eventos de dominio y Domain Event Publisher • Separar, separar y volver a separar
  • 32. PlayerPostController Command Bus PlayerRegistrationCommandHandler PlayerRegistrar Domain Event Publisher CreateAccountOnPlayerRe gistered AccountOpener Player PlayerRepository Event Subscribers . . . POST /users [ id: 0db90987-5ce1-4683-bb05-7d1b5539cb0b name: Pepito ] Command Handlers . . . PlayerRegistered Player BASIC REQUEST PlayerRegistration PlayerRegistration PlayerId PlayerName name playerId PlayerRegistered playerId PlayerRepositoryMysql COMMAND BUS DEP
  • 33. EJERCICIO • Un usuario quiere jugar a nuestro juego • Le creamos una cuenta de usuario • Le creamos una cuenta de economia para que pueda apostar fichas • Le damos un Welcome Bonus para que empiece a jugar
  • 34. EJERCICIO (BONUS) • Cuando el balance de fichas del usuario se actualiza, lanzamos un evento • Testing
  • 35.
  • 36. PARA QUE NOTE PIERDAS… 1. Test de aceptación del Welcome Bonus (WB) fallando 2. Subscriber para crear WB cuando se abre una cuenta de economia 3. Procesador transacciones de economia 4. Guardar el nuevo balance 5. Usando el service container para configurar los subscribers * 6. Publicando un evento de dominio cuando se actualiza el balance