Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
http://gogobus.it
Overview on a recently launched Symfony2 platform
PHPDay Verona – 16/05/2015
Emanuele Gaspari
PHP/Symfony developer
@inmarelibero
inmarelibero@gmail.com
Train to Symfony
http://traintosymfony.com
Sym...
Development started in mid February 2015
Online on April the 30th
First bookable ride on May the 14th
16
May
1
Jun
25
Jun
30
Jun
Bob buys the first ticket, 24€
ride is confirmed
ride is closed
bus leaves
other 10 people buy ...
Pains
Ouwtard and Returns
(with multiple stops)
Booking and payments
Searches
Edit Ride form
Booking form
Emails
demo time
Objects to handle
users
rides
stops
events
booking tickets, travellers, luggages
discount codes
ride proposals
charges
logs
:80
:22
EC2
t2.medium
Frankfurt
RDS
db.td2.micro
Frankfurt
SES
Ireland
Load Balancer
FrankfurtCloudFlare
https
cache
bandw...
Tools
Symfony 2.6
jQuery 1.11
Bootstrap 3.3
MySQL 5.5
Apache 2.4
RabbitMQ 3.4
Capifony 2.8
no tests
Other stuf
Supervisor
1 always-running command on server (Symfony command)
1 consumer on server
Stripe (PHP SDK)
HWIOAuthB...
Focus on Symfony
concentrate on business logic
fit our needs
a bundle for everything I need now
Tell me more
Bundles in src/
AdminBundle
AppBundle
EmailBundle
ListenersBundle
LoggerBundle
RabbitMQBundle
SlackBundle
UserBundle
Services
55 services
and growing
~3 functions
per service
Hints
https://github.com/videlalvaro/RabbitMqBundle/issues/246
I wouldn't do it again
Listeners from the beginning
I wish I had done
use JMSDiExtraBundle
dedicated $em with entities mapping because a single log
flushes ALL entities
separ...
I learned
Remember to code for the 10% of the most problematic logic
Divide and Conquer from the very beginning
No fear fo...
Next
API (FOSRestBundle, Kong)
IOS App
Decouple RabbitMQ server and consumer
Better logs handling
Refactor the always-runn...
@inmarelibero
inmarelibero@gmail.com
Train to Symfony
http://traintosymfony.com
SymfonyBricks
http://symfonybricks.com
Gogobus.it - Overview on a recently launched Symfony2 platform
Gogobus.it - Overview on a recently launched Symfony2 platform
Gogobus.it - Overview on a recently launched Symfony2 platform
Upcoming SlideShare
Loading in …5
×

Gogobus.it - Overview on a recently launched Symfony2 platform

487 views

Published on

A rapid overview on how de built http://gogobus.it from scratch, deciding to use Symfony2, Amazon AWS, RabbitMQ and LAMP stack.
Which solutions we adopted and why, and some hacks in "show me the code" style.

Published in: Internet
  • Login to see the comments

Gogobus.it - Overview on a recently launched Symfony2 platform

  1. 1. http://gogobus.it Overview on a recently launched Symfony2 platform PHPDay Verona – 16/05/2015
  2. 2. Emanuele Gaspari PHP/Symfony developer @inmarelibero inmarelibero@gmail.com Train to Symfony http://traintosymfony.com SymfonyBricks http://symfonybricks.com https://github.com/copiaincolla/MetaTagsBundle
  3. 3. Development started in mid February 2015 Online on April the 30th First bookable ride on May the 14th
  4. 4. 16 May 1 Jun 25 Jun 30 Jun Bob buys the first ticket, 24€ ride is confirmed ride is closed bus leaves other 10 people buy tickets, < 24€ final price of 16€ is calculated users can buy tickets, 16€ 30° traveller buys a ticket, 24€
  5. 5. Pains Ouwtard and Returns (with multiple stops) Booking and payments Searches Edit Ride form Booking form Emails
  6. 6. demo time
  7. 7. Objects to handle users rides stops events booking tickets, travellers, luggages discount codes ride proposals charges logs
  8. 8. :80 :22 EC2 t2.medium Frankfurt RDS db.td2.micro Frankfurt SES Ireland Load Balancer FrankfurtCloudFlare https cache bandwidth
  9. 9. Tools Symfony 2.6 jQuery 1.11 Bootstrap 3.3 MySQL 5.5 Apache 2.4 RabbitMQ 3.4 Capifony 2.8 no tests
  10. 10. Other stuf Supervisor 1 always-running command on server (Symfony command) 1 consumer on server Stripe (PHP SDK) HWIOAuthBundle (Facebook login) GitHub Slack integration
  11. 11. Focus on Symfony concentrate on business logic fit our needs a bundle for everything I need now
  12. 12. Tell me more
  13. 13. Bundles in src/ AdminBundle AppBundle EmailBundle ListenersBundle LoggerBundle RabbitMQBundle SlackBundle UserBundle
  14. 14. Services 55 services and growing ~3 functions per service
  15. 15. Hints
  16. 16. https://github.com/videlalvaro/RabbitMqBundle/issues/246
  17. 17. I wouldn't do it again Listeners from the beginning
  18. 18. I wish I had done use JMSDiExtraBundle dedicated $em with entities mapping because a single log flushes ALL entities separate the always-running command in a bundle use AWS SDK PHP from the beginning better environments separation
  19. 19. I learned Remember to code for the 10% of the most problematic logic Divide and Conquer from the very beginning No fear for services: they are your best friends Create specific Excepion classes as you need
  20. 20. Next API (FOSRestBundle, Kong) IOS App Decouple RabbitMQ server and consumer Better logs handling Refactor the always-running command ESI Symfony Gateway Cache, Varnish
  21. 21. @inmarelibero inmarelibero@gmail.com Train to Symfony http://traintosymfony.com SymfonyBricks http://symfonybricks.com

×