marcel hild - spryker (e)commerce framework als alternative zu traditioneller shop-software -...
TRANSCRIPT
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
Our Story
2015 Spryker Systems GmbH / About Spryker 3
DEVELOPMENT
Ambitious commerce projects
Appropriate software not available
Internal framework solution
100+ online business models launched
October 2014: Spryker is founded
IMPLEMENTATION EXAMPLES
B2B Webshop withcomplex business logics
Largest Meal Ingredientsdelivery in EU, 380% YTY growth
Real Estate Marketplace33 countries in 15 months
Category Leader forFashion in Brazil
Largest Furniture Shopping Club in Europe
Meal Delivery in EU and SE Asia, $740 Mio. GMV
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 draws from database Frontend draws from Key Value Storage
Entity Attribute Value (EAV) model Extend DB Schema + JSON values
Unnecessary code components & features Lean code base and modular features
Monolithic approach Modular monolith
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
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 GenerationERP-focused setup
2nd GenerationFeatures move into Shop
3rd GenerationFeatures move out in Ecosystem
ERP ERP
CRM
PIM
CMS
…
OMS
CRMPIM
CMS…
OMS
+ channels
+ devices
+ complexity
+ content
+ uncertainty
STANDARD SOFTWARElow risk but static
Enabling tomorrow’s technology leaders
2015 Spryker Systems GmbH / About Spryker 7
Technology as Value Driver
FRAMEWORK
Individuality &differentiation
Reduced risks & ownership costs
Deg
ree
of I
nd
ivid
ual
izat
ion IN-HOUSE PROJECTS
agile but expensive
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
Building Blocks - technologies
2015 Spryker Systems GmbH / About Spryker 9
Spryker uses conservative state of the art technologies
Technology Architecture – Mobile / API
2015 Spryker Systems GmbH / About Spryker 14
ZEDbackend
Search Engine
Sessions
KV Storage REST API
public API
HYBRID MOBILE APP
AngularJS
YVESfrontend
Setup of mobile features as an additional
frontend with same backend logics
REST API has same architecture as Yves
and uses the same RPC calls
Native and Hybrid Apps can be build
against this interface
Offers same benefits as Yves: speed,
simplicity (no business logic), scalability
RPCRPC
Scaling (implementation example)
2015 Spryker Systems GmbH / About Spryker 15
Horizontal + vertical
scaling enabled
Allows for rolling
deployment + Zero
Downtime
DB / Redis /
Elasticsearch as high
available services
Sample infrastructure
provided via saltstack
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 / writewrite
read
read
*Zed main server only: run cronjobs and post
deployment hooks
scale
Master-master or master-slave configuration
Spryker enables micro-services
2015 Spryker Systems GmbH / About Spryker 16
ZEDCatalog
Framework approach
allows for independent
services
Decoupled bundles and
defined APIs make
integration and separation
into services easy
Postgres DB
RPC
YVESCatalog
ZEDOMS
MySQL DB
ZEDB2B
Legacy DB
ERP
YVESCart
RPC
MerchantPortal
RPC
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
Spryker Bundles
2015 Spryker Systems GmbH / About Spryker 18
Customer
CMS
Checkout
Catalog
Cart
Availability
Auth
Acl
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
SearchAll important features: Spryker comes with 100+ bundles
Easy and fast updates: each bundle has its own versioning
Consistent: each bundle has the same basic architecture
Flexible & adaptable: bundle dependencies are reduced to a minimum
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 the workflow looks like
This way, dependencies are always kept to a minimum and the setup stays agile
Bundle Dependency Management
2015 Spryker Systems GmbH / About Spryker 20
AGILITY: minimal dependencies between
bundles, dependency management via
composer
LEAN SETUP: only include needed
bundles in project – keeps complexity as
low as possible
VERSIONING: upgrades on bundle level
- efficient: only needed bundles
- fast: quicker updates available where
needed, no waiting for next version
- simple: no stiff and complex upgrading
of entire framework
Spryker bundles concept
2015 Spryker Systems GmbH / About Spryker 21
bundles = functional units, e.g. cart, checkout, product
each bundle consists of up to 4 layers
intersection of layer and bundle = box
PRESENTATION LAYER: templates for Zed admin gui
COMMUNICATIONS LAYER: controllers, UI-elements and plugins
BUSINESS LAYER: business and persistence logic
PERSISTENCE LAYER: (SQL) queries, entities and database schema
Spryker Bundles
2015 Spryker Systems GmbH / About Spryker 22
Customer
CMS
Checkout
Catalog
Cart
Availability
Auth
Acl
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
Yves client layer
2015 Spryker Systems GmbH / About Spryker 23
ZED backend
RPC
Yves only consists of
templates, controllers,
service providers
Possible to build another
Yves with another
framework and still use
Spryker
Client is core functionality
for the shop frontend
Client acts as as a facade
and delegates calls to Zed,
Search and StorageSEARCH STORAGE
STUB SEARCH API STORAGE API
GATEWAY
CART CLIENT
JSONQuery
RedisProtocol
YVESController, Themes
CLIENT
PRESENTATION LAYER
COMMUNICATIONS LAYER
BUSINESS LAYER
PERSISTENCE LAYER
Spryker bundles concept
2015 Spryker Systems GmbH / About Spryker 24
bundles = functional units, e.g. cart, checkout, product
each bundle consists of up to 4 layers
intersection of layer and bundle = box
CART BUNDLE
CHECKOUT BUNDLE
PRODUCT BUNDLE
Separated core, project & localized code
2015 Spryker Systems GmbH / About Spryker 25
PRESENTATION LAYER
COMMUNICATIONS LAYER
BUSINESS LAYER
PERSISTENCE LAYER
CO
RE
LE
VE
L
PR
OJE
CT
LE
VE
L
STO
RE
LE
VE
L
Spryker bundles
client implementation
US, DE, UK, FR, CA, …
Separated core, project & localized code
2015 Spryker Systems GmbH / About Spryker 26
Implementation example of the three levelsextract of implemented core bundlescustom projects added to adapted core bundlescustom bundles for specific stores / localized shops
Factories allow to extend all classes.Extension of the dependency container allows to replace any class.
CO
RE
PR
OJE
CT
STO
RE
product bundle
cart bundle
stock bundle
MySpecial1 bundle
MySpecial2 bundle
product bundle
cart bundle
product bundle_DE
product bundle_FR
MySpecial2 bundle_FR
Building Blocks - principles
2015 Spryker Systems GmbH / About Spryker 27
Spryker is good software craftsmanship:SOLID - Clean Code – Separation of Concerns
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 are flat and stateless classes - their only responsibility is to orchestrate the incoming requests to the business logic implemented in the bundle
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
Software Principles & Patterns
2015 Spryker Systems GmbH / About Spryker 30
Factory & Locator PatternFactories are used to instantiate new classes inside a bundle
allows for different implementations on core, project & store level
Locators used to access other bundles
allows for different implementations on core, project & store level
decreases dependency between bundles
Order Management in Spryker
2015 Spryker Systems GmbH / About Spryker 31
Other Systems Spryker
Shop ERP Shop ERP= WMS
pick & packship
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)
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: onEnterCommand: captureAmountCondition: CaptureCondition
waiting for capture
capture failure
capture success
manualmanual
Order Management in Spryker
Screenshots / Images available separately as well as state machine demo and source code
2015 Spryker Systems GmbH / About Spryker
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
Spryker delivery contents
2015 Spryker Systems GmbH / About Spryker 40
GIT repositories: all bundles as separate components
Infrastructure: deployment templates via saltstack
Demo-shop via Developer-VM: full stack development shop template with all components
Spryker Academy: access to documentation and project controlling templates
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-coupling of bundles supports fast iterations
Full IDE auto-completion
“No magic methods” enable easy debugging
Complete stack on developer laptop
Coherent architecture (Frontend, Backend, Extensions)
Technology Summary
2015 Spryker Systems GmbH / About Spryker 42
Framework approach
Modular monolith
Frontend / Backend separation
Symfony / Silex based PHP Application
Developer friendly
2015 Spryker Systems GmbH / About Spryker 43
A proven technology built in real-world projects for ambitious and non-standard business models.
Spryker Systems GmbH
Berlin, Germany
Sao Paulo, Brazil
San Jose, USA
Phone De: +49 40 328 929 631
Phone US: +1 408 952 9710
www.spryker.com
www.kassenzone.de
www.goto.project-a.com
44