introduction to akamon software arquitecture for mpwar

33
MPWAR Master en Programación Web de Alto Rendimiento

Upload: eloi-poch

Post on 29-Jan-2018

287 views

Category:

Software


1 download

TRANSCRIPT

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

UserRegistratorDomain Event

Publisher

UserRegisteredDomainEventSubscriber

UserAccountOpener

User UserRepository Event Subscribers

.

.

.

POST /users[

userId: 0db90987-5ce1-4683-bb05-7d1b5539cb0b]

Command Handlers

.

.

.

UserR

egisteredDom

ainEvent

User

HORUS

BASIC REQUEST

UserRegistrationCommand

UserRegistrationCommand

userIdanalyticsContextId

userIdanalyticsContextId

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

Ejercicio1. 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