SlideShare a Scribd company logo
1 of 26
Download to read offline
Introduction
Who?
Fabian Wesner
$year >= 2012 CTO @ Project A Ventures
$year == 2011 CTO @ Rocket Internet
$year == 2010 Lead developer @ Zalando
$year <= 2009 Entrepreneur and Freelancer

Project A Ventures
Building successful companies.

Company Builder with focus on Internet, advertising technology and
mobile.
www.project-a.com
Powered by Yves & Zed
Architecture
Bird‘s eye view
Layered architecture
Structured code with Bundles and Packages
Dependency management with composer
- Code is structured in packages
- Packages may require each other
- We use composer to manage dependencies

composer.json of dwh-package

{
    "name": "project-a/dwh-package",
    "autoload": {
        "psr-0": { "ProjectA": "/src" }
    },
    "require": {
        "php": ">=5.4.0",
        "project-a/auth-package": ">=0.0.10",
        "project-a/library-package": ">=0.0.27"
    }
}

How to update Yves & Zed?
(1) add a new version to a composer.json
(2) run php composer.phar install
Dependency validation
Zed GUI
Zed user interface

Kendo UI + Bootstrap + jQuery
minified and merged with Grunt
Cronjobs
Scalable job management with Jenkins
/* subscribe users for newsletters */
$jobs[] = array(
'name'
=> 'send_newsletter_subscription_queue',
'command' => '$PHP_BIN $CLI_PATH/
index.php --module=newsletter
--controller=cronjob
--action=sendsubscriptionqueue',
'schedule' => '*/2 * * * *',
'enable'
=> true,
'stores'
=> $all_stores,
);
/* -- MAIL QUEUE -- */
$jobs[] = array(
'name'
=> 'send_queued_mails',
'command' => '$PHP_BIN $CLI_PATH/
index.php --module=mail
-- controller=cronjob
--action=send-queued-mails',
'schedule' => '* * * * *',
'enable'
=> true,
'stores'
=> $all_stores,
);
/* -- DUMP DB -- */
$jobs[] = array(
'name'
=> 'generate_database_dump',
'command' => '$PHP_BIN $CLI_PATH/
index.php --module=dbdump
--controller=cronjob --action=execute',
'schedule' => '0 0 * * *',
'enable'
=> true,

deployment
Logging
Logging with Lumberjack
Yves & Zed‘s Big Data infrastructure
Automated processing of orders
Visualization of business logic
protected function addTransitions()
{
$this->setup->addTransition(
self::STATE_NEW,
self::STATE_PREAUTHORIZED,
self::EVENT_START_PAYMENT,
self::RULE_PAYMENT_TRANSACTION_APPROVED);
$this->setup->addTransition(
self::STATE_NEW,
self::STATE_INVALID,
self::EVENT_START_PAYMENT);
}
protected function addCommands()
{
$preAuthorizeCommand = $this->factory
->getModelOrderprocessCommandPaymentPreAuthorization();
$this->setup->addCommand(
self::STATE_NEW,
self::EVENT_START_PAYMENT,
$preAuthorizeCommand);
}
protected function addDefinitions()
{
$subProcess = $this->factory
->getModelOrderprocessDefinitionSubProcessCancellation()
$this->setup->addDefinition($subProcess);
}

PHP

Graph
Automatic processing of thousands of orders per day
Trigger events
Used in several controllers to start the state machine
$this->facadeSales->triggerEvent(„start payment“,items);
$this->facadeSales->triggerEventBulk($eventName,items);

Commands
Classes with logic which are triggered from the state machine
class SaoZedPaymentComponentCommand
PreAuthorization
{
public function __invoke ($orderEntity, $context)
{ ... }
}

Check conditions
Decision which way to go
class SaoZedPaymentComponentCondition
TransactionApproved
{
/** @return bool */
public function check($orderItem, $context)
{ ... }
}
+++ More details: Talk of Oliver Tischlinger tomorrow „Statemachine – Das Mittel gegen Flags!“ +++
Data-Warehouse
ETL / job scheduler

<job id="load-order-item-status">
<description>Copies the order item status table into the tmp table
</description>
<commands>
<run-sql-file
file-name="order-statuses/create-order-item-status-tmp-table.sql"
echo-queries="false"/>
<load-from-mysql mysql-database="zed"
file-name="order-statuses/load-order-item-status.sql"
target-table="tmp.order_item_status"/>
</commands>
</job>
<job id="transform-order-item-status">
<description>Copies the order item status table into the dim schema
</description>
<dependencies>
<dependency job="load-order-item-status"/>
<dependency job="load-order-item-status-mapping"/>
</dependencies>
<commands>
<run-sql-file
file-name="order-statuses/transform-order-item-status.sql"
echo-queries="false"/>
</commands>
</job>
Order status mapping
Every color has a
simple meaning!
Not paid
Item returned
Paid
etc.
<perspective name="Sales">
<status-group name="Not paid"
description="The items are not yet paid"
color="#557799">
<status ref="shipped"/>
<status ref="waiting for payment"/>
<status ref="capture"/>
</status-group>
<status-group name="Paid"
description="The items are paid"
color="#559955">
<status ref="paid in money collect"/>
<status ref="clarify refund overpayment"/>
<status ref="closed"/>
</status-group>
</perspective>
</status-mapping>
Entity–relationship model
DWH architecture

ETL

DWH

Cubes

Reports
Thank you!

More Related Content

Viewers also liked

Nils Seebach - Was ist mein Onlineshop wert? - Bewertungen im E-Commerce
Nils Seebach - Was ist mein Onlineshop wert? - Bewertungen im E-CommerceNils Seebach - Was ist mein Onlineshop wert? - Bewertungen im E-Commerce
Nils Seebach - Was ist mein Onlineshop wert? - Bewertungen im E-CommerceeCommerce_Day
 
2 BHK Luxury Apartment in Wagholi, Pune - Marvel Fria II
2 BHK Luxury Apartment in Wagholi, Pune - Marvel Fria II2 BHK Luxury Apartment in Wagholi, Pune - Marvel Fria II
2 BHK Luxury Apartment in Wagholi, Pune - Marvel Fria IIMarvel Realtors
 
Bcil Zedwoods Value Adds Final
Bcil Zedwoods  Value Adds FinalBcil Zedwoods  Value Adds Final
Bcil Zedwoods Value Adds FinalBCIL
 
Zed Earth Brochure
Zed Earth BrochureZed Earth Brochure
Zed Earth BrochureZEDhabitats
 
Pune Property- "Marvel Fria", Wagholi
Pune Property- "Marvel Fria", WagholiPune Property- "Marvel Fria", Wagholi
Pune Property- "Marvel Fria", WagholiFlatons Advisors
 
10042010 Mlbviponline
10042010 Mlbviponline10042010 Mlbviponline
10042010 Mlbviponlinegueste5b1381
 
Onlineshop als integraler Bestandteil der Unternehmensstrategie
Onlineshop als integraler Bestandteil der UnternehmensstrategieOnlineshop als integraler Bestandteil der Unternehmensstrategie
Onlineshop als integraler Bestandteil der Unternehmensstrategieschukai GmbH
 
eCommerce in Deutschland - Chancen und Herausforderungen für Hersteller von K...
eCommerce in Deutschland - Chancen und Herausforderungen für Hersteller von K...eCommerce in Deutschland - Chancen und Herausforderungen für Hersteller von K...
eCommerce in Deutschland - Chancen und Herausforderungen für Hersteller von K...Aquarius Digital GmbH
 
7 Tipps und 3 Beispiele für perfekte Onlineshop-Inhalte
7 Tipps und 3 Beispiele für perfekte Onlineshop-Inhalte7 Tipps und 3 Beispiele für perfekte Onlineshop-Inhalte
7 Tipps und 3 Beispiele für perfekte Onlineshop-Inhaltez19_butsch
 
Online verkaufen per webshop onlineshop-e-shop-internetshop
Online verkaufen per webshop onlineshop-e-shop-internetshopOnline verkaufen per webshop onlineshop-e-shop-internetshop
Online verkaufen per webshop onlineshop-e-shop-internetshopThor Alexander
 
Kritische Erfolgsfaktoren im Onlineshop: Zahlungs- und ERP-System Integrationen
Kritische Erfolgsfaktoren im Onlineshop: Zahlungs- und ERP-System IntegrationenKritische Erfolgsfaktoren im Onlineshop: Zahlungs- und ERP-System Integrationen
Kritische Erfolgsfaktoren im Onlineshop: Zahlungs- und ERP-System IntegrationenCarpathia AG
 
Zed Woods Brochure
Zed Woods BrochureZed Woods Brochure
Zed Woods BrochureZEDhabitats
 
Einführung onlinehandel glocal-consult
Einführung onlinehandel glocal-consultEinführung onlinehandel glocal-consult
Einführung onlinehandel glocal-consultStefan Stengel
 
Der Content-Marketing-Fitness-Pass für Organisationen
Der Content-Marketing-Fitness-Pass für OrganisationenDer Content-Marketing-Fitness-Pass für Organisationen
Der Content-Marketing-Fitness-Pass für OrganisationenKai Heddergott
 
Packende AdWords-Anzeigentexte erstellen, testen und optimieren
Packende AdWords-Anzeigentexte erstellen, testen und optimierenPackende AdWords-Anzeigentexte erstellen, testen und optimieren
Packende AdWords-Anzeigentexte erstellen, testen und optimierenCrealytics
 
E-Commerce, nicht Onlineshop
E-Commerce, nicht OnlineshopE-Commerce, nicht Onlineshop
E-Commerce, nicht OnlineshopConnected-Blog
 
Mehr Umsatz, durch eine intelligente Such-Software im OnlineShop!
Mehr Umsatz, durch eine intelligente Such-Software im OnlineShop!Mehr Umsatz, durch eine intelligente Such-Software im OnlineShop!
Mehr Umsatz, durch eine intelligente Such-Software im OnlineShop!eCommerce Lounge
 
Bvh ecommerce day e commerce trends
Bvh ecommerce day e commerce trends Bvh ecommerce day e commerce trends
Bvh ecommerce day e commerce trends Joachim Graf
 

Viewers also liked (18)

Nils Seebach - Was ist mein Onlineshop wert? - Bewertungen im E-Commerce
Nils Seebach - Was ist mein Onlineshop wert? - Bewertungen im E-CommerceNils Seebach - Was ist mein Onlineshop wert? - Bewertungen im E-Commerce
Nils Seebach - Was ist mein Onlineshop wert? - Bewertungen im E-Commerce
 
2 BHK Luxury Apartment in Wagholi, Pune - Marvel Fria II
2 BHK Luxury Apartment in Wagholi, Pune - Marvel Fria II2 BHK Luxury Apartment in Wagholi, Pune - Marvel Fria II
2 BHK Luxury Apartment in Wagholi, Pune - Marvel Fria II
 
Bcil Zedwoods Value Adds Final
Bcil Zedwoods  Value Adds FinalBcil Zedwoods  Value Adds Final
Bcil Zedwoods Value Adds Final
 
Zed Earth Brochure
Zed Earth BrochureZed Earth Brochure
Zed Earth Brochure
 
Pune Property- "Marvel Fria", Wagholi
Pune Property- "Marvel Fria", WagholiPune Property- "Marvel Fria", Wagholi
Pune Property- "Marvel Fria", Wagholi
 
10042010 Mlbviponline
10042010 Mlbviponline10042010 Mlbviponline
10042010 Mlbviponline
 
Onlineshop als integraler Bestandteil der Unternehmensstrategie
Onlineshop als integraler Bestandteil der UnternehmensstrategieOnlineshop als integraler Bestandteil der Unternehmensstrategie
Onlineshop als integraler Bestandteil der Unternehmensstrategie
 
eCommerce in Deutschland - Chancen und Herausforderungen für Hersteller von K...
eCommerce in Deutschland - Chancen und Herausforderungen für Hersteller von K...eCommerce in Deutschland - Chancen und Herausforderungen für Hersteller von K...
eCommerce in Deutschland - Chancen und Herausforderungen für Hersteller von K...
 
7 Tipps und 3 Beispiele für perfekte Onlineshop-Inhalte
7 Tipps und 3 Beispiele für perfekte Onlineshop-Inhalte7 Tipps und 3 Beispiele für perfekte Onlineshop-Inhalte
7 Tipps und 3 Beispiele für perfekte Onlineshop-Inhalte
 
Online verkaufen per webshop onlineshop-e-shop-internetshop
Online verkaufen per webshop onlineshop-e-shop-internetshopOnline verkaufen per webshop onlineshop-e-shop-internetshop
Online verkaufen per webshop onlineshop-e-shop-internetshop
 
Kritische Erfolgsfaktoren im Onlineshop: Zahlungs- und ERP-System Integrationen
Kritische Erfolgsfaktoren im Onlineshop: Zahlungs- und ERP-System IntegrationenKritische Erfolgsfaktoren im Onlineshop: Zahlungs- und ERP-System Integrationen
Kritische Erfolgsfaktoren im Onlineshop: Zahlungs- und ERP-System Integrationen
 
Zed Woods Brochure
Zed Woods BrochureZed Woods Brochure
Zed Woods Brochure
 
Einführung onlinehandel glocal-consult
Einführung onlinehandel glocal-consultEinführung onlinehandel glocal-consult
Einführung onlinehandel glocal-consult
 
Der Content-Marketing-Fitness-Pass für Organisationen
Der Content-Marketing-Fitness-Pass für OrganisationenDer Content-Marketing-Fitness-Pass für Organisationen
Der Content-Marketing-Fitness-Pass für Organisationen
 
Packende AdWords-Anzeigentexte erstellen, testen und optimieren
Packende AdWords-Anzeigentexte erstellen, testen und optimierenPackende AdWords-Anzeigentexte erstellen, testen und optimieren
Packende AdWords-Anzeigentexte erstellen, testen und optimieren
 
E-Commerce, nicht Onlineshop
E-Commerce, nicht OnlineshopE-Commerce, nicht Onlineshop
E-Commerce, nicht Onlineshop
 
Mehr Umsatz, durch eine intelligente Such-Software im OnlineShop!
Mehr Umsatz, durch eine intelligente Such-Software im OnlineShop!Mehr Umsatz, durch eine intelligente Such-Software im OnlineShop!
Mehr Umsatz, durch eine intelligente Such-Software im OnlineShop!
 
Bvh ecommerce day e commerce trends
Bvh ecommerce day e commerce trends Bvh ecommerce day e commerce trends
Bvh ecommerce day e commerce trends
 

Similar to Building a Scalable Architecture for E-commerce with Yves & Zed

Burn down the silos! Helping dev and ops gel on high availability websites
Burn down the silos! Helping dev and ops gel on high availability websitesBurn down the silos! Helping dev and ops gel on high availability websites
Burn down the silos! Helping dev and ops gel on high availability websitesLindsay Holmwood
 
CodeIgniter PHP MVC Framework
CodeIgniter PHP MVC FrameworkCodeIgniter PHP MVC Framework
CodeIgniter PHP MVC FrameworkBo-Yi Wu
 
Quality assurance for php projects with PHPStorm
Quality assurance for php projects with PHPStormQuality assurance for php projects with PHPStorm
Quality assurance for php projects with PHPStormMichelangelo van Dam
 
Micro app-framework - NodeLive Boston
Micro app-framework - NodeLive BostonMicro app-framework - NodeLive Boston
Micro app-framework - NodeLive BostonMichael Dawson
 
Python from zero to hero (Twitter Explorer)
Python from zero to hero (Twitter Explorer)Python from zero to hero (Twitter Explorer)
Python from zero to hero (Twitter Explorer)Yuriy Senko
 
Refresh Austin - Intro to Dexy
Refresh Austin - Intro to DexyRefresh Austin - Intro to Dexy
Refresh Austin - Intro to Dexyananelson
 
Building and deploying React applications
Building and deploying React applicationsBuilding and deploying React applications
Building and deploying React applicationsAstrails
 
Global Windows Azure Bootcamp : Cedric Derue playing with php on azure. (spon...
Global Windows Azure Bootcamp : Cedric Derue playing with php on azure. (spon...Global Windows Azure Bootcamp : Cedric Derue playing with php on azure. (spon...
Global Windows Azure Bootcamp : Cedric Derue playing with php on azure. (spon...MUG-Lyon Microsoft User Group
 
Playing with php_on_azure
Playing with php_on_azurePlaying with php_on_azure
Playing with php_on_azureCEDRIC DERUE
 
[Bristol WordPress] Supercharging WordPress Development
[Bristol WordPress] Supercharging WordPress Development[Bristol WordPress] Supercharging WordPress Development
[Bristol WordPress] Supercharging WordPress DevelopmentAdam Tomat
 
Workshop quality assurance for php projects tek12
Workshop quality assurance for php projects tek12Workshop quality assurance for php projects tek12
Workshop quality assurance for php projects tek12Michelangelo van Dam
 
Building Web Services with Zend Framework (PHP Benelux meeting 20100713 Vliss...
Building Web Services with Zend Framework (PHP Benelux meeting 20100713 Vliss...Building Web Services with Zend Framework (PHP Benelux meeting 20100713 Vliss...
Building Web Services with Zend Framework (PHP Benelux meeting 20100713 Vliss...King Foo
 
Lean Php Presentation
Lean Php PresentationLean Php Presentation
Lean Php PresentationAlan Pinstein
 
Introducing PHP Data Objects
Introducing PHP Data ObjectsIntroducing PHP Data Objects
Introducing PHP Data Objectswebhostingguy
 
Overview of The Scala Based Lift Web Framework
Overview of The Scala Based Lift Web FrameworkOverview of The Scala Based Lift Web Framework
Overview of The Scala Based Lift Web FrameworkIndicThreads
 
Scala based Lift Framework
Scala based Lift FrameworkScala based Lift Framework
Scala based Lift Frameworkvhazrati
 

Similar to Building a Scalable Architecture for E-commerce with Yves & Zed (20)

Burn down the silos! Helping dev and ops gel on high availability websites
Burn down the silos! Helping dev and ops gel on high availability websitesBurn down the silos! Helping dev and ops gel on high availability websites
Burn down the silos! Helping dev and ops gel on high availability websites
 
CodeIgniter PHP MVC Framework
CodeIgniter PHP MVC FrameworkCodeIgniter PHP MVC Framework
CodeIgniter PHP MVC Framework
 
Pyramid deployment
Pyramid deploymentPyramid deployment
Pyramid deployment
 
Quality assurance for php projects with PHPStorm
Quality assurance for php projects with PHPStormQuality assurance for php projects with PHPStorm
Quality assurance for php projects with PHPStorm
 
Micro app-framework - NodeLive Boston
Micro app-framework - NodeLive BostonMicro app-framework - NodeLive Boston
Micro app-framework - NodeLive Boston
 
Micro app-framework
Micro app-frameworkMicro app-framework
Micro app-framework
 
Python from zero to hero (Twitter Explorer)
Python from zero to hero (Twitter Explorer)Python from zero to hero (Twitter Explorer)
Python from zero to hero (Twitter Explorer)
 
Refresh Austin - Intro to Dexy
Refresh Austin - Intro to DexyRefresh Austin - Intro to Dexy
Refresh Austin - Intro to Dexy
 
WCLA12 JavaScript
WCLA12 JavaScriptWCLA12 JavaScript
WCLA12 JavaScript
 
Building and deploying React applications
Building and deploying React applicationsBuilding and deploying React applications
Building and deploying React applications
 
Global Windows Azure Bootcamp : Cedric Derue playing with php on azure. (spon...
Global Windows Azure Bootcamp : Cedric Derue playing with php on azure. (spon...Global Windows Azure Bootcamp : Cedric Derue playing with php on azure. (spon...
Global Windows Azure Bootcamp : Cedric Derue playing with php on azure. (spon...
 
Playing with php_on_azure
Playing with php_on_azurePlaying with php_on_azure
Playing with php_on_azure
 
[Bristol WordPress] Supercharging WordPress Development
[Bristol WordPress] Supercharging WordPress Development[Bristol WordPress] Supercharging WordPress Development
[Bristol WordPress] Supercharging WordPress Development
 
Workshop quality assurance for php projects tek12
Workshop quality assurance for php projects tek12Workshop quality assurance for php projects tek12
Workshop quality assurance for php projects tek12
 
Building Web Services with Zend Framework (PHP Benelux meeting 20100713 Vliss...
Building Web Services with Zend Framework (PHP Benelux meeting 20100713 Vliss...Building Web Services with Zend Framework (PHP Benelux meeting 20100713 Vliss...
Building Web Services with Zend Framework (PHP Benelux meeting 20100713 Vliss...
 
Lean Php Presentation
Lean Php PresentationLean Php Presentation
Lean Php Presentation
 
Introducing PHP Data Objects
Introducing PHP Data ObjectsIntroducing PHP Data Objects
Introducing PHP Data Objects
 
Overview Of Lift Framework
Overview Of Lift FrameworkOverview Of Lift Framework
Overview Of Lift Framework
 
Overview of The Scala Based Lift Web Framework
Overview of The Scala Based Lift Web FrameworkOverview of The Scala Based Lift Web Framework
Overview of The Scala Based Lift Web Framework
 
Scala based Lift Framework
Scala based Lift FrameworkScala based Lift Framework
Scala based Lift Framework
 

Recently uploaded

How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 

Recently uploaded (20)

How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 

Building a Scalable Architecture for E-commerce with Yves & Zed

  • 1.
  • 3. Who? Fabian Wesner $year >= 2012 CTO @ Project A Ventures $year == 2011 CTO @ Rocket Internet $year == 2010 Lead developer @ Zalando $year <= 2009 Entrepreneur and Freelancer Project A Ventures Building successful companies. Company Builder with focus on Internet, advertising technology and mobile. www.project-a.com
  • 8. Structured code with Bundles and Packages
  • 9. Dependency management with composer - Code is structured in packages - Packages may require each other - We use composer to manage dependencies composer.json of dwh-package {     "name": "project-a/dwh-package",     "autoload": {         "psr-0": { "ProjectA": "/src" }     },     "require": {         "php": ">=5.4.0",         "project-a/auth-package": ">=0.0.10",         "project-a/library-package": ">=0.0.27"     } } How to update Yves & Zed? (1) add a new version to a composer.json (2) run php composer.phar install
  • 12. Zed user interface Kendo UI + Bootstrap + jQuery minified and merged with Grunt
  • 14. Scalable job management with Jenkins /* subscribe users for newsletters */ $jobs[] = array( 'name' => 'send_newsletter_subscription_queue', 'command' => '$PHP_BIN $CLI_PATH/ index.php --module=newsletter --controller=cronjob --action=sendsubscriptionqueue', 'schedule' => '*/2 * * * *', 'enable' => true, 'stores' => $all_stores, ); /* -- MAIL QUEUE -- */ $jobs[] = array( 'name' => 'send_queued_mails', 'command' => '$PHP_BIN $CLI_PATH/ index.php --module=mail -- controller=cronjob --action=send-queued-mails', 'schedule' => '* * * * *', 'enable' => true, 'stores' => $all_stores, ); /* -- DUMP DB -- */ $jobs[] = array( 'name' => 'generate_database_dump', 'command' => '$PHP_BIN $CLI_PATH/ index.php --module=dbdump --controller=cronjob --action=execute', 'schedule' => '0 0 * * *', 'enable' => true, deployment
  • 17. Yves & Zed‘s Big Data infrastructure
  • 19. Visualization of business logic protected function addTransitions() { $this->setup->addTransition( self::STATE_NEW, self::STATE_PREAUTHORIZED, self::EVENT_START_PAYMENT, self::RULE_PAYMENT_TRANSACTION_APPROVED); $this->setup->addTransition( self::STATE_NEW, self::STATE_INVALID, self::EVENT_START_PAYMENT); } protected function addCommands() { $preAuthorizeCommand = $this->factory ->getModelOrderprocessCommandPaymentPreAuthorization(); $this->setup->addCommand( self::STATE_NEW, self::EVENT_START_PAYMENT, $preAuthorizeCommand); } protected function addDefinitions() { $subProcess = $this->factory ->getModelOrderprocessDefinitionSubProcessCancellation() $this->setup->addDefinition($subProcess); } PHP Graph
  • 20. Automatic processing of thousands of orders per day Trigger events Used in several controllers to start the state machine $this->facadeSales->triggerEvent(„start payment“,items); $this->facadeSales->triggerEventBulk($eventName,items); Commands Classes with logic which are triggered from the state machine class SaoZedPaymentComponentCommand PreAuthorization { public function __invoke ($orderEntity, $context) { ... } } Check conditions Decision which way to go class SaoZedPaymentComponentCondition TransactionApproved { /** @return bool */ public function check($orderItem, $context) { ... } } +++ More details: Talk of Oliver Tischlinger tomorrow „Statemachine – Das Mittel gegen Flags!“ +++
  • 22. ETL / job scheduler <job id="load-order-item-status"> <description>Copies the order item status table into the tmp table </description> <commands> <run-sql-file file-name="order-statuses/create-order-item-status-tmp-table.sql" echo-queries="false"/> <load-from-mysql mysql-database="zed" file-name="order-statuses/load-order-item-status.sql" target-table="tmp.order_item_status"/> </commands> </job> <job id="transform-order-item-status"> <description>Copies the order item status table into the dim schema </description> <dependencies> <dependency job="load-order-item-status"/> <dependency job="load-order-item-status-mapping"/> </dependencies> <commands> <run-sql-file file-name="order-statuses/transform-order-item-status.sql" echo-queries="false"/> </commands> </job>
  • 23. Order status mapping Every color has a simple meaning! Not paid Item returned Paid etc. <perspective name="Sales"> <status-group name="Not paid" description="The items are not yet paid" color="#557799"> <status ref="shipped"/> <status ref="waiting for payment"/> <status ref="capture"/> </status-group> <status-group name="Paid" description="The items are paid" color="#559955"> <status ref="paid in money collect"/> <status ref="clarify refund overpayment"/> <status ref="closed"/> </status-group> </perspective> </status-mapping>