Scaling Considerations
See also the 2.11 release guide for improvements included in the 2.11 release: 2.11 Commerce Release Guide - Performance Improvements Phase Iarchived
UPDATE (2/22): For the most current recommendations, please see Scaling for Flash Sales, Product Launches, and other Web Events.
Considerations already implemented
Support for PayEezy
Token now stored in database, not session
Included in 2.11 and higher (see https://aspenware.atlassian.net/l/c/VQ8Jr5CL )
Schedule Tasks replaced with Azure functions
Delete Guests, Keep Alive, email processing, order processing
Can all be delivered without a release
Requires application service restart
Administration and Fulfillment System Changes
Do not make changes in Aspenware Commerce Administration when scaled out
If an admin makes any change in Aspenware Commerce when scaled out, it will only take effect on one application service/site in real time.
The other scaled out sites will not be updated with the change until the cache expires on that machine or an action is performed on that machine that causes the cache to clear.
For example, if product inventory is cached for 5 minutes, then all instances will see updated values in 5 minutes (some could see it sooner, but all will see it after the cache expires).
Please see Static Cache Guidelines below for information about cache duration.
Some settings, such as Queue-It API key, customer ID, and secret, require an application service restart after any change (whether scaled or not). See Queue-It Release Guide
Customer profile details
If customer profile details are changed in the fulfillment system (RTP|ONE or Siriusware) while the guest is shopping, the changes won’t be seen until the cache is refreshed.
Static Cache Guidelines
24 Hours:
Product Classifications (ProductMetaDataTags) -> 24 hours
30 Minutes:
ProductAttribute -> 30 min per product
TerminalConfiguration -> 30 minutes
By Setting:
Inventory pools (Get Inventory For Month call) -> "ecommercesettings.productinventory.cachetime"
NOTE: In the 2.12 release, coming in late October, inventory will be enhanced so it is retrieved from RTP|ONE less frequently, which will improve performance for inventoried products.
Dynamic pricing tables: yieldPriceListTable, yieldProductVariantTable, yieldDaysToArrivalTable -> "ecommercesettings.dynamicpricing.cachetime"
Product Inventory (golf specific): -> "GolfSettings.ProductInventory.CacheTime"
Logical:
If catalog setting "CacheProductPrices" is set to true product prices are cached for 60 seconds
60 Minutes:
ActivityLogType
Category
Category API Call (this call loads the category pages and PDP pages)
CheckoutAttributes
Currency
Customer Household Information (name, birthdate, address, media codes, and gender, legacy contact id)
CustomerRoles
Discount
DiscountRequirement
Does a product have an attribute y/n (cached so we don't call the db to get attributes if the product doesn't have any)
Languages
LocalStringResource (language strings)
LocalizedProperty
PermissionRecord
Picture (table)
ProductCategory
ProductManufacturer
Settings
SpecificationAttribute
SpecificationAttributeOption
Store (holds url and language info)
StoreMapping
TaxAddress
TaxRate
Url RecordsWidgets