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

Spryker, an architecture for the web

Spryker, an architecture for the web

Built on decades of experience, Spryker is a modern PHP e-commerce platform built with performance and extensibility as its core concerns on top of parts of the Symfony component library. The result is a very highly performant and customisable platform that’s really worth exploring. This talk will dive into its architecture and how each of the components co-exist, as well as look under the hood at what makes Spryker a great choice for a successful e-commerce project.

Ben Longden

May 16, 2017
Tweet

More Decks by Ben Longden

Other Decks in Technology

Transcript

  1. Load test • 5,000 to 10,000 RPM on a single

    Performance L dyno (14GB RAM, 8 CPU cores, AWS). • Recommend 3 for availability. • Scales linearly.
  2. –Phil Karlton “There are only two hard things in Computer

    Science: cache invalidation and naming things.”
  3. Controllers • Entry point to system for front end users

    • Controllers and actions • Twig templates / javascript / css
  4. Performance • Zed - 50 to 500ms per request •

    Search - 1 to 10ms per request • Redis - 0.1 to 1ms per get()
  5. Transfer Objects • Simple data containers • Standardised way to

    access data and get expressive method signatures. • Available everywhere • Defined in XML
  6. <?xml version="1.0"?> <transfers xmlns="spryker:transfer-01" xmlns:xsi=“[..snip..]” xsi:schemaLocation=“[..snip..]”> <transfer name="Customer"> <property name="email"

    type="string"/> <property name="firstName" type="string"/> <property name="lastName" type="string"/> </transfer> </transfers>
  7. ZED

  8. – Clean Code (Robert C Martin) “Even bad code can

    function. But if code isn't clean, it can bring a development organization to its knees. Every year, countless hours and significant resources are lost because of poorly written code.”
  9. <process name="Example01" main="true"> <states> <state name="new" reserved=“true”/> <state name="waiting for

    payment”/> </states> </states> <events> <event name="authorize" onEnter="true" manual="true"/> </events> <transitions> <transition happy="true"> <source>new</source> <target>waiting for payment</target> <event>authorize</event> </transition> </transitions>