Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Still on Symfony - What have we learned

Still on Symfony - What have we learned

Last year I talked about how we moved a large ecommerce site from Zend to Symfony 2. We now also run NordstromRack.com on this platform. This year I am going to follow up by touching on a wide variety of subjects related to enterprise applications: Yes, we are still using Symfony. Yes, we still love it. Since we have moved almost all of the code into Symfony, our concerns have shifted: We are now a lot more focused on monitoring and logging (Sentry, StatsD). What's on our dashboard, and what have we learned about performance. I want to touch on how we are moving this large monolithic application towards a Service Oriented Architecture and what we are experimenting with to support such an architecture: Containers (Docker), Service Discovery (Consul), Orchestration etc. How do we ensure our application is as testable as possible (PHPUnit, Behat, our complex build pipeline in Travis CI). Why we are using multiple Kernels and how do we handle configuration with so many bundles.

Baldur Rensch

October 09, 2014
Tweet

More Decks by Baldur Rensch

Other Decks in Technology

Transcript

  1. Who is this guy? architecting at Nordstromrack.com | HauteLook contributing

    on GitHub: @baldurrensch opining on twitter: @brensch 2
  2. What is this all about? Our tech stack Monitoring and

    Logging Testing Multiple Kernels What are we thinking about Current Challenges
  3. Last year we had one web property: this year we

    have a second property running on the same platform: [1,2,3] 4
  4. Last year we had one web property: Off-price, Limited Time

    Sale Events 5 this year we have a second property running on the same platform:
  5. Last year we had one web property: Off-price, persistent catalog

    6 this year we have a second property running on the same platform:
  6. We are pushing at least 10M updates per day 19

    We do near-real-time inventory updates
  7. Configuration 40 hautelook/ config/ all/ prod/ dev/ test/ rack/ common/

    overwrite Always one file per bundle, named after the config!
  8. Containers (Docker) Docker is awesome for SOA Tooling very premature

    Some problems on Mac with shared directories 43
  9. When developing with PHP at scale, it seems often there

    are no best practices 49 Example: Example: Dealing with Master/Slave connections in Doctrine. Schema builder does not like it.
  10. When developing with PHP at scale, it seems often there

    are no best practices 50 Example: Example: Dealing with Master/Slave connections in Doctrine. Schema builder does not like it. Example: It’s slow and hard to work with SASS using Assetic
  11. Questions? Please give me feedback at: https://joind.in/12192 Oh, and we

    are hiring. Come talk to me if you are interested in working with us! 51
  12. Sources [1] https://play.google.com/store/apps/details?id=com.hautelook.mcom&hl=en [2] https://itunes.apple.com/us/app/hautelook/id390783984?mt=8 [3] https://itunes.apple.com/us/app/nordstrom-rack/id853330019?ls=1&mt=8 [4] http://s352.photobucket.com/user/Cutiexlex728/media/PS-I-still-love-you-by-orangefruits.jpg.html [5]

    https://getsentry.com/signup/r_D3kw/ [6] https://github.com/hautelook/SentryBundle [7] http://lookatmyhappyrainbow.blogspot.com/2011/01/conductor.html [8] https://secure.flickr.com/photos/st3f4n/3845558588/ [9] https://github.com/baldurrensch/consul-php [10] https://en.wikipedia.org/wiki/Corn_kernel [11] https://github.com/nelmio/alice [12] https://github.com/hautelook/AliceBundle [13] http://dashing.io/ [14] https://github.com/etsy/statsd/ [15] https://www.hostedgraphite.com/ [16] http://grafana.org/ [17] https://en.wikipedia.org/wiki/Lego [18] http://pixabay.com/en/people-cover-cry-desperate-314481/ [19] https://commons.wikimedia.org/wiki/ File:Monitoring_a_simulated_test_at_Central_Control_Facility_at_Eglin_Air_Force_Base_(080416-F-5297K-101).jpg 52