+ All Categories
Home > Documents > APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS...

APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS...

Date post: 08-Jun-2020
Category:
Upload: others
View: 1 times
Download: 0 times
Share this document with a friend
57
APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,
Transcript
Page 1: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

APACHE SLING & FRIENDS TECH MEETUP10-12 SEPTEMBER 2018

7 Ways to Break AEMGeorg Henzler,

Page 2: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

2

Intro

Page 3: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

What can go wrong...

3

▪ Drag'n'drop in CRXDE▪ Deactivated Site (yes site, not page)

▪ Start AEM with wrong user

▪Performance

Page 4: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Performance Aspects

4

▪ Browser vs. Server Performance▪ UI Readiness▪ Production vs. Staging Load▪ Response Times vs. Throughput

Page 5: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Performance Aspects

5

Page 6: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Approach

6

▪ Vanilla AEM ▪ Groovy Console to create/run test setups▪ Netcentric AC Tool for groups and permissions

▪ Tools▪ Chrome Headless▪ Visual VM▪ JMeter▪ Threads Health Check

Page 7: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Introducing….

7

Breaklets

Page 8: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Breaklets

9

▪ … iteratively make things worse▪ … run until AEM breaks▪ until threshold is reached

▪ until R.I.P▪ until stopped "while in panic"

▪ ...are scripted

Page 9: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

10

Maximum Child Nodes

Page 10: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Maximum Child Nodes - Scenario

11

▪ Iteratively, all under one parent node▪ Create 1000 nodes

▪ Save them

▪ Reorder 1000 nodes

▪ Save order

▪ Traverse nodes

▪ Query 10% of the nodes

▪ Show all current nodes in CRXDE

Page 11: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

12

Demo

Page 12: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Maximum Child Nodes

13

nt:unstructured

With CRXDE

~8k nodes

< 1min

Page 13: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Maximum Child Nodes

14

nt:unstructured

With Composum

~8k nodes

< 10sec

Page 14: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Maximum Child Nodes

15

nt:unstructured

Without UI

~80k nodes

< 8sec

Page 15: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Maximum Child Nodes

16

oak:Unstructured

Without UI

~200k nodes

< 1sec

Page 16: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Maximum Child Nodes

17

Page 17: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Maximum Child Nodes

18

nt:unstructured

waiting for events

~15k nodes

< 1min

Page 18: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

19

Changeset Single Commit

Page 19: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Large Changeset Single Commit

20

▪ Iteratively▪ Create a root node /content/nodetest

▪ Create 1000 * iteration no nodes underneath

▪ Save session

▪ Wait for all change listener events

▪ Delete root node

▪ Save session

▪ Wait for delete event

Page 20: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Large Changeset Single Commit

21

Page 21: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Large Changeset Single Commit

22

Page 22: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Large Changeset Single Commit

23

~70k nodes

< 1 min

Page 23: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

24

Maximum Components on Page

Page 24: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Maximum Components on Page

25

▪ Iteratively on one page▪ Create 50 component nodes in responsive grid

▪ text component

▪ Save them

▪ Open page in editor (browser)

▪ edit the last component on page

▪ save

Page 25: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Maximum Components on Page

26

PID org.apache.sling.engine.impl.SlingMainServlet

Property "sling.max.calls" (default 1000)

Page 26: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Maximum Components on Page

27

~2k components

< 1 min for simple edit

Page 27: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

28

Deep Group Hierarchies

Page 28: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Deep Group Hierarchies

29

▪ Base▪ 50 Text Components on one page

▪ Breaklet User

▪ Iteratively ▪ Create 10 more groups per iteration to allow user to text comp

▪ unique groups are created per component to depth level

▪ each iteration creates 10 x 50 groups

Page 29: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Deep Group Hierarchies

30

~200,000 groups

~400 levels

50 ACLs

< 10 sec render time

Page 30: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Deep Group Hierarchies

31

~200,000 groups

~50 groups relevant

< 100ms render time

Page 31: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Deep Group Hierarchies

32

▪ Base▪ 10 Text Components on one page

▪ Breaklet User 1 (all groups) & User 2 (10% of groups)

▪ Iteratively ▪ Create 5 components with with 5 fragment groups (5x5=25)

▪ unique groups per component

▪ Now, each group has an ACE entry in content

Page 32: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Deep Group Hierarchies

33

~2000 groups

~2000 ACLs

~15s/1.5s render time

~ 4s/0.5s render time *)

*) AC Tool virtual group

Page 33: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

34

Hostile Health Check

Page 34: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Hostile Health Check - Scenario

35

Page 35: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Hostile Health Check - Scenario

36

Page 36: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Hostile Health Check

37

▪ URL /system/health/dashboard.html

▪ JMeter

▪ 7 Threads / 100 Threads

▪ 10000 calls

▪ all checks green

▪ Add Hostile Health Check

▪ run again

Page 37: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Hostile Health Check

38

~2000 req / sec

~50 req / sec during cache fill every 2 sec

Page 38: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Hostile Health Check

39

~5ms response time for cached results

~200ms response time for cache fill

Page 39: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Hostile Health Check

40

2 sec timeout (default)

2 sec cache time

(default)

Page 40: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Hostile Health Check

41

~20 req / sec

~100 req / sec when cached

Page 41: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

42

Resource Type Inheritance Levels

Page 42: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Max. Resource Type Inheritance Levels

43

▪ Iteratively▪ Ensure page /content/test exists

▪ with responsive grid comp and 50 distinct components

▪ each of the 50 components has their own hierarchy

▪ each iteration adds 10 hierarchy levels to all 50 components

▪ each of the 50 compoents uses exactly one script of each inheritance level

Page 43: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Max. Resource Type Inheritance Levels

44

Page 44: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Max. Resource Type Inheritance Levels

45

~200 inheritance levels

< 1 min first load

< 40 sec consecutive loads

Page 45: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Max. Resource Type Inheritance Levels

46

once cached:

~30 inheritance levels

< 1sec

Page 46: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Max. Resource Type Inheritance Levels

47

PID org.apache.sling.servlets.resolver.SlingServletResolver

Property "servletresolver.cacheSize" (default 1000)

Page 47: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Max. Resource Type Inheritance Levels

48

~20 inheritance levels

< 500ms

Page 48: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Max. Resource Type Inheritance Levels

49

~20 inheritance levels

< 500ms

Page 49: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Max. Resource Type Inheritance Levels

50

… rather use composition!

Page 50: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

51

Conclusion

Page 51: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Conclusion

52

Page 52: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Test System Specs

53

▪ AEM 6.4 / OAK 1.8.3▪ 4GB JVM Heap (JDK 1.8)

Page 53: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Conclusion

54

▪ The Truth is better than Myths▪ AEM mostly behaves "linear" to the task given

▪ Bottleneck can be both server-side or Web UI

▪ Web UI testing 2018 is a breeze

▪ Breaklets...

▪ quick to write, but there are infinite test scenarios

▪ run on infrastructure comparable to production

▪ watch the log file closely for warnings

▪ fill the gap between "speculating" and prototyping

Page 54: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Conclusion

55

Usability(Responsive & Appropriate UI for all users)

Good Software & Information Design(Prototyping)

Knowledge what works(No myths)

Page 55: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

References

56

Breaklets https://gist.github.com/ghenzler/e4a924bc29a119a96d5abe1fa99122be#file-breaklets-readme-md

Groovy Console https://github.com/OlsonDigital/aem-groovy-console

Puppeteer https://github.com/GoogleChrome/puppeteer

AC Tool https://github.com/Netcentric/accesscontroltool

… … … … … … … ...

Page 56: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

57

Maximum Workflow Instances / Live Copies

Page 57: APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 · 2019-12-13 · APACHE SLING & FRIENDS TECH MEETUP 10-12 SEPTEMBER 2018 7 Ways to Break AEM Georg Henzler,

Maximum Workflow Instances / Live Copies

58

Homework for you!


Recommended