Marcel Hild - Spryker (e)commerce framework als Alternative zu traditioneller Shop-Software -...

44
commerce technology for category leaders

Transcript of Marcel Hild - Spryker (e)commerce framework als Alternative zu traditioneller Shop-Software -...

commerce technologyfor category leaders

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

2015 Spryker Systems GmbH / About Spryker 10

Technology Architecture

2015 Spryker Systems GmbH / About Spryker 11

Technology Architecture

2015 Spryker Systems GmbH / About Spryker 12

Technology Architecture

2015 Spryker Systems GmbH / About Spryker 13

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

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

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

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

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

2015 Spryker Systems GmbH / About Spryker

Order Management in Spryker

2015 Spryker Systems GmbH / About Spryker

Order Management in Spryker

2015 Spryker Systems GmbH / About Spryker

Order Management in Spryker

2015 Spryker Systems GmbH / About Spryker

Order Management in Spryker

2015 Spryker Systems GmbH / About Spryker

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

[email protected]

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