SlideShare uma empresa Scribd logo
1 de 32
© 2016 Magento, Inc. Page | 2
© 2016 Magento, Inc. Page | 5
Agenda
1. Overview
2. Staging Architecture
3. Sample Module with Staging
4. QA
© 2016 Magento, Inc. Page | 6
Overview
© 2016 Magento, Inc. Page | 7
Making Content Changes on Magento EE < 2.1
Make
changes on
separate
copy of a
store
Make sure
changes look
good
On scheduled
date replicate
changes on
live store
Make sure
changes look
good
Troubleshoot
and fix issues
on live site if
not replicated
correctly
© 2016 Magento, Inc. Page | 8
Staging and Preview
Make
changes in
one place
Make sure
changes look
good using
preview
Schedule
when
changes
applied
Changes
applied
automatically
© 2016 Magento, Inc. Page | 10
Staging Campaigns
• Create, edit, and delete updates to:
– Products – prices, page designs,
descriptions, images, and more
– Categories – menu and display options,
which categories are enabled
– CMS Content – page content and layouts
– Promotions – catalog and shopping cart
price rules
– Additional entities with customization
• Group individual updates into
campaigns for easier management
• Schedule an unlimited number of
updates
Updating product content with quick access to
other scheduled changes
© 2016 Magento, Inc. Page | 11
Staging Dashboard
• Manage all updates from a single
dashboard with grid and timeline
views
• Easily monitor key campaign
information:
– Start and end dates
– Campaign components
– Campaign status
• Drill down into campaigns to preview,
make edits or delete updates
Dashboard grid view – complete list of all campaigns
and their components within a specified date range
© 2016 Magento, Inc. Page | 12
Staging Timeline Dashboard
Dashboard timeline view – shows all
current and upcoming campaigns in a
calendar, making it easy to confirm
you have a coordinated
merchandising strategy in place
© 2016 Magento, Inc. Page | 13
Preview Updates
• Preview and verify updates by date and store view
• Screen the user experience through checkout without placing orders
• Share links with others to preview pages
© 2016 Magento, Inc. Page | 14
Staging Architecture
© 2016 Magento, Inc. Page | 15
The Big Picture
Changes to Schema
From Condition
Renderer
Entity Manager
Sequence
Manager
Version Manager
Persistence Operations for Stageable Entities
*Staging Modules Cron Jobs
Business
Logic
Persistence
Layer
Database
Configurable Ui Elements Ui
© 2016 Magento, Inc. Page | 16
Database Schema
row_id PK int
entity_id int
created_in int
updated_in int
sku varchar
… …
value_id int
attribtue_id int
store_id int
row_id int
value varchar
catalog_product_entit
y_varchar
catalog_product_entit
y
product_id int
website_id int
catalog_product
_website
Stagable attributes
and relations
linked by row_id
Non stagable
attributes
linked by
entity_id
(sequence id)
id bigint
start_time datetime
name varchar
description int
rollback_id bigint
is_campaign tinyint
is_rollback tinyint
moved_to bigint
stagign_update
sequence_
value
int
sequence_product
© 2016 Magento, Inc. Page | 17
Entity Version
created_in – version from which update is active, default 1
updated_in – version to which update is active, default 2147483647
1 and 2147483647 are left and right margins for the version
+------+---------+----------+----------+---------+-----+-------------------------------+
|row_id|entity_id|created_in|updated_in|name |price|short_description |
+------+---------+----------+----------+---------+-----+-------------------------------+
| 1| 1| 1| 999|Product 1|10.99|Product 1 short description |
+------+---------+----------+----------+---------+-----+-------------------------------+
| 2| 2| 200| 999|Product 2|15.00|Product 2 short description |
+------+---------+----------+----------+---------+-----+-------------------------------+
© 2016 Magento, Inc. Page | 18
Select Current Version
staging_update
+---+-------------------+-----------------------------------+
|id | start_time|name |
+---+-------------------+-----------------------------------+
|100|2016-08-31 04:05:00|Update 1 for Product 1 |
+---+-------------------+-----------------------------------+
|200|2016-09-12 04:05:00|Update 2 for Product 1 |
+---+-------------------+-----------------------------------+
|300|2016-09-18 04:05:00|Update 3 for Product 1 |
+-----------------------+-----------------------------------+
SELECT * FROM staging_update WHERE start_time <= '2016-09-12 04:05:00' DESC
LIMIT 1
2016-09-12 04:05:00 is current date and time
© 2016 Magento, Inc. Page | 19
Select Active Updates
+------+---------+----------+----------+---------+-----+-------------------------------+
|row_id|entity_id|created_in|updated_in|name |price|short_description |
+------+---------+----------+----------+---------+-----+-------------------------------+
| 1| 1| 1| 999|Product 1|10.99|Product 1 short description |
+------+---------+----------+----------+---------+-----+-------------------------------+
| 2| 2| 1| 200|Product 2|15.00|Product 2 short description |
+------+---------+----------+----------+---------+-----+-------------------------------+
| 3| 2| 200| 300|Product 2|12.00|Product 2 short description |
+------+---------+----------+----------+---------+-----+-------------------------------+
| 4| 2| 300| 999|Product 2|12.00|Product 2 new short description|
+------+---------+----------+----------+---------+-----+-------------------------------+
1 300200 999
Product 1
Product 2
Price updated Description updated
SELECT * FROM catalog_product_entity WHERE created_in <= 200 AND updated_in > 200
© 2016 Magento, Inc. Page | 20
Permanent Update
catalog_product_entity
+------+---------+----------+----------+---------+-----+-------------------------------+
|row_id|entity_id|created_in|updated_in|name |price|short_description |
+------+---------+----------+----------+---------+-----+-------------------------------+
| 1| 1| 100| 999|Product 1|10.99|Product 1 short description |
+------+---------+----------+----------+---------+-----+-------------------------------+
catalog_product_entity – after creating permanent update
+------+---------+----------+----------+---------+-----+-------------------------------+
|row_id|entity_id|created_in|updated_in|name |price|short_description |
+------+---------+----------+----------+---------+-----+-------------------------------+
| 1| 1| 100| 200|Product 1|10.99|Product 1 short description |
+------+---------+----------+----------+---------+-----+-------------------------------+
| 2| 1| 200| 999|Product 1|12.00|Product 1 new short description|
+------+---------+----------+----------+---------+-----+-------------------------------+
staging_update
+---+-----------------------------------+-----------+
|id |name |is_rollback|
+---+-----------------------------------+-----------+
|200|Update for Product 1 | 0|
+---------------------------------------+-----------+
© 2016 Magento, Inc. Page | 21
Temporary Update
catalog_product_entity – after creating temporary update
+------+---------+----------+----------+---------+-----+-------------------------------+
|row_id|entity_id|created_in|updated_in|name |price|short_description |
+------+---------+----------+----------+---------+-----+-------------------------------+
| 1| 1| 100| 200|Product 1|10.99|Product 1 short description |
+------+---------+----------+----------+---------+-----+-------------------------------+
| 2| 1| 200| 300|Product 1|12.00|Product 1 new short description|
+------+---------+----------+----------+---------+-----+-------------------------------+
| 3| 1| 300| 999|Product 1|10.99|Product 1 short description |
+------+---------+----------+----------+---------+-----+-------------------------------+
staging_update
+---+-----------------------------------+-----------+
|id |name |is_rollback|
+---+-----------------------------------+-----------+
|200|Update for Product 1 | 0|
+---------------------------------------+-----------+
|300|Rollback for “Update for Product 1”| 1|
+---------------------------------------+-----------+
© 2016 Magento, Inc. Page | 22
Entity Manager
Entity Manager
Operations
Main Entity EAV Attributes
Relation and
Extension
Attributes
Read, Create, Update,
Delete, CheckIfExists
Persistence of
main entity
Persistence of
EAV attributes
MagentoFrameworkEntityManager
Handlers
Persistence of related and
extension attributes,
delegates all work to
handlers
© 2016 Magento, Inc. Page | 23
Operations for Staging
• Redefined in the DI for each stageable entity
• In addition to persistence of main entity perform additional actions
– Manage campaigns
– Manage updates
© 2016 Magento, Inc. Page | 24
From SQL Condition Renderer
You don’t need to specify active version, MagentoStagingModelSelectFromRenderer
modifies select queries and you always get active version in application.
SELECT * FROM catalog_product_entity WHERE created_in <= version AND
updated_in > version
Load entity by sequence id (in our case, for product - entity_id), not row_id
© 2016 Magento, Inc. Page | 25
Version Manager and Sequence Manager
Version Manager – get current version in the system
Sequence Manager – generates sequence id, unique identifier for all of
the versions of the same entity
© 2016 Magento, Inc. Page | 26
Cron Jobs
The following actions executed by cron jobs
• Apply updates – make updates visible when they become active
• Move updates from one campaign to another – when you change
effective dates for the campaign, Magento creates new campaign
and move updates to the new campaign using cron
• Clean up old updates
© 2016 Magento, Inc. Page | 27
How Does Preview Work
• Version Manager provides requested version
• Calculates page data on fly, it's always up to date
• Preview uses all system cache types, except FPC (Full Page
Cache)
• Indexes (as a database cache) also skipped at preview
© 2016 Magento, Inc. Page | 29
Sample Module with
Staging
© 2016 Magento, Inc. Page | 30
Requirements
• Need to be able display and manage blog posts
• Post need to have the following fields: title, description
• Module should work in both Community and Enterprise editions
• Enterprise edition need to allow
– Schedule updates for posts
– See upcoming updates in staging dashboard
– Preview changes
© 2016 Magento, Inc. Page | 31
Persistence
• Different database schema in Community and Enterprise
• Different configuration for Entity Manager
• Staging specific operations for Entity Manager instead of default
ones
© 2016 Magento, Inc. Page | 32
Ui
• Configure and add to form reusable staging Ui components
– Upcoming updates form modal and grid
– Edit update form
– Select update grid on edit update form
– Remove form
– Select update grid on remove form
• Add controllers to handle save and delete operations for updates
© 2016 Magento, Inc. Page | 33
API
Provide API for managing updates
interface PostStagingInterface
{
public function schedule(PostInterface $post, $version,
$arguments = []);
public function unschedule(PostInterface $post, $version);
}
© 2016 Magento, Inc. Page | 34
Resources
© 2016 Magento, Inc. Page | 35
Resources
• https://github.com/melnikovi/magento2-samples
• http://devdocs.magento.com/guides/v2.1/extension-dev-
guide/staging/Staging.html
© 2016 Magento, Inc. Page | 36
Q&A
© 2016 Magento, Inc. Page | 37
Thank You
imelnikov@magento.com

Mais conteúdo relacionado

Mais procurados

HelixWare Online Video Platform
HelixWare Online Video PlatformHelixWare Online Video Platform
HelixWare Online Video PlatformFady Ramzy
 
Magento Function Testing Framework - Intro and Overview
Magento Function Testing Framework - Intro and OverviewMagento Function Testing Framework - Intro and Overview
Magento Function Testing Framework - Intro and OverviewTom Erskine
 
Magento 2 ERP Integration Best Practices: Microsoft Dynamics
Magento 2 ERP Integration Best Practices: Microsoft DynamicsMagento 2 ERP Integration Best Practices: Microsoft Dynamics
Magento 2 ERP Integration Best Practices: Microsoft DynamicsJoshua Warren
 
What's New With Magento 2?
What's New With Magento 2?What's New With Magento 2?
What's New With Magento 2?Joshua Warren
 
Max Yekaterynenko - Magento Architecture, Next Steps
Max Yekaterynenko - Magento Architecture, Next StepsMax Yekaterynenko - Magento Architecture, Next Steps
Max Yekaterynenko - Magento Architecture, Next StepsMeet Magento Italy
 
Partnership Responsive Asp.Net CMS
Partnership Responsive Asp.Net CMSPartnership Responsive Asp.Net CMS
Partnership Responsive Asp.Net CMSveerabhadradotnet
 
Drupal MediaMosa Transcoding module
Drupal MediaMosa Transcoding moduleDrupal MediaMosa Transcoding module
Drupal MediaMosa Transcoding moduleMediaMosa
 
Alfresco onlineeditbywebdav 2013
Alfresco onlineeditbywebdav 2013Alfresco onlineeditbywebdav 2013
Alfresco onlineeditbywebdav 2013Takeshi Totani
 
Mule soft meetup__dubai_12_june- Error Handling
Mule soft meetup__dubai_12_june- Error HandlingMule soft meetup__dubai_12_june- Error Handling
Mule soft meetup__dubai_12_june- Error Handlingsatyasekhar123
 
SharePoint Web part programming
SharePoint Web part programmingSharePoint Web part programming
SharePoint Web part programmingQuang Nguyễn Bá
 
Building Sites on DNN's Liquid Content: From Content Modeling to Front-End UX
Building Sites on DNN's Liquid Content: From Content Modeling to Front-End UXBuilding Sites on DNN's Liquid Content: From Content Modeling to Front-End UX
Building Sites on DNN's Liquid Content: From Content Modeling to Front-End UXDNN
 
Deep dive into share point framework webparts
Deep dive into share point framework webpartsDeep dive into share point framework webparts
Deep dive into share point framework webpartsPrabhu Nehru
 
世界No.1 CMS WordPressへのいざない
世界No.1 CMS WordPressへのいざない世界No.1 CMS WordPressへのいざない
世界No.1 CMS WordPressへのいざないYuriko IKEDA
 
Sergii Shymko: Magento 2: Composer for Extensions Distribution
Sergii Shymko: Magento 2: Composer for Extensions DistributionSergii Shymko: Magento 2: Composer for Extensions Distribution
Sergii Shymko: Magento 2: Composer for Extensions DistributionMeet Magento Italy
 
Introducing eZ Publish Platform 5.1 - webinar
Introducing eZ Publish Platform 5.1 - webinarIntroducing eZ Publish Platform 5.1 - webinar
Introducing eZ Publish Platform 5.1 - webinarRoland Benedetti
 

Mais procurados (15)

HelixWare Online Video Platform
HelixWare Online Video PlatformHelixWare Online Video Platform
HelixWare Online Video Platform
 
Magento Function Testing Framework - Intro and Overview
Magento Function Testing Framework - Intro and OverviewMagento Function Testing Framework - Intro and Overview
Magento Function Testing Framework - Intro and Overview
 
Magento 2 ERP Integration Best Practices: Microsoft Dynamics
Magento 2 ERP Integration Best Practices: Microsoft DynamicsMagento 2 ERP Integration Best Practices: Microsoft Dynamics
Magento 2 ERP Integration Best Practices: Microsoft Dynamics
 
What's New With Magento 2?
What's New With Magento 2?What's New With Magento 2?
What's New With Magento 2?
 
Max Yekaterynenko - Magento Architecture, Next Steps
Max Yekaterynenko - Magento Architecture, Next StepsMax Yekaterynenko - Magento Architecture, Next Steps
Max Yekaterynenko - Magento Architecture, Next Steps
 
Partnership Responsive Asp.Net CMS
Partnership Responsive Asp.Net CMSPartnership Responsive Asp.Net CMS
Partnership Responsive Asp.Net CMS
 
Drupal MediaMosa Transcoding module
Drupal MediaMosa Transcoding moduleDrupal MediaMosa Transcoding module
Drupal MediaMosa Transcoding module
 
Alfresco onlineeditbywebdav 2013
Alfresco onlineeditbywebdav 2013Alfresco onlineeditbywebdav 2013
Alfresco onlineeditbywebdav 2013
 
Mule soft meetup__dubai_12_june- Error Handling
Mule soft meetup__dubai_12_june- Error HandlingMule soft meetup__dubai_12_june- Error Handling
Mule soft meetup__dubai_12_june- Error Handling
 
SharePoint Web part programming
SharePoint Web part programmingSharePoint Web part programming
SharePoint Web part programming
 
Building Sites on DNN's Liquid Content: From Content Modeling to Front-End UX
Building Sites on DNN's Liquid Content: From Content Modeling to Front-End UXBuilding Sites on DNN's Liquid Content: From Content Modeling to Front-End UX
Building Sites on DNN's Liquid Content: From Content Modeling to Front-End UX
 
Deep dive into share point framework webparts
Deep dive into share point framework webpartsDeep dive into share point framework webparts
Deep dive into share point framework webparts
 
世界No.1 CMS WordPressへのいざない
世界No.1 CMS WordPressへのいざない世界No.1 CMS WordPressへのいざない
世界No.1 CMS WordPressへのいざない
 
Sergii Shymko: Magento 2: Composer for Extensions Distribution
Sergii Shymko: Magento 2: Composer for Extensions DistributionSergii Shymko: Magento 2: Composer for Extensions Distribution
Sergii Shymko: Magento 2: Composer for Extensions Distribution
 
Introducing eZ Publish Platform 5.1 - webinar
Introducing eZ Publish Platform 5.1 - webinarIntroducing eZ Publish Platform 5.1 - webinar
Introducing eZ Publish Platform 5.1 - webinar
 

Destaque

Mage Titans USA 2016 - Miguel Balparda - Magento 2: Premium Performance with ...
Mage Titans USA 2016 - Miguel Balparda - Magento 2: Premium Performance with ...Mage Titans USA 2016 - Miguel Balparda - Magento 2: Premium Performance with ...
Mage Titans USA 2016 - Miguel Balparda - Magento 2: Premium Performance with ...Stacey Whitney
 
Mage Titans USA 2016 - Joshua Warren - Magento 2 Integrations
Mage Titans USA 2016 - Joshua Warren - Magento 2 Integrations Mage Titans USA 2016 - Joshua Warren - Magento 2 Integrations
Mage Titans USA 2016 - Joshua Warren - Magento 2 Integrations Stacey Whitney
 
Writing Testable Code (for Magento 1 and 2) 2016 Romaina
Writing Testable Code (for Magento 1 and 2)  2016 RomainaWriting Testable Code (for Magento 1 and 2)  2016 Romaina
Writing Testable Code (for Magento 1 and 2) 2016 Romainavinaikopp
 
Renacimiento. Arquitectura
Renacimiento. ArquitecturaRenacimiento. Arquitectura
Renacimiento. Arquitecturaarte_sancho
 
Grecia arquitectura
Grecia arquitecturaGrecia arquitectura
Grecia arquitecturaarte_sancho
 
actividad 8 taller práctico Consuelo Orozco S.
actividad  8  taller  práctico  Consuelo  Orozco  S.actividad  8  taller  práctico  Consuelo  Orozco  S.
actividad 8 taller práctico Consuelo Orozco S.Consuelo Orozco
 
зарапина алена+евангелион+клиенты
зарапина алена+евангелион+клиентызарапина алена+евангелион+клиенты
зарапина алена+евангелион+клиентыAlena Zarapina
 
Energy Drinks and Appetizer
Energy Drinks and AppetizerEnergy Drinks and Appetizer
Energy Drinks and AppetizerEl Speak
 
Saving Grace Uganda Social Media Strategy
Saving Grace Uganda Social Media StrategySaving Grace Uganda Social Media Strategy
Saving Grace Uganda Social Media StrategyJoel Kuhn
 
Beautiful clothes
Beautiful clothesBeautiful clothes
Beautiful clothesEl Speak
 
Nice Fashion
Nice FashionNice Fashion
Nice FashionEl Speak
 
Black Stallion Gloves
Black Stallion GlovesBlack Stallion Gloves
Black Stallion GlovesEl Speak
 
Dali Museum and Girona
Dali Museum and GironaDali Museum and Girona
Dali Museum and GironaEl Speak
 
Cool and Beautiful Apparel Collection
Cool and Beautiful Apparel CollectionCool and Beautiful Apparel Collection
Cool and Beautiful Apparel CollectionEl Speak
 
Arizona Lemon Lime Rickey
Arizona Lemon Lime RickeyArizona Lemon Lime Rickey
Arizona Lemon Lime RickeyEl Speak
 
Bulk Commodity Price Index 2016 Sample
Bulk Commodity Price Index 2016 SampleBulk Commodity Price Index 2016 Sample
Bulk Commodity Price Index 2016 SampleDaejin Lee
 
Superb Dress
Superb DressSuperb Dress
Superb DressEl Speak
 

Destaque (20)

Mage Titans USA 2016 - Miguel Balparda - Magento 2: Premium Performance with ...
Mage Titans USA 2016 - Miguel Balparda - Magento 2: Premium Performance with ...Mage Titans USA 2016 - Miguel Balparda - Magento 2: Premium Performance with ...
Mage Titans USA 2016 - Miguel Balparda - Magento 2: Premium Performance with ...
 
Mage Titans USA 2016 - Joshua Warren - Magento 2 Integrations
Mage Titans USA 2016 - Joshua Warren - Magento 2 Integrations Mage Titans USA 2016 - Joshua Warren - Magento 2 Integrations
Mage Titans USA 2016 - Joshua Warren - Magento 2 Integrations
 
Writing Testable Code (for Magento 1 and 2) 2016 Romaina
Writing Testable Code (for Magento 1 and 2)  2016 RomainaWriting Testable Code (for Magento 1 and 2)  2016 Romaina
Writing Testable Code (for Magento 1 and 2) 2016 Romaina
 
Renacimiento. Arquitectura
Renacimiento. ArquitecturaRenacimiento. Arquitectura
Renacimiento. Arquitectura
 
Grecia arquitectura
Grecia arquitecturaGrecia arquitectura
Grecia arquitectura
 
UPDATED CV
UPDATED CVUPDATED CV
UPDATED CV
 
actividad 8 taller práctico Consuelo Orozco S.
actividad  8  taller  práctico  Consuelo  Orozco  S.actividad  8  taller  práctico  Consuelo  Orozco  S.
actividad 8 taller práctico Consuelo Orozco S.
 
зарапина алена+евангелион+клиенты
зарапина алена+евангелион+клиентызарапина алена+евангелион+клиенты
зарапина алена+евангелион+клиенты
 
Energy Drinks and Appetizer
Energy Drinks and AppetizerEnergy Drinks and Appetizer
Energy Drinks and Appetizer
 
Saving Grace Uganda Social Media Strategy
Saving Grace Uganda Social Media StrategySaving Grace Uganda Social Media Strategy
Saving Grace Uganda Social Media Strategy
 
Beautiful clothes
Beautiful clothesBeautiful clothes
Beautiful clothes
 
Nice Fashion
Nice FashionNice Fashion
Nice Fashion
 
Nrf 130-pemex-2013
Nrf 130-pemex-2013Nrf 130-pemex-2013
Nrf 130-pemex-2013
 
my resume
my resumemy resume
my resume
 
Black Stallion Gloves
Black Stallion GlovesBlack Stallion Gloves
Black Stallion Gloves
 
Dali Museum and Girona
Dali Museum and GironaDali Museum and Girona
Dali Museum and Girona
 
Cool and Beautiful Apparel Collection
Cool and Beautiful Apparel CollectionCool and Beautiful Apparel Collection
Cool and Beautiful Apparel Collection
 
Arizona Lemon Lime Rickey
Arizona Lemon Lime RickeyArizona Lemon Lime Rickey
Arizona Lemon Lime Rickey
 
Bulk Commodity Price Index 2016 Sample
Bulk Commodity Price Index 2016 SampleBulk Commodity Price Index 2016 Sample
Bulk Commodity Price Index 2016 Sample
 
Superb Dress
Superb DressSuperb Dress
Superb Dress
 

Semelhante a Mage Titans USA 2016 - Igor Melnykov - Staging and Preview

Magento 2.1 ee content staging
Magento 2.1 ee content stagingMagento 2.1 ee content staging
Magento 2.1 ee content stagingAnton Kaplya
 
Eugene Shaksuvarov - Tuning Magento 2 for Maximum Performance
Eugene Shaksuvarov - Tuning Magento 2 for Maximum PerformanceEugene Shaksuvarov - Tuning Magento 2 for Maximum Performance
Eugene Shaksuvarov - Tuning Magento 2 for Maximum PerformanceMeet Magento Italy
 
White Paper - Magento 2.0 Performance and Scalability 03.31.16
White Paper - Magento 2.0 Performance and Scalability 03.31.16White Paper - Magento 2.0 Performance and Scalability 03.31.16
White Paper - Magento 2.0 Performance and Scalability 03.31.16Patrick Kong
 
In Mind Cloud - Product Release - 2211
In Mind Cloud - Product Release - 2211In Mind Cloud - Product Release - 2211
In Mind Cloud - Product Release - 2211In Mind Cloud
 
Web Store with Catalog and Product Management
Web Store with Catalog and Product ManagementWeb Store with Catalog and Product Management
Web Store with Catalog and Product ManagementMike Taylor
 
Sneak Peek: Critical NetSuite Release 2019.2 Features
Sneak Peek: Critical NetSuite Release 2019.2 FeaturesSneak Peek: Critical NetSuite Release 2019.2 Features
Sneak Peek: Critical NetSuite Release 2019.2 FeaturesProtelo, Inc.
 
Top Down and Bottom Up Planning at Breakthru Beverage Group
Top Down and Bottom Up Planning at Breakthru Beverage GroupTop Down and Bottom Up Planning at Breakthru Beverage Group
Top Down and Bottom Up Planning at Breakthru Beverage GroupKyle Goodfriend
 
Making Your Apex and Visualforce Reusable
Making Your Apex and Visualforce ReusableMaking Your Apex and Visualforce Reusable
Making Your Apex and Visualforce ReusableSalesforce Developers
 
In Mind Cloud - Product Release - 2011
In Mind Cloud - Product Release - 2011In Mind Cloud - Product Release - 2011
In Mind Cloud - Product Release - 2011In Mind Cloud
 
What's new in IBM BPM 8.5.7 CF2017.06
What's new in IBM BPM 8.5.7 CF2017.06What's new in IBM BPM 8.5.7 CF2017.06
What's new in IBM BPM 8.5.7 CF2017.06Dennis Parrott
 
Environment & Release Management
Environment & Release ManagementEnvironment & Release Management
Environment & Release Managementelliando dias
 
UA and Google Tag Manager – Why & How!
UA and Google Tag Manager – Why & How!UA and Google Tag Manager – Why & How!
UA and Google Tag Manager – Why & How!Munaz Anjum
 
Mli 2017 technical powering tomorrow_2.2
Mli 2017 technical powering tomorrow_2.2Mli 2017 technical powering tomorrow_2.2
Mli 2017 technical powering tomorrow_2.2Hanoi MagentoMeetup
 
In Mind Cloud - Product Release - 1904
In Mind Cloud - Product Release - 1904In Mind Cloud - Product Release - 1904
In Mind Cloud - Product Release - 1904In Mind Cloud
 

Semelhante a Mage Titans USA 2016 - Igor Melnykov - Staging and Preview (20)

Magento 2.1 ee content staging
Magento 2.1 ee content stagingMagento 2.1 ee content staging
Magento 2.1 ee content staging
 
Eugene Shaksuvarov - Tuning Magento 2 for Maximum Performance
Eugene Shaksuvarov - Tuning Magento 2 for Maximum PerformanceEugene Shaksuvarov - Tuning Magento 2 for Maximum Performance
Eugene Shaksuvarov - Tuning Magento 2 for Maximum Performance
 
White Paper - Magento 2.0 Performance and Scalability 03.31.16
White Paper - Magento 2.0 Performance and Scalability 03.31.16White Paper - Magento 2.0 Performance and Scalability 03.31.16
White Paper - Magento 2.0 Performance and Scalability 03.31.16
 
White Paper - Magento 2.0 Performance and Scalability 03.31.16
White Paper - Magento 2.0 Performance and Scalability 03.31.16White Paper - Magento 2.0 Performance and Scalability 03.31.16
White Paper - Magento 2.0 Performance and Scalability 03.31.16
 
In Mind Cloud - Product Release - 2211
In Mind Cloud - Product Release - 2211In Mind Cloud - Product Release - 2211
In Mind Cloud - Product Release - 2211
 
Web Store with Catalog and Product Management
Web Store with Catalog and Product ManagementWeb Store with Catalog and Product Management
Web Store with Catalog and Product Management
 
Sneak Peek: Critical NetSuite Release 2019.2 Features
Sneak Peek: Critical NetSuite Release 2019.2 FeaturesSneak Peek: Critical NetSuite Release 2019.2 Features
Sneak Peek: Critical NetSuite Release 2019.2 Features
 
Dynamics GP 2016 R2 whats new demo
Dynamics GP 2016 R2 whats new demo Dynamics GP 2016 R2 whats new demo
Dynamics GP 2016 R2 whats new demo
 
Top Down and Bottom Up Planning at Breakthru Beverage Group
Top Down and Bottom Up Planning at Breakthru Beverage GroupTop Down and Bottom Up Planning at Breakthru Beverage Group
Top Down and Bottom Up Planning at Breakthru Beverage Group
 
Magento 2
Magento 2Magento 2
Magento 2
 
Magento
MagentoMagento
Magento
 
Magento
MagentoMagento
Magento
 
Making Your Apex and Visualforce Reusable
Making Your Apex and Visualforce ReusableMaking Your Apex and Visualforce Reusable
Making Your Apex and Visualforce Reusable
 
In Mind Cloud - Product Release - 2011
In Mind Cloud - Product Release - 2011In Mind Cloud - Product Release - 2011
In Mind Cloud - Product Release - 2011
 
Development Best Practices
Development Best PracticesDevelopment Best Practices
Development Best Practices
 
What's new in IBM BPM 8.5.7 CF2017.06
What's new in IBM BPM 8.5.7 CF2017.06What's new in IBM BPM 8.5.7 CF2017.06
What's new in IBM BPM 8.5.7 CF2017.06
 
Environment & Release Management
Environment & Release ManagementEnvironment & Release Management
Environment & Release Management
 
UA and Google Tag Manager – Why & How!
UA and Google Tag Manager – Why & How!UA and Google Tag Manager – Why & How!
UA and Google Tag Manager – Why & How!
 
Mli 2017 technical powering tomorrow_2.2
Mli 2017 technical powering tomorrow_2.2Mli 2017 technical powering tomorrow_2.2
Mli 2017 technical powering tomorrow_2.2
 
In Mind Cloud - Product Release - 1904
In Mind Cloud - Product Release - 1904In Mind Cloud - Product Release - 1904
In Mind Cloud - Product Release - 1904
 

Mais de Stacey Whitney

Jason Woosley - Community Engagement 2.0 - Mage Titans Manchester 2016
Jason Woosley - Community Engagement 2.0 - Mage Titans Manchester 2016Jason Woosley - Community Engagement 2.0 - Mage Titans Manchester 2016
Jason Woosley - Community Engagement 2.0 - Mage Titans Manchester 2016Stacey Whitney
 
Mage Titans USA 2016 - Jonathan Bownds - Magento CI and Testing
Mage Titans USA 2016 - Jonathan Bownds - Magento CI and Testing Mage Titans USA 2016 - Jonathan Bownds - Magento CI and Testing
Mage Titans USA 2016 - Jonathan Bownds - Magento CI and Testing Stacey Whitney
 
Mage Titans USA 2016 - Ivan Chepurnyi - Creating Micro-Services for Magento 2...
Mage Titans USA 2016 - Ivan Chepurnyi - Creating Micro-Services for Magento 2...Mage Titans USA 2016 - Ivan Chepurnyi - Creating Micro-Services for Magento 2...
Mage Titans USA 2016 - Ivan Chepurnyi - Creating Micro-Services for Magento 2...Stacey Whitney
 
Mage Titans USA 2016 - Kimberely Thomas - Adopting Scrum and Agile for Develo...
Mage Titans USA 2016 - Kimberely Thomas - Adopting Scrum and Agile for Develo...Mage Titans USA 2016 - Kimberely Thomas - Adopting Scrum and Agile for Develo...
Mage Titans USA 2016 - Kimberely Thomas - Adopting Scrum and Agile for Develo...Stacey Whitney
 
Mage Titans USA 2016 - Mathew Beane - Edit Fully Stacked: Less OOPS, More OPS...
Mage Titans USA 2016 - Mathew Beane - Edit Fully Stacked: Less OOPS, More OPS...Mage Titans USA 2016 - Mathew Beane - Edit Fully Stacked: Less OOPS, More OPS...
Mage Titans USA 2016 - Mathew Beane - Edit Fully Stacked: Less OOPS, More OPS...Stacey Whitney
 
Mage Titans USA 2016 - Brendan Falkowski Designing the B2B Experience
Mage Titans USA 2016 -  Brendan Falkowski Designing the B2B ExperienceMage Titans USA 2016 -  Brendan Falkowski Designing the B2B Experience
Mage Titans USA 2016 - Brendan Falkowski Designing the B2B ExperienceStacey Whitney
 
Mage Titans USA 2016 - Brent Peterson - Start your project with a Bourbon and...
Mage Titans USA 2016 - Brent Peterson - Start your project with a Bourbon and...Mage Titans USA 2016 - Brent Peterson - Start your project with a Bourbon and...
Mage Titans USA 2016 - Brent Peterson - Start your project with a Bourbon and...Stacey Whitney
 
Mage Titans USA 2016 - Eugene Tulika - Integrations with Magento, end to end...
Mage Titans USA 2016 - Eugene Tulika -  Integrations with Magento, end to end...Mage Titans USA 2016 - Eugene Tulika -  Integrations with Magento, end to end...
Mage Titans USA 2016 - Eugene Tulika - Integrations with Magento, end to end...Stacey Whitney
 

Mais de Stacey Whitney (8)

Jason Woosley - Community Engagement 2.0 - Mage Titans Manchester 2016
Jason Woosley - Community Engagement 2.0 - Mage Titans Manchester 2016Jason Woosley - Community Engagement 2.0 - Mage Titans Manchester 2016
Jason Woosley - Community Engagement 2.0 - Mage Titans Manchester 2016
 
Mage Titans USA 2016 - Jonathan Bownds - Magento CI and Testing
Mage Titans USA 2016 - Jonathan Bownds - Magento CI and Testing Mage Titans USA 2016 - Jonathan Bownds - Magento CI and Testing
Mage Titans USA 2016 - Jonathan Bownds - Magento CI and Testing
 
Mage Titans USA 2016 - Ivan Chepurnyi - Creating Micro-Services for Magento 2...
Mage Titans USA 2016 - Ivan Chepurnyi - Creating Micro-Services for Magento 2...Mage Titans USA 2016 - Ivan Chepurnyi - Creating Micro-Services for Magento 2...
Mage Titans USA 2016 - Ivan Chepurnyi - Creating Micro-Services for Magento 2...
 
Mage Titans USA 2016 - Kimberely Thomas - Adopting Scrum and Agile for Develo...
Mage Titans USA 2016 - Kimberely Thomas - Adopting Scrum and Agile for Develo...Mage Titans USA 2016 - Kimberely Thomas - Adopting Scrum and Agile for Develo...
Mage Titans USA 2016 - Kimberely Thomas - Adopting Scrum and Agile for Develo...
 
Mage Titans USA 2016 - Mathew Beane - Edit Fully Stacked: Less OOPS, More OPS...
Mage Titans USA 2016 - Mathew Beane - Edit Fully Stacked: Less OOPS, More OPS...Mage Titans USA 2016 - Mathew Beane - Edit Fully Stacked: Less OOPS, More OPS...
Mage Titans USA 2016 - Mathew Beane - Edit Fully Stacked: Less OOPS, More OPS...
 
Mage Titans USA 2016 - Brendan Falkowski Designing the B2B Experience
Mage Titans USA 2016 -  Brendan Falkowski Designing the B2B ExperienceMage Titans USA 2016 -  Brendan Falkowski Designing the B2B Experience
Mage Titans USA 2016 - Brendan Falkowski Designing the B2B Experience
 
Mage Titans USA 2016 - Brent Peterson - Start your project with a Bourbon and...
Mage Titans USA 2016 - Brent Peterson - Start your project with a Bourbon and...Mage Titans USA 2016 - Brent Peterson - Start your project with a Bourbon and...
Mage Titans USA 2016 - Brent Peterson - Start your project with a Bourbon and...
 
Mage Titans USA 2016 - Eugene Tulika - Integrations with Magento, end to end...
Mage Titans USA 2016 - Eugene Tulika -  Integrations with Magento, end to end...Mage Titans USA 2016 - Eugene Tulika -  Integrations with Magento, end to end...
Mage Titans USA 2016 - Eugene Tulika - Integrations with Magento, end to end...
 

Último

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 

Último (20)

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 

Mage Titans USA 2016 - Igor Melnykov - Staging and Preview

  • 1. © 2016 Magento, Inc. Page | 2
  • 2. © 2016 Magento, Inc. Page | 5 Agenda 1. Overview 2. Staging Architecture 3. Sample Module with Staging 4. QA
  • 3. © 2016 Magento, Inc. Page | 6 Overview
  • 4. © 2016 Magento, Inc. Page | 7 Making Content Changes on Magento EE < 2.1 Make changes on separate copy of a store Make sure changes look good On scheduled date replicate changes on live store Make sure changes look good Troubleshoot and fix issues on live site if not replicated correctly
  • 5. © 2016 Magento, Inc. Page | 8 Staging and Preview Make changes in one place Make sure changes look good using preview Schedule when changes applied Changes applied automatically
  • 6. © 2016 Magento, Inc. Page | 10 Staging Campaigns • Create, edit, and delete updates to: – Products – prices, page designs, descriptions, images, and more – Categories – menu and display options, which categories are enabled – CMS Content – page content and layouts – Promotions – catalog and shopping cart price rules – Additional entities with customization • Group individual updates into campaigns for easier management • Schedule an unlimited number of updates Updating product content with quick access to other scheduled changes
  • 7. © 2016 Magento, Inc. Page | 11 Staging Dashboard • Manage all updates from a single dashboard with grid and timeline views • Easily monitor key campaign information: – Start and end dates – Campaign components – Campaign status • Drill down into campaigns to preview, make edits or delete updates Dashboard grid view – complete list of all campaigns and their components within a specified date range
  • 8. © 2016 Magento, Inc. Page | 12 Staging Timeline Dashboard Dashboard timeline view – shows all current and upcoming campaigns in a calendar, making it easy to confirm you have a coordinated merchandising strategy in place
  • 9. © 2016 Magento, Inc. Page | 13 Preview Updates • Preview and verify updates by date and store view • Screen the user experience through checkout without placing orders • Share links with others to preview pages
  • 10. © 2016 Magento, Inc. Page | 14 Staging Architecture
  • 11. © 2016 Magento, Inc. Page | 15 The Big Picture Changes to Schema From Condition Renderer Entity Manager Sequence Manager Version Manager Persistence Operations for Stageable Entities *Staging Modules Cron Jobs Business Logic Persistence Layer Database Configurable Ui Elements Ui
  • 12. © 2016 Magento, Inc. Page | 16 Database Schema row_id PK int entity_id int created_in int updated_in int sku varchar … … value_id int attribtue_id int store_id int row_id int value varchar catalog_product_entit y_varchar catalog_product_entit y product_id int website_id int catalog_product _website Stagable attributes and relations linked by row_id Non stagable attributes linked by entity_id (sequence id) id bigint start_time datetime name varchar description int rollback_id bigint is_campaign tinyint is_rollback tinyint moved_to bigint stagign_update sequence_ value int sequence_product
  • 13. © 2016 Magento, Inc. Page | 17 Entity Version created_in – version from which update is active, default 1 updated_in – version to which update is active, default 2147483647 1 and 2147483647 are left and right margins for the version +------+---------+----------+----------+---------+-----+-------------------------------+ |row_id|entity_id|created_in|updated_in|name |price|short_description | +------+---------+----------+----------+---------+-----+-------------------------------+ | 1| 1| 1| 999|Product 1|10.99|Product 1 short description | +------+---------+----------+----------+---------+-----+-------------------------------+ | 2| 2| 200| 999|Product 2|15.00|Product 2 short description | +------+---------+----------+----------+---------+-----+-------------------------------+
  • 14. © 2016 Magento, Inc. Page | 18 Select Current Version staging_update +---+-------------------+-----------------------------------+ |id | start_time|name | +---+-------------------+-----------------------------------+ |100|2016-08-31 04:05:00|Update 1 for Product 1 | +---+-------------------+-----------------------------------+ |200|2016-09-12 04:05:00|Update 2 for Product 1 | +---+-------------------+-----------------------------------+ |300|2016-09-18 04:05:00|Update 3 for Product 1 | +-----------------------+-----------------------------------+ SELECT * FROM staging_update WHERE start_time <= '2016-09-12 04:05:00' DESC LIMIT 1 2016-09-12 04:05:00 is current date and time
  • 15. © 2016 Magento, Inc. Page | 19 Select Active Updates +------+---------+----------+----------+---------+-----+-------------------------------+ |row_id|entity_id|created_in|updated_in|name |price|short_description | +------+---------+----------+----------+---------+-----+-------------------------------+ | 1| 1| 1| 999|Product 1|10.99|Product 1 short description | +------+---------+----------+----------+---------+-----+-------------------------------+ | 2| 2| 1| 200|Product 2|15.00|Product 2 short description | +------+---------+----------+----------+---------+-----+-------------------------------+ | 3| 2| 200| 300|Product 2|12.00|Product 2 short description | +------+---------+----------+----------+---------+-----+-------------------------------+ | 4| 2| 300| 999|Product 2|12.00|Product 2 new short description| +------+---------+----------+----------+---------+-----+-------------------------------+ 1 300200 999 Product 1 Product 2 Price updated Description updated SELECT * FROM catalog_product_entity WHERE created_in <= 200 AND updated_in > 200
  • 16. © 2016 Magento, Inc. Page | 20 Permanent Update catalog_product_entity +------+---------+----------+----------+---------+-----+-------------------------------+ |row_id|entity_id|created_in|updated_in|name |price|short_description | +------+---------+----------+----------+---------+-----+-------------------------------+ | 1| 1| 100| 999|Product 1|10.99|Product 1 short description | +------+---------+----------+----------+---------+-----+-------------------------------+ catalog_product_entity – after creating permanent update +------+---------+----------+----------+---------+-----+-------------------------------+ |row_id|entity_id|created_in|updated_in|name |price|short_description | +------+---------+----------+----------+---------+-----+-------------------------------+ | 1| 1| 100| 200|Product 1|10.99|Product 1 short description | +------+---------+----------+----------+---------+-----+-------------------------------+ | 2| 1| 200| 999|Product 1|12.00|Product 1 new short description| +------+---------+----------+----------+---------+-----+-------------------------------+ staging_update +---+-----------------------------------+-----------+ |id |name |is_rollback| +---+-----------------------------------+-----------+ |200|Update for Product 1 | 0| +---------------------------------------+-----------+
  • 17. © 2016 Magento, Inc. Page | 21 Temporary Update catalog_product_entity – after creating temporary update +------+---------+----------+----------+---------+-----+-------------------------------+ |row_id|entity_id|created_in|updated_in|name |price|short_description | +------+---------+----------+----------+---------+-----+-------------------------------+ | 1| 1| 100| 200|Product 1|10.99|Product 1 short description | +------+---------+----------+----------+---------+-----+-------------------------------+ | 2| 1| 200| 300|Product 1|12.00|Product 1 new short description| +------+---------+----------+----------+---------+-----+-------------------------------+ | 3| 1| 300| 999|Product 1|10.99|Product 1 short description | +------+---------+----------+----------+---------+-----+-------------------------------+ staging_update +---+-----------------------------------+-----------+ |id |name |is_rollback| +---+-----------------------------------+-----------+ |200|Update for Product 1 | 0| +---------------------------------------+-----------+ |300|Rollback for “Update for Product 1”| 1| +---------------------------------------+-----------+
  • 18. © 2016 Magento, Inc. Page | 22 Entity Manager Entity Manager Operations Main Entity EAV Attributes Relation and Extension Attributes Read, Create, Update, Delete, CheckIfExists Persistence of main entity Persistence of EAV attributes MagentoFrameworkEntityManager Handlers Persistence of related and extension attributes, delegates all work to handlers
  • 19. © 2016 Magento, Inc. Page | 23 Operations for Staging • Redefined in the DI for each stageable entity • In addition to persistence of main entity perform additional actions – Manage campaigns – Manage updates
  • 20. © 2016 Magento, Inc. Page | 24 From SQL Condition Renderer You don’t need to specify active version, MagentoStagingModelSelectFromRenderer modifies select queries and you always get active version in application. SELECT * FROM catalog_product_entity WHERE created_in <= version AND updated_in > version Load entity by sequence id (in our case, for product - entity_id), not row_id
  • 21. © 2016 Magento, Inc. Page | 25 Version Manager and Sequence Manager Version Manager – get current version in the system Sequence Manager – generates sequence id, unique identifier for all of the versions of the same entity
  • 22. © 2016 Magento, Inc. Page | 26 Cron Jobs The following actions executed by cron jobs • Apply updates – make updates visible when they become active • Move updates from one campaign to another – when you change effective dates for the campaign, Magento creates new campaign and move updates to the new campaign using cron • Clean up old updates
  • 23. © 2016 Magento, Inc. Page | 27 How Does Preview Work • Version Manager provides requested version • Calculates page data on fly, it's always up to date • Preview uses all system cache types, except FPC (Full Page Cache) • Indexes (as a database cache) also skipped at preview
  • 24. © 2016 Magento, Inc. Page | 29 Sample Module with Staging
  • 25. © 2016 Magento, Inc. Page | 30 Requirements • Need to be able display and manage blog posts • Post need to have the following fields: title, description • Module should work in both Community and Enterprise editions • Enterprise edition need to allow – Schedule updates for posts – See upcoming updates in staging dashboard – Preview changes
  • 26. © 2016 Magento, Inc. Page | 31 Persistence • Different database schema in Community and Enterprise • Different configuration for Entity Manager • Staging specific operations for Entity Manager instead of default ones
  • 27. © 2016 Magento, Inc. Page | 32 Ui • Configure and add to form reusable staging Ui components – Upcoming updates form modal and grid – Edit update form – Select update grid on edit update form – Remove form – Select update grid on remove form • Add controllers to handle save and delete operations for updates
  • 28. © 2016 Magento, Inc. Page | 33 API Provide API for managing updates interface PostStagingInterface { public function schedule(PostInterface $post, $version, $arguments = []); public function unschedule(PostInterface $post, $version); }
  • 29. © 2016 Magento, Inc. Page | 34 Resources
  • 30. © 2016 Magento, Inc. Page | 35 Resources • https://github.com/melnikovi/magento2-samples • http://devdocs.magento.com/guides/v2.1/extension-dev- guide/staging/Staging.html
  • 31. © 2016 Magento, Inc. Page | 36 Q&A
  • 32. © 2016 Magento, Inc. Page | 37 Thank You imelnikov@magento.com

Notas do Editor

  1. Hi I’m happy to see so many people in one place talking about Magento and sharing their experience. My name is Igor, I started working with Magento in 2009 as system integrator. A little more bit than a year ago I joined Magento. I live in Austin. Time to time I attend local Magento meetups. If you have any questions, don't hesitate to ask me My presentation is about staging and preview, a new Enterprise Edition feature that was added in 2.1 release
  2. Hi I’m happy to see so many people in one place talking about Magento and sharing their experience. My name is Igor, I started working with Magento in 2009 as system integrator. A little more bit than a year ago I joined Magento. I live in Austin. Time to time I attend local Magento meetups. If you have any questions, don't hesitate to ask me My presentation is about staging and preview, a new Enterprise Edition feature that was added in 2.1 release
  3. I’m going to do overview of the functionality, talk explain staging architecture and talk how you can use staging framework in your module
  4. Customers come to online stores to browse products, add products to cart, apply different types of promotions and eventually place an orders. Content is the main part of the website and every merchant constantly maintains his store, updates catalog, adds new discounts and update CMS pages and blocks to announce new products and promotions. Before Magento Enterprise Edition 2.1, one of the workflows for updating content and publishing new changes was as follows. You have separate copy of the website where you make and test changes. After you confirm everything looks good you move these chang es to the live site. Sometimes you forget to migrate something and need to troubleshoot and resolve issues on live site. Migrate everything and make sure that everything works and looks good is a lot of work.
  5. In Magento Enteprise Edition 2.1 we added a feature that allows make changes in the single place. You can preview changes before customers see them to make sure everything looks good. And you can schedule when changes will be applied. Updates being applied automatically. So, you don’t need to stay up very late until traffic goes down to roll out changes, if you have big website. You have visibility on all planned updates with campaigns dashboard. You will see on the next slides
  6. Staging and Preview is a critical new feature for Magento Enterprise Edition 2.1. Why is Staging and Preview so important? For merchants, it empowers your business teams to do more to grow sales. It makes it faster, easier and less expensive to implement new campaigns, catalog updates, promotions, and other changes that can help keep a site fresh and improve conversion rates. And it allows you to do this without having to involve their IT team! It also allows merchants to gain peace of mind that all your updates will go out at the right time and with the right customer experience because you are able to preview and test everything prior to launch. Merchandisers no longer need to go online at midnight when a new campaign is launched to confirm everything is in order. Staging and Preview also gives much better visibility into their planned updates because they can see them all in one place. By just glancing at the timeline dashboard, you can quickly see where you may need to add more promotional activities or discover instances where programs overlap in ways that are not ideal for the business. And all of these updates can be managed and previewed in the Magento Admin without impacting site performance – so shoppers have a great experience, even as merchandisers are actively setting up changes on the backend.
  7. Let’s take a closer look at what the new staging and preview has to offer. With staging merchants can create, edit, and delete updates to site content, including: products, categories, CMS content and promotions Changes can be grouped together into campaigns for easier management and merchants can schedule an unlimited number of updates. When you edit content you can see… On the right side of the screen, you can see an example of what it looks like to create and schedule a product change using the new interface. At the top of the page, you can see a list of all the scheduled changes to the product. You can easily preview or make edits to those changes, or schedule a new one. Below that section, you can access the product editing screen to make and save new updates to the page.
  8. Staging dashboards gives greater visibility into campaigns. Dashboards allow conveniently see all their campaigns in one place, in either a grid view or timeline view. This means they can quickly track start and end dates, what’s included in a campaign (like 6 product, 2 category, and 1 CMS page update), and campaign status for easy management. From the dashboards, merchants can drill in to individual campaign components to preview them, make edits, or even delete them. This consolidated view helps merchandising teams work fast and ensure they have all the information they need to create an optimal mix of campaigns and site changes. On the right of this slide, you can see a screenshot of the dashboard grid view that shows a complete list of all the active and upcoming campaigns. If you hover over the campaign objects, you can get an overview of all the components included in the campaign.
  9. In this screenshot, you can see the dashboard timeline view. It shows all current and upcoming campaigns on a timeline, making it easy for merchants to see how these changes may interact with each other and confirm that they have a coordinated plan in place. When they hover over a particular campaign, they can access additional detail, make edits, or preview the changes.
  10. Staging and preview also allows merchants to preview upcoming changes to ensure that they are delivering exactly the right experience to their shoppers. Merchants can preview changes by date or by store view. As part of the preview process, they can view all checkout pages without placing an order to ensure that promotions and price changes are being handled appropriately. They can also share links to previews so other team members can easily review and approve changes. On the slide, you can see the two different ways to preview site changes. In the screenshot on the left, merchants can choose to preview changes by store view. They can select the store view from the pull down menu and see that version displayed below. This is a great way for a merchant to see how a campaign will be implemented across different language sites, for example. In the screenshot on the right, merchants can choose to preview updates scheduled to run at a specific date and time.
  11. If you are writing extensions it is important to understand how the staging work. Especially if you want to customize stageable entity or want your extension to work with and with out staging.
  12. Let’s take a look at big picture of staging architecture. I will talk about each of the pieces on the next slides, but let's see what are the main parts first. In the heart of staging is database schema. Many of you probably already noticed that in Enterprise Edition 2.1 additional fields have been added to entity tables for which you can stage changes. To manage persistence of stageable entities was introduced Entity Manager. Entity Manager is ORM that is currently used by staging only but in the future will be recommended way to persist entities. Entity Manager uses operations to perform persistence (for instance read, create, delete). Staging has it's own implementation of these operation to perform additional logic. In staging multiple versions of the same entity are stored in the same tables. Purpose of from condition renderer and version manager is to make sure we always get active version in application. There is a Staging module, that contains business logic generic to all stageable entities. For instance, persistence logic or Ui elements. And there are also modules that add staging functionality to the original modules, for instance CatalogStaging or CmsStaging. Updates applied automatically by cron jobs. Cron jobs also perform other functions like, removing expired campaigns. I separated configurable Ui elements from Staging module to highlight that all Ui components already in place. If you adding staging functionality to your entity, you just need to configure these components and you will get fancy Ui.
  13. To describe changes to database schema I will use product entity as example, but the same applies to other entities. As I mentioned earlier, in staging we have multiple versions of the same entity, and they are stored in the the same table. When you save update, the new entity will be created in database, that will became visible at scheduled time. If you take a look at catalog_product_entity you would notice that entity_id is not unique anymore, there is a new field row_id and it’s primary key now. row_id is unique identifier of the record and entity_id is a sequence identifier. Sequence identifier is the same for all versions of the particular entity. Entity can have non stageable attributes and stageable. Stageable means that you can modify it in the future version. Attributes that are stageable linked to the main entity by row_id, attribtues that are not stageable linked by entity_id. created_in and updated_in fields specify the version for the entity. We will talk entity version and how Magento determines the version on the next slide. We have new table staging_update with campaigns. In this table stored versions for all of the entities in the system. You could assign multiple updates to the same version, in this case it will be campaign. Also, every stageable entity has sequence table to be able generate unique identifier per all version of particular entity.
  14. As I mentioned on the previous slide, created_in and updated_in fields specify version of the entity. created_in – version from which entity is active, default 1. updated_in – version to which entity is active, default 2147483647. If created_in = 1 and updated_in = 2147483647, it means entity will always be active as these are the left and right margins for the verison. As I will be talking about versions on the next few slides, lets agree that max version is 999. In the example, we have 2 entities in the table, first entity is always active. Second entity active from version 200 to 999.
  15. When you create update (or new version of the entity in other words) Magento saves information about the version to staging_update table. Then at any given time, we can get the current active version using query shown on the slide. Now we have a version and can select active updates.
  16. Here I have table with my entity. I have 2 products in the table, Product 1 and Product 2. Product 2 has 3 versions. There are changes to price and description. In every moment of time we know which version is active. To continue example from previous slide, let's say current version is 200. Using query shown at the bottom of the slide we can select all active updates. First row will be selected because it’s active from version one to infinite. Third row will be selected, because it satisfy condition by version. Magento uses the same condition to select active versions.
  17. There are permanent and temporary updates. Permanent update doesn’t have an end date, temporary update has. When you create a permanent update a new record will be added the the entity table and in staging_update table. Notice that is_rollback set to 0, it will became more clear why on the next slide.
  18. Here we create update with an end date. It’s one update, but as you can see there are 3 records in the database. After update expiries, Magento need somehow to revert the update and display previous version. When you create temporary update, one more update being created, that will take affect after temporary update expires. This update is system update (not visible in the Ui), it is copy of entity before temporary update. This system update is called rollback. is_rollback flag in system_update used to specify that this is rollback.
  19. Entity Manager is responsible for persistence of the data. Currently it’s used only for staging. We are working on improvements and in the future it will be recommended way for persisting data. Entity Manager is an entry point. It delegates all work to operations, operation use processors to persist different types of data. Entity can be extended via extension attributes and logic for saving these attributes could be different. For this purpose relation and extension attributes processor uses handlers to persist this data. It's very high level diagram, if you want to know more you can take a look at the code. Or ask me about it after presentation. All parts can be configured via DI for your entity.
  20. Create, update and delete operations overwritten for every stageable entity in order to handle persistence of updates and versions. As we have different schema in enterprise edition, configuration for stageable entities overwritten in enterprise.
  21. When you select entity by identifier or load collection of entities framework automatically checks if this entity is stageable. If yes, it automatically adds a condition to select active version of the entity. So, you always get current version when you load your entity or collection.
  22. We talked about how Magento determines current version, this is what version manager does. It determines the version. We also talked that entity could have stageable and non stageable attributes. Not stageable attributes are the same for all versions of the same item. For instance website relation for a product is not stageable. All versions of the product A, will have the same sequence id (entity_id field in the database for a product)
  23. We need somehow to apply updates when they became active. This being done by cron. Magento changes active version in the system, then reindexes affected entities (if they have indexes) and clear cache for them You could have thousands of updates grouped together in one campaign. When you change date for a campaign, you need to update all these entities. It’s a lot of update operations, Magento performs them by cron. Magento also removes old updates by cron
  24. Preview calculates data on the fly. When you load entity in the preview, Version Manager supplies version for which you want to preview the changes instead of current version. If you have some precalculated data, for instance indexes, it bypasses that storage and calculate data for selected entity. Very simple. As there is not much data to pregenerate, preview works fast.
  25. Let’s talk about main aspects of writing a module that has staging functionality
  26. We received the following requirements from product owner. … Looks like we need to create a blog module with staging functionality. I actually already did that, you will find the link to repository on the resources slide. I’m going to submit pull requests to Magento sample-modules repo after I add code coverage and go through code review process. On the next slides I will describe main parts of the module.
  27. Persistence is the main part. Module need to work in CE and EE. In EE we I created install script that alters schema As we have different schema in EE, I overrode configuration of Entity Manager for blog post I also configured Entity Manager to use operations from staging to handle persistence of blog post
  28. I didn’t create any Ui because all elements already available in Magento. I only created configuration for … Also I implemented data providers and controllers.
  29. The last important piece is module service contract to manage updates. I implemented API that allows manage updates. It is only 2 methods: schedule and unschedule updates. That is basically it. Take a look at the code on GitHub. Ask questions if something is not clear or doesn’t work, I will try to answer.