2. 2015 Spryker Systems GmbH /About Spryker 2
1. Our Story
2. The market and how we fit in
3. Software architecture
4. Sprykerâs technology concept
5. Delivery
3. Our Story
2015 Spryker Systems GmbH /About Spryker 3
DEVELOPMENT
Ambitious commerce projects
Appropriate softwarenotavailable
Internalframework solution
100+ online businessmodels launched
October 2014: Spryker is founded
IMPLEMENTATIONEXAMPLES
B2B Webshop with
complex business logics
Largest Meal Ingredients
deliveryin EU, 380% YTY growth
Real Estate Marketplace
33 countries in 15months
CategoryLeaderfor
Fashion in Brazil
Largest Furniture Shopping
Club in Europe
Meal Deliveryin EU and
SE Asia, $740 Mio. GMV
4. Spryker solves a lot of common issues
2015 Spryker Systems GmbH /About Spryker 4
Common issues of shop software Solutions integrated in Spryker
Full-page cache Separation of frontend and backend
Website drawsfromdatabase Frontend drawsfromKey ValueStorage
Entity AttributeValue (EAV) model Extend DBSchema + JSON values
Unnecessary code components& features Lean code baseand modular features
Monolithic approach Modular monolith
5. 2015 Spryker Systems GmbH /About Spryker 5
1. Our Story
2. The market and how we fit in
3. Software architecture
4. Sprykerâs technology concept
5. Delivery
6. ERP
CRM
PIM
CMS
âŠ
OMS Shop Shop Shop
E-Commerce Technology matures
2015 Spryker Systems GmbH /About Spryker 6
1995 - 2002 2003 - 2013 2014 +
E-commerce =
additional sales channel
E-commerce =
new business model
E-commerce =
part of an ecosystem
1st Generation
ERP-focused setup
2nd Generation
Features move into Shop
3rd Generation
Features move outin Ecosystem
ERP ERP
CRM
PIM
CMS
âŠ
OMS
CRMPIM
CMSâŠ
OMS
+ channels
+ devices
+ complexity
+ content
+ uncertainty
7. STANDARD SOFTWARE
low risk but static
Enabling tomorrowâstechnologyleaders
2015 Spryker Systems GmbH /About Spryker 7
Technologyas Value Driver
FRAMEWORK
Individuality&
differentiation
Reduced risks &
ownership costs
DegreeofIndividualization
IN-HOUSE PROJECTS
agile but expensive
8. 2015 Spryker Systems GmbH /About Spryker 8
1. Our Story
2. The market and how we fit in
3. Software architecture
4. Sprykerâs technology concept
5. Delivery
9. Building Blocks - technologies
2015 Spryker Systems GmbH /About Spryker 9
Spryker uses conservativestateofthe art technologies
14. Technology Architecture â Mobile / API
2015 Spryker Systems GmbH /About Spryker 14
ZED
backend
Search
Engine
Sessions
KV
Storage REST API
public API
HYBRID
MOBILE APP
AngularJS
YVES
frontend
Setup ofmobilefeatures as anadditional
frontendwithsame backendlogics
REST API has samearchitecture as Yves
anduses the sameRPC calls
NativeandHybrid Appscan be build
againstthisinterface
Offers samebenefitsas Yves:speed,
simplicity(nobusinesslogic),scalability
RPCRPC
15. Scaling (implementation example)
2015 Spryker Systems GmbH /About Spryker 15
Horizontal+ vertical
scalingenabled
Allowsfor rolling
deployment+Zero
Downtime
DB /Redis /
Elasticsearch as high
availableservices
Sampleinfrastructure
providedviasaltstack
templates
Yves load-balancer
Zed load-balancer
Yves
phpApp
Yves
phpApp
Yves
phpApp
Zed Main
phpApp*
Zed
phpApp
DB
Redis
Elastic
search
scale
read / writeread / write
write
read
read
*Zed main server only:
run cronjobs and post
deployment hooks
scale
Master-master
or master-slave
configuration
16. Spryker enables micro-services
2015 Spryker Systems GmbH /About Spryker 16
ZED
Catalog
Frameworkapproach
allowsfor independent
services
Decoupledbundlesand
definedAPIs make
integrationandseparation
intoservices easy
PostgresDB
RPC
YVES
Catalog
ZED
OMS
MySQL DB
ZED
B2B
Legacy DB
ERP
YVES
Cart
RPC
Merchant
Portal
RPC
17. 2015 Spryker Systems GmbH /About Spryker 17
1. Our Story
2. The market and how we fit in
3. Software architecture
4. Sprykerâs technology concept
5. Delivery
18. Spryker Bundles
2015 Spryker Systems GmbH /About Spryker 18
Customer
CMS
Checkout
Catalog
Cart
Availability
Auth
Acl
Mail
Locale
Item
Grouper
Invoice
Glossary
Distributor
Discount
Country
Sales
Queue
Product
Option
Product
Category
Product
Price
Payment
Oms
Wishlist
User
Url
Storage
Stock
Shipment
Session
Search
All important features:
Spryker comes with
100+ bundles
Easy and fast updates:
each bundlehasits own
versioning
Consistent: each
bundlehasthe same
basic architecture
Flexible & adaptable:
bundledependencies
are reduced toa
minimum
19. Bundle Dependency Management
2015 Spryker Systems GmbH /About Spryker 19
How dependencies are programmed
stock
bundle
availability
bundle
OMS
bundle
product
bundle
cart
bundle
checkout
bundle
stock
bundle
availability
bundle
OMS
bundle
product
bundle
cart
bundle
checkout
bundle
availability âcheckout
connector bundle
availability âcart
connector bundle
What theworkflow looks like
This way, dependencies are always kept to a minimumand the setup stays agile
20. Bundle Dependency Management
2015 Spryker Systems GmbH /About Spryker 20
AGILITY: minimaldependenciesbetween
bundles,dependencymanagementvia
composer
LEAN SETUP: only include needed
bundles in project â keeps complexity as
low as possible
VERSIONING: upgradesonbundlelevel
- efficient: onlyneeded bundles
- fast: quicker updatesavailablewhere
needed, nowaitingfor next version
- simple: nostiff andcomplexupgrading
of entire framework
21. Spryker bundles concept
2015 Spryker Systems GmbH /About Spryker 21
bundles= functionalunits,e.g. cart, checkout,product
each bundleconsistsofup to4 layers
intersectionof layerandbundle= box
PRESENTATION LAYER: templates for Zed admin gui
COMMUNICATIONSLAYER: controllers, UI-elements and plugins
BUSINESS LAYER: businessand persistence logic
PERSISTENCE LAYER: (SQL) queries, entities and databaseschema
23. Yves client layer
2015 Spryker Systems GmbH /About Spryker 23
ZED backend
RPC
Yves only consistsof
templates, controllers,
service providers
Possible to build another
Yves with another
framework and stilluse
Spryker
Client is core functionality
for theshopfrontend
Client acts as asa facade
and delegates calls to Zed,
Search and Storage
SEARCH STORAGE
STUB SEARCH API STORAGE API
GATEWAY
CARTCLIENT
JSON
Query
Redis
Protocol
YVES
Controller, Themes
CLIENT
25. Separated core, project & localized code
2015 Spryker Systems GmbH /About Spryker 25
PRESENTATION LAYER
COMMUNICATIONSLAYER
BUSINESS LAYER
PERSISTENCE LAYER
CORELEVEL
PROJECTLEVEL
STORELEVEL
Spryker bundles
clientimplementation
US, DE, UK, FR, CA, âŠ
26. Separated core, project & localized code
2015 Spryker Systems GmbH /About Spryker 26
Implementation example of the three levels
extractof implemented corebundles
custom projects added to adapted corebundles
custom bundlesfor specific stores/ localized shops
Factories allow to extend all classes.
Extension of thedependency
container allows to replace any class.
COREPROJECTSTORE
product
bundle
cart
bundle
stock
bundle
MySpecial1
bundle
MySpecial2
bundle
product
bundle
cart
bundle
product
bundle_DE
product
bundle_FR
MySpecial2
bundle_FR
27. Building Blocks - principles
2015 Spryker Systems GmbH /About Spryker 27
Spryker is good software craftsmanship:
SOLID - Clean Code â Separation of Concerns
28. Software Principles & Patterns
2015 Spryker Systems GmbH /About Spryker 28
SOLID: Single Responsibility Principle There should never be more than one
reason for a class to change
default principle for each class is
defined in Spryker
single responsibility principle is
applied on bundle, class, and method
level
example : facade classes represent
the internal API of a bundle and the
only point of access to a bundle
facades areflat and stateless classes
- their only responsibility is to
orchestrate the incoming requests
to the business logic implemented in
the bundle
29. Software Principles & Patterns
2015 Spryker Systems GmbH /About Spryker 29
SOLID: Interface Segregation Principle Many client specific interfaces are
better than one general interface
in Spryker this is used for facades
in order to substitute a bundle
with a new one, its facade must
contain the same operations so
that it doesnât break the contract
established with other bundles
each bundle ships with a set of
interfaces for facades of the
required bundles
30. Software Principles & Patterns
2015 Spryker Systems GmbH /About Spryker 30
Factory & Locator Pattern
Factories are used to instantiate new
classes inside a bundle
allows for differentimplementations
on core, project & store level
Locators used to access other bundles
allows for differentimplementations
on core, project & store level
decreases dependency between
bundles
31. Order Management in Spryker
2015 Spryker Systems GmbH /About Spryker 31
Other Systems Spryker
Shop ERP Shop ERP
= WMS
pick &
pack
ship
return
refund
payment
order
reality Shop and ERP: black box
with high potential for errors
Spryker allows for separation of
concerns, order processed in shop
(optional w/ Spryker) (recommended w/ Spryker)
32. Order Management in Spryker
2015 Spryker Systems GmbH /About Spryker 32
Process model design / State machines
new
invoice
created
waiting for
payment
payment
received
clarify
reminder
fulfillment
initialized
Event: Timeout 14days
Event: Payment received Command: Initiate fullfillment
Event: onEnter
<<manual>>Button on screen
Event: PaymentReceived
Conditions
Manual
waiting for
capture
capture
failure
capture
success
Event: onEnter
Command: captureAmount
Condition: CaptureCondition
waiting for
capture
capture
failure
capture
success
manualmanual
38. Order Management in Spryker
Screenshots / Images available
separately as well as state
machine demo and source code
2015 Spryker Systems GmbH /About Spryker
39. 2015 Spryker Systems GmbH /About Spryker 39
1. Our Story
2. The market and how we fit in
3. Software architecture
4. Sprykerâs technology concept
5. Delivery
40. Spryker delivery contents
2015 Spryker Systems GmbH /About Spryker 40
GIT repositories:all bundles as separate components
Infrastructure:deploymenttemplates via saltstack
Demo-shop viaDeveloper-VM: full stack development
shop templatewith all components
SprykerAcademy: access to documentation and
projectcontrollingtemplates
41. What makes development with Spryker so fast?
2015 Spryker Systems GmbH /About Spryker 41
Architectural decisions are provided by the framework
Best practices from over 100 implementations included in
the technology
Consequent de-couplingof bundles supports fastiterations
Full IDE auto-completion
âNo magicmethodsâ enable easy debugging
Complete stack on developer laptop
Coherent architecture (Frontend, Backend, Extensions)