33
© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Condential. Michael Marth | Senior Engineering Manager | @michaelmarth Scaling CQ5

Scaling CQ5

  • Upload
    cqcon

  • View
    2.771

  • Download
    10

Embed Size (px)

DESCRIPTION

Presentation “Scaling CQ5“ by Michael Marth at CQCON2013 in Basel on 19 and 20 June 2013.

Citation preview

Page 1: Scaling CQ5

© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Con!dential.

Michael Marth | Senior Engineering Manager | @michaelmarthScaling CQ5

Page 2: Scaling CQ5

© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Con!dential. 2

Michael

§ Engineering manager in R&D§ Responsible for Granite (repo, CQSE, etc)§ Many years in the !eld§ Wears shorts today

Page 3: Scaling CQ5

© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Con!dential.

Escape the soup coma, let’s make this a workshop session

3

Soup Coma

Page 4: Scaling CQ5

© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Con!dential.

Scalability?

§ Performance vs Scalability§ Performance: “it takes X secs to do Y”§ Scalability: “it takes X secs to do Y simultaneously Z times”

§ Yet, performance can help with scalability§ !is talk

§ is about horizontal scalability (vertical scaling is trivial)§ is about pre-Oak scalability pa"erns

§ !e content will soon be documented in docs.day.com

4

Page 5: Scaling CQ5

© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Con!dential.

Scaling problems are good problems to have (you are in demand!)

5

Text

opportunities

Page 6: Scaling CQ5

© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Con!dential.

CQ5 Scaling Pa"erns

1. High Volume and High Performance Delivery

2. High Frequency Input Feed

3. Many Editors

4. High Processing Input Feed

5. High Volume Input Feed

6. Geo-distributed Editors

7. Many DAM assets

8. Geo-distributed disaster recovery

6

Page 7: Scaling CQ5

© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Con!dential.

High Volume and High Performance Delivery - Description

§ Use Case:

§ High traffic site (100m impressions/d)

§ Examples: adobe.com

§ Limiting factor

§ CPU on publish

7

Page 8: Scaling CQ5

© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Con!dential.

High Volume and High Performance Delivery - Solution Pa"ern

8

§ Leverage dispatcher caching as much as possible

§ in latest dispatcher: single-page dispatcher $ush and scripted $ushing, use to cache/$ush content in dispatcher

§ SSI and/or client-side for personalized content

§ Selectors for query caching

§ CDN with short TTL

P

P Disp

Disp

LoadBalancer

round robin

CDN Client

Page 9: Scaling CQ5

© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Con!dential.

High Volume and High Performance Delivery

§ Notes

§ Related to rendering performance, see also

§ CQ performance pa"erns (use CQ timing component, prefer tree walking over JCR queries, use ClientLibraryManager to concat and minify JS, etc, see [1])

§ Generic performance pa"erns (reduce requests with e.g. css sprites, gzip responses, put JS calls at bo"om of HTML, etc, see [2])

§ Anti-Pa"ern

§ Adding publishers before leveraging caching

[1] h"p://dev.day.com/docs/en/cq/current/deploying/performance.html

[2] h"p://shop.oreilly.com/product/9780596529307.do

9

Page 10: Scaling CQ5

© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Con!dential.

High Frequency Input Feed - Description

§ Use Case: news feed import (moderate amounts, but constant updates)

§ Limiting factor

§ Dispatcher cache invalidation

§ %erefore actual limiting factor is CPU on publish

10

Page 11: Scaling CQ5

© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Con!dential.

High Frequency Input Feed - Solution Pa"ern 1

11

§ Set up content structure so that other pages do not get invalidated on dispatcher cache

§ if possible: highly volatile content e.g. in /etc

§ with latest dispatcher: single-page $ush possible

§ Separate replication queue (so that main queue is not blocked)

Aediting

importprocess

Backend

PreplicationDisp

$ush

Page 12: Scaling CQ5

© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Con!dential.

High Frequency Input Feed - Solution Pa"ern 2

§ Set up content structure so that other pages do not get invalidated on dispatcher cache

§ as previous pa"ern

§ Import directly into Publish (no replication necessary)

A

importprocess

Backend

P Disp$ush

importprocess

Backend

Page 13: Scaling CQ5

© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Con!dential.

High Frequency Input Feed

§ Questions to ask

§ Human !ltering/processing needed? %en imports should be on author and replicated.

§ If no: is the use case OK with different states on publish?

§ if yes: no replication needed, then pa"ern 2 is preferable

13

Page 14: Scaling CQ5

© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Con!dential.

Many Editors - Description

§ Use Case:

§ News or media portal

§ >50 editors editing content concurrently

§ Limiting factor

§ Depends on what do the editors actually do:

§ Heavyweight editing, e.g. MSM rollouts, starting WFs: repository- or CPU-bound

§ Lightweight editing: CPU bound

14

Page 15: Scaling CQ5

© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Con!dential.

Many Editors - Solution Pa"ern 1

15

§ Sharding: split up different web sites / parts of web sites onto separate author instances

§ Publish instances are shared

Asite 3

editing P

Asite 2

editing P

Asite 1

editing Preplication

Page 16: Scaling CQ5

© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Con!dential.

Many Editors - Solution Pa"ern 2

16

§ Sharding: split up different web sites into separate author instances, but replicate into one main author, e.g. for shared work$ow processes

§ Practical if the shards do not need to share content.

§ Cross-replication can be done, but will be hard to keep consistent

§ Publish instances are shared

Asite 3

editing

Asite 2

editing P

Asite 1

editing

replication A

Page 17: Scaling CQ5

© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Con!dential.

Many Editors

§ Questions to ask

§ What do the editors actually do?

§ Notes

§ Author dispatcher helps to reduce CPU load on author instances

§ Author cluster instead of sharding will mitigate the problem if CPU-bound

17

Page 18: Scaling CQ5

© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Con!dential.

High Processing Input Feed - Description

18

§ Use Case:

§ DAM import of images

§ 1000 images at once

§ happens regularly

§ other editors are editing content at the same time

§ Limiting factor

§ CPU, memory on author

Page 19: Scaling CQ5

© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Con!dential.

High Processing Input Feed - Solution Pa"ern 1

19

§ Separate processing instances from human editing instances

§ Offload 1 Work$ow step, e.g. thumbnail generation from PSDs

§ %ere can be more than 1 processing instance

§ Replicate back and forth in packages if possible

§ CQ5.6.1: share DS between instances and replicate without binary, offloading framework

A

ProcessingAuthor

ProcessingAuthor

editingwork$owsrunning

offload CPU-intensiveWF stepsby replication

work$ow stepsrunning, replicating results back

Page 20: Scaling CQ5

© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Con!dential.

High Processing Input Feed - Solution Pa"ern 2

20

§ Separate pre-processing instances for uploading

§ %ere can be more than 1 pre-processing instance

§ CQ5.6.1: share DS between instances and replicate without binary

A

ProcessingAuthor

editing

work$owsrunning

replication

imageupload

Page 21: Scaling CQ5

© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Con!dential.

High Processing Input Feed

21

§ Notes

§ Author cluster can help mitigate the problem, but editors must edit content on slave

§ %ro"ling WFs or execution during night can help mitigate the problem

§ If the import is limited by CPU needed image conversion consider using ImageMagick rather than Java

Page 22: Scaling CQ5

© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Con!dential.

High Volume Input Feed - Description

22

§ Use Case:

§ Product data import

§ 1 million products, 10000 modi!cations/day

§ Limiting factor

§ Writing to the repository

§ reads are also blocked

§ Potentially (to a lesser degree) in case repository scans are needed to create diffs:

§ CPU for calculating diffs

§ Repository read caches get $ushed

Page 23: Scaling CQ5

© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Con!dential.

High Volume Input Feed - Solution Pa"ern

23

§ Separate import instance to process imports, partition if possible

§ only useful if import requires signi!cant CPU (e.g. no diff delivered)

§ Replicate to author

§ Replicate as package

§ CQ5.6.1: share DS between instances and replicate without binary

§ Replication to publish as package if possible

A

ImportProcessing

Author

editing

import intorepository

replication of diff

importprocessBackend

Preplicationof diff

Page 24: Scaling CQ5

© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Con!dential.

High Volume Input Feed

24

§ Questions to ask

§ Can the import be thro"led? Most problems get much less severe.

§ Do all changes get on publish?

§ Notes

§ Use batch saves (1000 nodes) on import (reduces overhead in indexing, etc and speeds up the import overall)

§ Import as nt:unstructured rather cq:Page if possible

§ If not: switch off heavy listeners (e.g. ContentSync) or use the JcrObservation%ro"le

§ Anti-Pa"ern

§ Usage of network disc (usually have high latency)

§ Replicating to publish through same replication queue as editorial content

§ Might heavily delay important editorial changes from publication

§ Using PageManager (cannot operate in batch mode, unless you use 5.6.1 where that option was added)

Page 25: Scaling CQ5

© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Con!dential.

Geo-distributed Editors

25

§ Use Case:

§ Editors located in different geos (US, EMEA, APAC)

§ Limiting factor

§ Bandwidth between editor location and author server location

Page 26: Scaling CQ5

§ Use Dispatcher in front of Author

§ Guiding principle: limit traffic between Dispatcher and editor location.

§ gzip traffic

§ Use Client Library Manager to minimize traffic

§ minify, concat and gzip all client libraries

§ Cache all responses that are not under /content in

§ Editor’s browser cache

§ Potentially also dispatcher cache

© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Con!dential.

Geo-distributed Editors - Solution Pa"ern

26

ADisp

cachecache

minimize requestsgzip responses

Page 27: Scaling CQ5

© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Con!dential.

Geo-distributed Editors

§ Notes

§ In extreme cases consider writing templates that treat author renditions differently from publish renditions (especially reducing the number of necessary requests, e.g. by dropping requests to tracking servers, external CSS, etc)

§ Or use Scaffolding for editing

27

Page 28: Scaling CQ5

© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Con!dential.

Many DAM Assets

§ Use Case:

§ Many assets (>5Mio) in DAM

§ Limiting factor

§ Disc space

28

Page 29: Scaling CQ5

© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Con!dential.

Many DAM Assets - Solution Pa"ern

29

§ Split physical storage of data store and repository tar !les

§ tar !les need disc with very low latency

§ for data store high latency is acceptable

§ Locate data store on cheap discs remotely (NAS, S3)

§ Share data store between instances

§ In 5.6.1: use binary-less replication in case of shared DS to minimize network traffic

Repository

tar DS

local S3

Page 30: Scaling CQ5

© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Con!dential.

Many DAM Assets

§ Notes

§ In case of shared DS: the DS garbage collection needs to be run on an instance that keeps references to all assets in DS

§ In 5.6.1: huge performance improvements (~10x or more) for DS GC when the persistence is tar-based

30

Page 31: Scaling CQ5

© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Con!dential.

Geo-distributed disaster recovery

31

§ Use Case:

§ Data centers located in different geos

§ One DC shall act as failover for author

§ Limiting factor

§ Latency between DCs (in very low latency cases CRX clustering could be used)

Page 32: Scaling CQ5

§ Use !le level tools like rysnc to create replicas in 2nd DC

§ Hourly: sync data store

§ %is is usually the most time consuming part

§ Sync can be performed anytime, due to add-only data store architecture

§ Nightly:

§ Create incremental backup into !lesystem on 1st DC to get consistent state of !les

§ Rsync backup to 2nd DC. For that period CQ on 2nd DC must not be running.

© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Con!dential.

Geo-distributed disaster recovery - Solution Pa"ern

32

Page 33: Scaling CQ5

© 2012 Adobe Systems Incorporated. All Rights Reserved. Adobe Con!dential.