SlideShare una empresa de Scribd logo
1 de 33
Descargar para leer sin conexión
MPWAR
Master en Programación Web de
Alto Rendimiento
Quién soy?
Eloi Poch
http://twitter.com/eloipoch
http://github.com/eloipoch
http://linkedin.com/in/eloipoch
• Software Developer
• Autodidacta
• Team Learner
Eloi Poch
http://twitter.com/eloipoch
http://github.com/eloipoch
http://linkedin.com/in/eloipoch
• Technical Lead
@Akamon
• CTO @TusJuegos
• Software Development
Manager @Grupo ITnet
• Senior PHP Developer
@Groupalia
Eloi Poch
http://twitter.com/eloipoch
http://github.com/eloipoch
http://linkedin.com/in/eloipoch
• To mock or not to mock
@DeSymfony Bcn 2014
• DDD as an
implementation detail
@PHP Barcelona Febrero
2015
En números
• + 60 trabajadores
• + 30 son desarrolladores
• 3 oficinas (Bcn, Vlc y Tlv)
• 12 millones de € de facturación
en 2014
Filosofía
• Transparencia (incluso sueldos)
• Flexibilidad
• Trabajo remoto
• Cultura Lean
Tecnologías
Números a nivel técnico
• Más de 24 millones de usuarios
• 25.000 jugadores concurrentes
• 420.000 DAUs
• 50 - 100 servidores
@jordillonch @SergiGP
@jorgeavila_ss @jdiezc
@jvalduvieco
@amassa5
Estas son mis slides.
Si no os gustan tengo
otras :)
Agenda
• Symfony
• Symfony en Akamon
• Código PHP en Akamon
• Ejercicio Práctico
Symfony
Componentes
vs
Framework
Symfony
• Uno de los frameworks más avanzados
• Gran comunidad y ecosistema
• Gran ecosistema
• Rápida (y buena) evolución
• Alta flexibilidad
• Rápido (para ser PHP)
Symfony
Solventa problemas
redundantes, incluso
alguno difícil y sin
molestar demasiado
Symfony
Symfony en Akamon
Varias aplicaciones SF2
en un mismo proyecto/
repositorio
Symfony en Akamon
Symfony en Akamon
• Enrutamiento
• Contenedor de Servicios
• Comandos de Consola
• Logging
• Plantillas (Twig)
• Traducciones
Doctrine 2
Symfony en Akamon
• Monolog Bundle
• FOSRest Bundle
• JMS Serializer Bundle
• Nelmio ApiDoc Bundle
Symfony en Akamon
Desacoplamos la lógica
de negocio del
framework
Symfony en Akamon
Lógica de negocio
integrada en SF2 a través
(no dentro) de Bundles
Symfony en Akamon
UserPostController Command Bus
UserRegistratorCommandHandler
UserRegistrator
Domain
Event
Publisher
UserRegisteredDomainEv
entSubscriber
UserAccountOpener
User UserRepository Event
Subscribers
.
.
.
POST /users
[
userId: 0db90987-5ce1-4683-bb05-7d1b5539cb0b
]
Command
Handlers
.
.
.
UserRegisteredDomainEvent
User
HORUS
BASIC REQUEST
UserRegistrationCommand
UserRegistrationCommand
userId
analyticsContextId
userId
analyticsContextId
UserRegisteredDomainEvent
userId
analyticsContextId
id 

(Economy Account)
Ejercicio
https://github.com/
eloipoch/mpwar
Ejercicio
git checkout
welcome-bonus-test
Ejercicio
./bin/behat
Ejercicio
• Crear Subscriber
GiveWelcomeBonusOnAccountOpened
• Crear Service TransactionProcessor
• Añadir el método Save al
AccountRepository
• Configurar los servicios en el contenedor
• Lanzar evento de dominio
AccountBalanceChanged
Ejercicio
1. Acceptance test for the Welcome Bonus of 100
coins
2. Welcome Bonus subscriber on account opened
3. Economy Transaction Processor application
service
4. Add method save to Account Repository
5. Configure Welcome Bonus subscriber in the
container
6. Publish Account balance changed domain event
7. Behaviour & Integration tests for Welcome Bonus

Más contenido relacionado

Similar a Introduction to Akamon software arquitecture for MPWAR

BilboStack - Php en el 2012
BilboStack - Php en el 2012BilboStack - Php en el 2012
BilboStack - Php en el 2012Asier Marqués
 
Drupal camp2010bcn cmis-drupal_alfresco-v1.1
Drupal camp2010bcn cmis-drupal_alfresco-v1.1Drupal camp2010bcn cmis-drupal_alfresco-v1.1
Drupal camp2010bcn cmis-drupal_alfresco-v1.1Roger CARHUATOCTO
 
Introducción a los Frameworks PHP
Introducción a los Frameworks PHP  Introducción a los Frameworks PHP
Introducción a los Frameworks PHP Aprende PHP
 
Adentrándonos al Framework Symfony
Adentrándonos al  Framework SymfonyAdentrándonos al  Framework Symfony
Adentrándonos al Framework SymfonyRodrigo Miranda
 
1. Presentación e instalación de Python.pdf
1. Presentación e instalación de Python.pdf1. Presentación e instalación de Python.pdf
1. Presentación e instalación de Python.pdfJhonJairoMorenoDuart
 
Symfony en la gestión de un centro de computación avanzada
Symfony en la gestión de un centro de computación avanzadaSymfony en la gestión de un centro de computación avanzada
Symfony en la gestión de un centro de computación avanzadaCésar Suárez Ortega
 
Caso práctico II: symfony en la gestión de un centro de computación avanzada ...
Caso práctico II: symfony en la gestión de un centro de computación avanzada ...Caso práctico II: symfony en la gestión de un centro de computación avanzada ...
Caso práctico II: symfony en la gestión de un centro de computación avanzada ...Decharlas
 
Symfony2 un framework para maximizar tu productividad en desarrollo web
Symfony2 un framework para maximizar tu productividad en desarrollo webSymfony2 un framework para maximizar tu productividad en desarrollo web
Symfony2 un framework para maximizar tu productividad en desarrollo webIEBSchool
 
Introducción a Symfony
Introducción a Symfony Introducción a Symfony
Introducción a Symfony Marcos Quesada
 
BootCamp Online en DevOps (and SecDevOps) de GeeksHubs Academy
BootCamp Online en DevOps (and SecDevOps) de GeeksHubs AcademyBootCamp Online en DevOps (and SecDevOps) de GeeksHubs Academy
BootCamp Online en DevOps (and SecDevOps) de GeeksHubs AcademyTelefónica
 
Herramientas para desarrollar rápidamente
Herramientas para desarrollar rápidamenteHerramientas para desarrollar rápidamente
Herramientas para desarrollar rápidamenteCarlos Toxtli
 
Omnileads del opensource a la omnicanalidad
Omnileads del opensource a la omnicanalidadOmnileads del opensource a la omnicanalidad
Omnileads del opensource a la omnicanalidadOpenDireito
 
Symfony-Community: Introducción a Symfony Framework
Symfony-Community: Introducción a Symfony FrameworkSymfony-Community: Introducción a Symfony Framework
Symfony-Community: Introducción a Symfony Frameworkexcedesoft
 
03 webinar content_deliveryplatform_v1.0-intix
03 webinar content_deliveryplatform_v1.0-intix03 webinar content_deliveryplatform_v1.0-intix
03 webinar content_deliveryplatform_v1.0-intixRoger CARHUATOCTO
 

Similar a Introduction to Akamon software arquitecture for MPWAR (20)

BilboStack - Php en el 2012
BilboStack - Php en el 2012BilboStack - Php en el 2012
BilboStack - Php en el 2012
 
Drupal camp2010bcn cmis-drupal_alfresco-v1.1
Drupal camp2010bcn cmis-drupal_alfresco-v1.1Drupal camp2010bcn cmis-drupal_alfresco-v1.1
Drupal camp2010bcn cmis-drupal_alfresco-v1.1
 
Symfony Parte 3
Symfony Parte 3Symfony Parte 3
Symfony Parte 3
 
Introducción a los Frameworks PHP
Introducción a los Frameworks PHP  Introducción a los Frameworks PHP
Introducción a los Frameworks PHP
 
Adentrándonos al Framework Symfony
Adentrándonos al  Framework SymfonyAdentrándonos al  Framework Symfony
Adentrándonos al Framework Symfony
 
1. Presentación e instalación de Python.pdf
1. Presentación e instalación de Python.pdf1. Presentación e instalación de Python.pdf
1. Presentación e instalación de Python.pdf
 
Symfony en la gestión de un centro de computación avanzada
Symfony en la gestión de un centro de computación avanzadaSymfony en la gestión de un centro de computación avanzada
Symfony en la gestión de un centro de computación avanzada
 
Caso práctico II: symfony en la gestión de un centro de computación avanzada ...
Caso práctico II: symfony en la gestión de un centro de computación avanzada ...Caso práctico II: symfony en la gestión de un centro de computación avanzada ...
Caso práctico II: symfony en la gestión de un centro de computación avanzada ...
 
Symfony2 un framework para maximizar tu productividad en desarrollo web
Symfony2 un framework para maximizar tu productividad en desarrollo webSymfony2 un framework para maximizar tu productividad en desarrollo web
Symfony2 un framework para maximizar tu productividad en desarrollo web
 
Introducción a Silex
Introducción a SilexIntroducción a Silex
Introducción a Silex
 
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
 
Introducción a Symfony
Introducción a Symfony Introducción a Symfony
Introducción a Symfony
 
Etapas de compilacion
Etapas de compilacionEtapas de compilacion
Etapas de compilacion
 
BootCamp Online en DevOps (and SecDevOps) de GeeksHubs Academy
BootCamp Online en DevOps (and SecDevOps) de GeeksHubs AcademyBootCamp Online en DevOps (and SecDevOps) de GeeksHubs Academy
BootCamp Online en DevOps (and SecDevOps) de GeeksHubs Academy
 
Herramientas para desarrollar rápidamente
Herramientas para desarrollar rápidamenteHerramientas para desarrollar rápidamente
Herramientas para desarrollar rápidamente
 
Omnileads del opensource a la omnicanalidad
Omnileads del opensource a la omnicanalidadOmnileads del opensource a la omnicanalidad
Omnileads del opensource a la omnicanalidad
 
Symfony-Community: Introducción a Symfony Framework
Symfony-Community: Introducción a Symfony FrameworkSymfony-Community: Introducción a Symfony Framework
Symfony-Community: Introducción a Symfony Framework
 
03 webinar content_deliveryplatform_v1.0-intix
03 webinar content_deliveryplatform_v1.0-intix03 webinar content_deliveryplatform_v1.0-intix
03 webinar content_deliveryplatform_v1.0-intix
 
!barralibrecamp Gad
!barralibrecamp Gad!barralibrecamp Gad
!barralibrecamp Gad
 

Introduction to Akamon software arquitecture for MPWAR