Magento / Software Testing / Party - Something Architecture · 2019-03-08 · Quote Shared Catalog...

Preview:

Citation preview

Something Architecture

Anton Kril

Director of Architecture

@AntonKril

Storefront

Admin

Browser Server

Catalog Checkout

App Framework

Advanced Checkout

Negotiable Quote

Shared Catalog

Configurable Product

Bundle Product

Online Payment

Customer

Company Hierarchy

Customer Segment

RES

TH

TTP

& S

SRG

rap

hQ

L

Extension

Extension

Extension

Customization

Customization

Open Source Commerce B2B CustomizationExtension

Evolvability of platform guaranteed by Isolation of Services and Stable APIs

Storefront

Admin

Browser Server

App Framework

RES

TG

rap

hQ

L

Open Source Commerce B2B CustomizationExtension

Catalog

Catalog

Shared Catalog

Configurable Product

Bundle ProductCat

alo

g A

PI

Extension

Customization

Checkout

Quote

Negotiable Quote

Checkout

Advanced Checkout

Ch

ecko

ut

AP

I

Extension

Customization

Catalog Query

CatalogQuery

Shared Catalog

BundleProductC

atal

og

Qu

ery

AP

I

Extension

Customization

Customer

Customer

Company

Customer SegmentCu

sto

mer

AP

I

Extension

Customization

Elastic

Storefront

Admin

Browser Server

App Framework

RES

TG

rap

hQ

L

Open Source Commerce B2B CustomizationExtension

Catalog

Catalog

Shared Catalog

Configurable Product

Bundle ProductCat

alo

g A

PI

Extension

Customization

Ch

ecko

ut

AP

I

Catalog Query

CatalogQuery

Shared Catalog

BundleProduct

Cat

alo

g Q

ue

ry A

PI

Extension

Customization

Customer

Customer

Company

Customer SegmentCu

sto

mer

AP

I

Extension

Customization

Elastic

Saas Checkout Service

Storefront

Open Source Commerce B2B

Browser

Admin

Checkout

Checkout

App Framework

Negotiable Quote

AdvancedCheckoutR

EST

Customization

Catalog

Catalog

App Framework

Shared Catalog

Configurable Product

Bundle Product

RES

T

Extension

CustomizationOrder Management

Sales

App Framework

RMA

RES

T

Extension

Customization

Customer

Customer

App Framework

CompanyHierarchy

CustomerSegmentsRES

T

Extension

Customization

Storefront GatewayGraphQL

AdminGateway

REST

Admin

UP

WA

RD

CatalogQuery

CatalogQuery

App Framework

RES

T SharedCatalog

Customization

CustomizationExtension

Storefront

Open Source Commerce B2B

Browser

Admin

Checkout

Checkout

App Framework

Negotiable Quote

AdvancedCheckout

RES

T

Customization

Catalog

Catalog

App Framework

Shared Catalog

Configurable Product

Bundle Product

RES

T

Extension

CustomizationOrder Management

Sales

App Framework

RMA

RES

T

Extension

Customization

Customer

Customer

App Framework

CompanyHierarchy

CustomerSegmentsRES

T

Extension

Customization

Storefront GatewayGraphQL

AdminGateway

REST

Admin

UP

WA

RD

CatalogQuery

CatalogQuery

App Framework

RES

T SharedCatalog

Customization

CustomizationExtension

MFTF TestSuite

Catalog

Shared Catalog

Configurable Product

Bundle Product

Extension

Customization

Static decomposition

Commerce

Extension Vendor

repo.magento.com

Cloud

Makretplace

CoreCommunity

Testing Service

Service Isolation@AntonKril

http://bit.ly/magento-service-isolation

More Details

CAP Theorem

Consistency

AvailabilityPartitionTolerance

CACP

AP

Service design principles

• All merchant operations SHOULD BE eventually consistent

• All operations MUST BE idempotent.

• There MUST BE NO data dependencies between services.

• Sagas and confirmation timeouts SHOULD BE used for consistency of distributed operations

• All new state modifying service contracts SHOULD expose asynchronous bulk APIs

• Command & Query responsibility segregation – storefront APIs for data immutable in storefront (catalog, pricing,

promotions) should be optimized for data retrieval

• Compare and Swap (CAS) tokens SHOULD be used to avoid race conditions

Manual testing is not an option

• MFTF – modular functional testing framework

• Run MFTF on marketplace to validate extensions & upgrades

• Run MFTF on cloud to validate changes & upgrades

• Add capacity testing capabilities

Reduce WIP

2.3.0 2.3.1 2.3.x 2.4.0

CheckoutAPI 100.0.0 - alpha

CheckoutAPI 100.0.0 - Beta

CheckoutAPI 100.0.0 – RC1

CheckoutAPI 100.0.0

Time

Distributed Deployment

Microservices

Storefront

Open Source Commerce B2B

Browser

Admin

Checkout

Checkout

App Framework

Negotiable Quote

Advanced CheckoutR

EST

Customization

Catalog

Catalog

App Framework

Shared Catalog

Configurable Product

Bundle Product

RES

T

Extension

CustomizationOrder Management

Sales

App Framework

RMA

RES

T

Extension

Customization

Customer

Customer

App Framework

Company Hierarchy

Customer SegmentsRES

T

Extension

Customization

Storefront GatewayGraphQL

AdminGateway

REST

Admin

UP

WA

RD

CatalogQuery

CatalogQuery

App Framework

RES

T SharedCatalog

Customization

CustomizationExtension

Network is a scary placeIt is hard to design distributed systems

Fallacies of distributed computing

• The network is reliable.

• Latency is zero.

• Bandwidth is infinite.

• The network is secure.

• Topology doesn't change.

• There is one administrator.

• Transport cost is zero.

• The network is homogeneous.

https://en.wikipedia.org/wiki/Fallacies_of_distributed_computing

Service Mesh

Checkout

Service mesh

Customer

Service mesh

Application

Service mesh

Catalog

Service mesh

Checkout Service Catalog Service

Cat

alog

AP

I

Cat

alog

P

roxy

Cat

alog

AP

I

Checkout Impl

Catalog Impl

Request processingindex.php Bootstrap

Load global configApplication\HttpLoad area config

Storefront FrontAction Routing

Action ControllerExecute

ViewExecute

Webapi FrontService Contract Routing

Service ContractExecute

index.php BootstrapLoad global config

Webapi FrontService Contract Routing

Service ContractExecute

Service ContractExecute

Lightweight framework

• Automated cache invalidation

• Area is loaded immediately. No intermediate “global” step

• No “isInstalled” checks

• No store resolving

• No application classes

• Lightweight Request/Response class

• No Layout loading

• No UrlRewrite, default store redirect plugins

• Simplified webapi routing

• No “registration.php” loaded per module on every request

• ….

Unified environmentDev stack Staging & Production stack

Commerce Cloud

Autoscaling group

Checkout Checkout Checkout

LB Autoscaling group

Catalog Catalog Catalog

LB

Autoscaling group

Customer

LB

Customer Customer

Admin machine> magento context:add checkout administrative_endpoint_address> magento context:set checkout> Magento info:dependencies:show-modules

Service Isolation@AntonKril

http://bit.ly/magento-service-isolation

Recommended