SlideShare a Scribd company logo
1 of 32
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
The New Repository
in AEM 6.0
Jukka Zitting
Senior Developer
Adobe
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Agenda
Introduction Deployment
MigrationCompatibility
Search Questions
Questions?
• ask any time for clarification
• broader questions at the end
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
CRX3 aka Oak
The new repository in AEM 6.0
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Project Oak
• Large repositories
• Distributed repositories
Scalability
• Improved performance
• Improved concurrency
Throughput
• Flat hierarchies
• Complex ACLs
Features
• Pluggable components
• OSGi-friendly
Flexibility
Part of Apache Jackrabbit
• fully open source, ALv2
• http://jackrabbit.apache.org/oak/
• one of the most active Apache
projects by commit counts
Fresh implementation of JCR 2.0
• mostly backwards compatible
• some optional features
excluded to avoid bad
performance/scalability
tradeoffs
Project timeline:
• 2008: initial design ideas
• 2011: prototyping
• 2012: project launched
• 2014: Oak 1.0 released
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Key differences
Oak
• MVCC
• tree persistence
• designed for scalability
• plugin architecture
• pluggable query indices
CRX2
• synchronous updates
• key-value persistence
• clustering as add-on
• static extension points
• one index per workspace
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Architecture
MK
Core
JCR oak-jcr
oak-core
TarMK MongoMK
JCR
• JCR API binding
• convenience and safety
features like auto-refresh and
thread-safety guards
Core
• high-level functionality
• search, versioning, security, etc.
• most features implemented as
pluggable extensions
MicroKernel
• versioned tree storage
• clustering, caching, etc.
http://www.slideshare.net/jukka/
oak-the-architecture-of-apache-
jackrabbit-3
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Deployment scenarios
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
AEM6 Author
default
TarMK
reliability
TarMK + failover
scalability
MongoMK
compatibility
CRX2
Which repository backend to use
for AEM 6.0 author deployments?
Instructions:
• start from the top
• follow lines to add
required features
• stop when happy
Note:
• each step adds complexity
• most steps can be postponed to
when actually needed
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
AEM6 Publish
Publishing
• TarMK
• farm of
replicas
User generated
content
• MongoMK
• publish
cluster
Which repository backend to use
for AEM 6.0 publish deployments?
Instructions:
• pick your main use case
Note:
• in most cases it will be possible
to switch the backend later on,
though the migration may be a
bit costly
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
TarMK
Simple default deployment option
Heavily optimized for
single-node performance
• memory mapping (64bit JVMs)
• compactness
• locality of reference
Optionally with a data store
for large binaries
• migration from crx2
• external storage (NAS/SAN, S3)
TarMK
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
TarMK + failover
For added reliability
• continuous, incremental backup
to a separate failover server
• requires an external smart
firewall, load balancer or
monitoring tool (Nagios, etc.)
for triggering the failover
TarMK
Failover
TarMK
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
MongoMK
Reliability + scalability
Any number of AEM6 cluster nodes
can share an underlying MongoDB
cluster
• standard MongoDB replication
and sharding features
• all shared state in MongoDB
• eventually consistent
mongos mongos
mongod
primary
mongod
secondary
mongod
secondary
replicas
shards
mongod
config
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Performance benchmarks (lower is better)
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Scalability benchmarks
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Content migration
https://www.flickr.com/photos/belsymington/4102783610/
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Content Migration
Migrate from CRX2 to Oak
see next slide
Do a full backup
see backup instructions
Upgrade to AEM6 with CRX2
see upgrade instructionsHow to migrate an existing
AEM 5.x deployment
to AEM 6.0 with Oak?
BTW, why the migration?
• radically different storage format
• need for an explicit decision
because of changes in
backwards compatibility
http://docs.adobe.com/content/docs
/en/aem/6-0/deploy/upgrade.html
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Content migration
Start AEM 6 with crx3
Replace repository with migrated content
segmentstore from crx2oak datastore from crx2
Create a vanilla AEM 6 repository with FileDataStore
new crx-quickstart folder
FileDataStore.cfg
SegmentNodeStoreService.cfg
Run crx2oak
Very roughly: 10 mins / GB Does not copy binaries
Stop AEM 6 with crx2
How to migrate a CRX2 repository
to CRX3 with TarMK?
Prerequisites:
• use Java 7 or higher
• first upgrade to AEM 6
For MongoMK:
• -r crx3,crx3mongo
• -Doak.mongo.uri
• DocumentNodeStoreService.cfg
• see documentation for details
For custom data stores:
• see documentation for details
http://docs.adobe.com/content/docs
/en/aem/6-0/deploy/upgrade.html
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Migration between TarMK and MongoMK
• Backend choice mostly transparent to
higher level code
• Migrating the full repository
– use backup/restore
• Migrating selected subtrees
– use content packages
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Backwards compatibility
https://www.flickr.com/photos/exfordy/344603717/
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Significant changes • See next sectionQuery
• Single-node observation mostly
unchanged
• Commit boundaries, user info, etc.
not available across cluster
Observation
• Significant changes in performance
and flexibility of access controls
• Backwards compatibility a priority,
so few direct problems expected,
but review for performance
Security
Functionality with significant
changes in implementation and
whose use in client code should be
reviewed and, if needed, adapted
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Minor differences
• Sessions not always up to
date with latest changes
• Auto-refresh feature avoids
most compatibility issues
Session
refresh
• Only referenceable nodes
have UUIDs
• Other nodes have path
identifiers
Identifiers
• Different frozen identifiers
• Updated access control
Versioning
Functional changes that in most
cases require few or no changes in
client code
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Missing features
• Only a single workspace per
repository
• Unneeded in normal AEM
deployments
Workspaces
• Only very limited support
(essentially read-only)
• Not very frequently used
Same-name
siblings
• Only “soft locking” implemented
• Use as a guideline (“I’m working
on this page”) instead of as a
strict synchronization tool
Locking
Functionality that is either
completely missing or significantly
less useful than before and thus
require significant rewrite in
affected client code
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Custom search indexes
https://www.flickr.com/photos/dwmoran/3729048272/
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Search Engine
Query
parser
• Statement parsed into an abstract
syntax tree
Index
selection
• Cost estimate from each index
• Select the index with least cost
Index
lookup
• Look up matching paths from
selected index
Filtering
• Load matching nodes
• Filter results based on ACL
restrictions and other constraints
Features not covered here:
• joins
• ordering
Features not yet available:
• facets
• Aggregates
Trouble with a query?
• try the EXPLAIN feature!
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Index definitions
Nodes under /oak:index
• Index data as hidden content or
in an external location
Creating an index:
• add a definition node
Removing an index:
• remove the node
Re-indexing:
• set reindex=true
Update frequency:
• async=“async”
Fallback:
• traversing index
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Property index
SELECT * FROM [mix:language]
WHERE [jcr:language]=?
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Constraints on multiple properties
SELECT * FROM [nt:base]
WHERE foo=? AND bar=?
• one index on foo and another on bar
• engine automatically selects best index
• other constraints applied as extra filters
• future extension: multi-property index
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Unique index
SELECT * FROM [rep:Authorizable]
WHERE [rep:principalName]=?
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Ordered index
SELECT * FROM [nt:base]
WHERE [cq:lastModified] > ?
AND [cq:lastModified] < ?
ORDER BY [cq:lastModified]
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Lucene index
SELECT * FROM [nt:base]
WHERE CONTAINS(*, ?)
Lucene index files stored
as hidden content inside
the repository!
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Questions?
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.

More Related Content

What's hot

World wide web architecture presentation
World wide web architecture presentationWorld wide web architecture presentation
World wide web architecture presentation
ImMe Khan
 
ZFS: The Last Word in Filesystems
ZFS: The Last Word in FilesystemsZFS: The Last Word in Filesystems
ZFS: The Last Word in Filesystems
Jarod Wang
 

What's hot (20)

Aem asset optimizations & best practices
Aem asset optimizations & best practicesAem asset optimizations & best practices
Aem asset optimizations & best practices
 
Build single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMBuild single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEM
 
Ajax Ppt 1
Ajax Ppt 1Ajax Ppt 1
Ajax Ppt 1
 
Apache Arrow Flight Overview
Apache Arrow Flight OverviewApache Arrow Flight Overview
Apache Arrow Flight Overview
 
Shiny in R
Shiny in RShiny in R
Shiny in R
 
Optimizing Your Amazon Redshift Cluster for Peak Performance - AWS Summit Syd...
Optimizing Your Amazon Redshift Cluster for Peak Performance - AWS Summit Syd...Optimizing Your Amazon Redshift Cluster for Peak Performance - AWS Summit Syd...
Optimizing Your Amazon Redshift Cluster for Peak Performance - AWS Summit Syd...
 
XML
XMLXML
XML
 
Ajax ppt
Ajax pptAjax ppt
Ajax ppt
 
AEM (CQ) Dispatcher Security and CDN+Browser Caching
AEM (CQ) Dispatcher Security and CDN+Browser CachingAEM (CQ) Dispatcher Security and CDN+Browser Caching
AEM (CQ) Dispatcher Security and CDN+Browser Caching
 
Enable Authentication and Authorization with Azure Active Directory and Sprin...
Enable Authentication and Authorization with Azure Active Directory and Sprin...Enable Authentication and Authorization with Azure Active Directory and Sprin...
Enable Authentication and Authorization with Azure Active Directory and Sprin...
 
Garbage collection algorithms
Garbage collection algorithmsGarbage collection algorithms
Garbage collection algorithms
 
Data Warehouse on Kubernetes: lessons from Clickhouse Operator
Data Warehouse on Kubernetes: lessons from Clickhouse OperatorData Warehouse on Kubernetes: lessons from Clickhouse Operator
Data Warehouse on Kubernetes: lessons from Clickhouse Operator
 
World wide web architecture presentation
World wide web architecture presentationWorld wide web architecture presentation
World wide web architecture presentation
 
Mysql
MysqlMysql
Mysql
 
FPGA-Based Acceleration Architecture for Spark SQL Qi Xie and Quanfu Wang
FPGA-Based Acceleration Architecture for Spark SQL Qi Xie and Quanfu Wang FPGA-Based Acceleration Architecture for Spark SQL Qi Xie and Quanfu Wang
FPGA-Based Acceleration Architecture for Spark SQL Qi Xie and Quanfu Wang
 
Web Application Introduction
Web Application  IntroductionWeb Application  Introduction
Web Application Introduction
 
Google Cloud Spanner Preview
Google Cloud Spanner PreviewGoogle Cloud Spanner Preview
Google Cloud Spanner Preview
 
MongoDB performance
MongoDB performanceMongoDB performance
MongoDB performance
 
Lessons Learned from Using Next.js in Production
Lessons Learned from Using Next.js in ProductionLessons Learned from Using Next.js in Production
Lessons Learned from Using Next.js in Production
 
ZFS: The Last Word in Filesystems
ZFS: The Last Word in FilesystemsZFS: The Last Word in Filesystems
ZFS: The Last Word in Filesystems
 

Similar to The new repository in AEM 6

Stay productive while slicing up the monolith
Stay productive while slicing up the monolith Stay productive while slicing up the monolith
Stay productive while slicing up the monolith
Markus Eisele
 

Similar to The new repository in AEM 6 (20)

from Docker to Moby and back. what changed ?
from Docker to Moby and back. what changed ?from Docker to Moby and back. what changed ?
from Docker to Moby and back. what changed ?
 
Preparing your dockerised application for production deployment
Preparing your dockerised application for production deploymentPreparing your dockerised application for production deployment
Preparing your dockerised application for production deployment
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolith Stay productive while slicing up the monolith
Stay productive while slicing up the monolith
 
WSO2ConEU 2016 Tutorial - Deploying WSO2 Middleware on Containers
WSO2ConEU 2016 Tutorial - Deploying WSO2 Middleware on ContainersWSO2ConEU 2016 Tutorial - Deploying WSO2 Middleware on Containers
WSO2ConEU 2016 Tutorial - Deploying WSO2 Middleware on Containers
 
Deploying WSO2 Middleware on Containers
Deploying WSO2 Middleware on ContainersDeploying WSO2 Middleware on Containers
Deploying WSO2 Middleware on Containers
 
HOW TO DRONE.IO IN CI/CD WORLD
HOW TO DRONE.IO IN CI/CD WORLDHOW TO DRONE.IO IN CI/CD WORLD
HOW TO DRONE.IO IN CI/CD WORLD
 
DCEU 18: Use Cases and Practical Solutions for Docker Container Storage on Sw...
DCEU 18: Use Cases and Practical Solutions for Docker Container Storage on Sw...DCEU 18: Use Cases and Practical Solutions for Docker Container Storage on Sw...
DCEU 18: Use Cases and Practical Solutions for Docker Container Storage on Sw...
 
Webinar: From Development to Production with Docker and MongoDB
Webinar: From Development to Production with Docker and MongoDBWebinar: From Development to Production with Docker and MongoDB
Webinar: From Development to Production with Docker and MongoDB
 
Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...
Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...
Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...
 
How (and why) to roll your own Docker SaaS
How (and why) to roll your own Docker SaaSHow (and why) to roll your own Docker SaaS
How (and why) to roll your own Docker SaaS
 
DevOps Supercharged with Docker on Exadata
DevOps Supercharged with Docker on ExadataDevOps Supercharged with Docker on Exadata
DevOps Supercharged with Docker on Exadata
 
Docker Kubernetes Istio
Docker Kubernetes IstioDocker Kubernetes Istio
Docker Kubernetes Istio
 
Creating Resilient, Dockerbased Applications using Lattice
Creating Resilient, Dockerbased Applications using LatticeCreating Resilient, Dockerbased Applications using Lattice
Creating Resilient, Dockerbased Applications using Lattice
 
Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015
 
Meetup Openshift Geneva 03/10
Meetup Openshift Geneva 03/10Meetup Openshift Geneva 03/10
Meetup Openshift Geneva 03/10
 
Efficient Parallel Testing with Docker by Laura Frank
Efficient Parallel Testing with Docker by Laura FrankEfficient Parallel Testing with Docker by Laura Frank
Efficient Parallel Testing with Docker by Laura Frank
 
Tokyo Azure Meetup #7 - Introduction to Serverless Architectures with Azure F...
Tokyo Azure Meetup #7 - Introduction to Serverless Architectures with Azure F...Tokyo Azure Meetup #7 - Introduction to Serverless Architectures with Azure F...
Tokyo Azure Meetup #7 - Introduction to Serverless Architectures with Azure F...
 
Docker and the K computer
Docker and the K computerDocker and the K computer
Docker and the K computer
 
Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cl...
Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cl...Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cl...
Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cl...
 
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWER
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWERContinuous Integration with Cloud Foundry Concourse and Docker on OpenPOWER
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWER
 

More from Jukka Zitting

MicroKernel & NodeStore
MicroKernel & NodeStoreMicroKernel & NodeStore
MicroKernel & NodeStore
Jukka Zitting
 
Open source masterclass - Life in the Apache Incubator
Open source masterclass - Life in the Apache IncubatorOpen source masterclass - Life in the Apache Incubator
Open source masterclass - Life in the Apache Incubator
Jukka Zitting
 
Content extraction with apache tika
Content extraction with apache tikaContent extraction with apache tika
Content extraction with apache tika
Jukka Zitting
 
The return of the hierarchical model
The return of the hierarchical modelThe return of the hierarchical model
The return of the hierarchical model
Jukka Zitting
 
Text and metadata extraction with Apache Tika
Text and metadata extraction with Apache TikaText and metadata extraction with Apache Tika
Text and metadata extraction with Apache Tika
Jukka Zitting
 
Content Storage With Apache Jackrabbit
Content Storage With Apache JackrabbitContent Storage With Apache Jackrabbit
Content Storage With Apache Jackrabbit
Jukka Zitting
 
Introduction to JCR and Apache Jackrabbi
Introduction to JCR and Apache JackrabbiIntroduction to JCR and Apache Jackrabbi
Introduction to JCR and Apache Jackrabbi
Jukka Zitting
 
Content Management With Apache Jackrabbit
Content Management With Apache JackrabbitContent Management With Apache Jackrabbit
Content Management With Apache Jackrabbit
Jukka Zitting
 

More from Jukka Zitting (20)

Apache development with GitHub and Travis CI
Apache development with GitHub and Travis CIApache development with GitHub and Travis CI
Apache development with GitHub and Travis CI
 
Oak, the architecture of Apache Jackrabbit 3
Oak, the architecture of Apache Jackrabbit 3Oak, the architecture of Apache Jackrabbit 3
Oak, the architecture of Apache Jackrabbit 3
 
/path/to/content - the Apache Jackrabbit content repository
/path/to/content - the Apache Jackrabbit content repository/path/to/content - the Apache Jackrabbit content repository
/path/to/content - the Apache Jackrabbit content repository
 
MicroKernel & NodeStore
MicroKernel & NodeStoreMicroKernel & NodeStore
MicroKernel & NodeStore
 
Open source masterclass - Life in the Apache Incubator
Open source masterclass - Life in the Apache IncubatorOpen source masterclass - Life in the Apache Incubator
Open source masterclass - Life in the Apache Incubator
 
Content extraction with apache tika
Content extraction with apache tikaContent extraction with apache tika
Content extraction with apache tika
 
Apache Jackrabbit @ Swiss Open Source Awards 2011
Apache Jackrabbit @ Swiss Open Source Awards 2011Apache Jackrabbit @ Swiss Open Source Awards 2011
Apache Jackrabbit @ Swiss Open Source Awards 2011
 
OSGifying the repository
OSGifying the repositoryOSGifying the repository
OSGifying the repository
 
Repository performance tuning
Repository performance tuningRepository performance tuning
Repository performance tuning
 
The return of the hierarchical model
The return of the hierarchical modelThe return of the hierarchical model
The return of the hierarchical model
 
Text and metadata extraction with Apache Tika
Text and metadata extraction with Apache TikaText and metadata extraction with Apache Tika
Text and metadata extraction with Apache Tika
 
Mime Magic With Apache Tika
Mime Magic With Apache TikaMime Magic With Apache Tika
Mime Magic With Apache Tika
 
NoSQL Oakland
NoSQL OaklandNoSQL Oakland
NoSQL Oakland
 
Content Storage With Apache Jackrabbit
Content Storage With Apache JackrabbitContent Storage With Apache Jackrabbit
Content Storage With Apache Jackrabbit
 
Introduction to JCR and Apache Jackrabbi
Introduction to JCR and Apache JackrabbiIntroduction to JCR and Apache Jackrabbi
Introduction to JCR and Apache Jackrabbi
 
File System On Steroids
File System On SteroidsFile System On Steroids
File System On Steroids
 
Mime Magic With Apache Tika
Mime Magic With Apache TikaMime Magic With Apache Tika
Mime Magic With Apache Tika
 
Design and architecture of Jackrabbit
Design and architecture of JackrabbitDesign and architecture of Jackrabbit
Design and architecture of Jackrabbit
 
Apache Tika
Apache TikaApache Tika
Apache Tika
 
Content Management With Apache Jackrabbit
Content Management With Apache JackrabbitContent Management With Apache Jackrabbit
Content Management With Apache Jackrabbit
 

Recently uploaded

introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
VishalKumarJha10
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 

Recently uploaded (20)

introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
 
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 

The new repository in AEM 6

  • 1. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. The New Repository in AEM 6.0 Jukka Zitting Senior Developer Adobe
  • 2. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Agenda Introduction Deployment MigrationCompatibility Search Questions Questions? • ask any time for clarification • broader questions at the end
  • 3. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. CRX3 aka Oak The new repository in AEM 6.0
  • 4. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Project Oak • Large repositories • Distributed repositories Scalability • Improved performance • Improved concurrency Throughput • Flat hierarchies • Complex ACLs Features • Pluggable components • OSGi-friendly Flexibility Part of Apache Jackrabbit • fully open source, ALv2 • http://jackrabbit.apache.org/oak/ • one of the most active Apache projects by commit counts Fresh implementation of JCR 2.0 • mostly backwards compatible • some optional features excluded to avoid bad performance/scalability tradeoffs Project timeline: • 2008: initial design ideas • 2011: prototyping • 2012: project launched • 2014: Oak 1.0 released
  • 5. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Key differences Oak • MVCC • tree persistence • designed for scalability • plugin architecture • pluggable query indices CRX2 • synchronous updates • key-value persistence • clustering as add-on • static extension points • one index per workspace
  • 6. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Architecture MK Core JCR oak-jcr oak-core TarMK MongoMK JCR • JCR API binding • convenience and safety features like auto-refresh and thread-safety guards Core • high-level functionality • search, versioning, security, etc. • most features implemented as pluggable extensions MicroKernel • versioned tree storage • clustering, caching, etc. http://www.slideshare.net/jukka/ oak-the-architecture-of-apache- jackrabbit-3
  • 7. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Deployment scenarios
  • 8. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. AEM6 Author default TarMK reliability TarMK + failover scalability MongoMK compatibility CRX2 Which repository backend to use for AEM 6.0 author deployments? Instructions: • start from the top • follow lines to add required features • stop when happy Note: • each step adds complexity • most steps can be postponed to when actually needed
  • 9. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. AEM6 Publish Publishing • TarMK • farm of replicas User generated content • MongoMK • publish cluster Which repository backend to use for AEM 6.0 publish deployments? Instructions: • pick your main use case Note: • in most cases it will be possible to switch the backend later on, though the migration may be a bit costly
  • 10. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. TarMK Simple default deployment option Heavily optimized for single-node performance • memory mapping (64bit JVMs) • compactness • locality of reference Optionally with a data store for large binaries • migration from crx2 • external storage (NAS/SAN, S3) TarMK
  • 11. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. TarMK + failover For added reliability • continuous, incremental backup to a separate failover server • requires an external smart firewall, load balancer or monitoring tool (Nagios, etc.) for triggering the failover TarMK Failover TarMK
  • 12. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. MongoMK Reliability + scalability Any number of AEM6 cluster nodes can share an underlying MongoDB cluster • standard MongoDB replication and sharding features • all shared state in MongoDB • eventually consistent mongos mongos mongod primary mongod secondary mongod secondary replicas shards mongod config
  • 13. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Performance benchmarks (lower is better)
  • 14. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Scalability benchmarks
  • 15. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Content migration https://www.flickr.com/photos/belsymington/4102783610/
  • 16. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Content Migration Migrate from CRX2 to Oak see next slide Do a full backup see backup instructions Upgrade to AEM6 with CRX2 see upgrade instructionsHow to migrate an existing AEM 5.x deployment to AEM 6.0 with Oak? BTW, why the migration? • radically different storage format • need for an explicit decision because of changes in backwards compatibility http://docs.adobe.com/content/docs /en/aem/6-0/deploy/upgrade.html
  • 17. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Content migration Start AEM 6 with crx3 Replace repository with migrated content segmentstore from crx2oak datastore from crx2 Create a vanilla AEM 6 repository with FileDataStore new crx-quickstart folder FileDataStore.cfg SegmentNodeStoreService.cfg Run crx2oak Very roughly: 10 mins / GB Does not copy binaries Stop AEM 6 with crx2 How to migrate a CRX2 repository to CRX3 with TarMK? Prerequisites: • use Java 7 or higher • first upgrade to AEM 6 For MongoMK: • -r crx3,crx3mongo • -Doak.mongo.uri • DocumentNodeStoreService.cfg • see documentation for details For custom data stores: • see documentation for details http://docs.adobe.com/content/docs /en/aem/6-0/deploy/upgrade.html
  • 18. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Migration between TarMK and MongoMK • Backend choice mostly transparent to higher level code • Migrating the full repository – use backup/restore • Migrating selected subtrees – use content packages
  • 19. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Backwards compatibility https://www.flickr.com/photos/exfordy/344603717/
  • 20. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Significant changes • See next sectionQuery • Single-node observation mostly unchanged • Commit boundaries, user info, etc. not available across cluster Observation • Significant changes in performance and flexibility of access controls • Backwards compatibility a priority, so few direct problems expected, but review for performance Security Functionality with significant changes in implementation and whose use in client code should be reviewed and, if needed, adapted
  • 21. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Minor differences • Sessions not always up to date with latest changes • Auto-refresh feature avoids most compatibility issues Session refresh • Only referenceable nodes have UUIDs • Other nodes have path identifiers Identifiers • Different frozen identifiers • Updated access control Versioning Functional changes that in most cases require few or no changes in client code
  • 22. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Missing features • Only a single workspace per repository • Unneeded in normal AEM deployments Workspaces • Only very limited support (essentially read-only) • Not very frequently used Same-name siblings • Only “soft locking” implemented • Use as a guideline (“I’m working on this page”) instead of as a strict synchronization tool Locking Functionality that is either completely missing or significantly less useful than before and thus require significant rewrite in affected client code
  • 23. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Custom search indexes https://www.flickr.com/photos/dwmoran/3729048272/
  • 24. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Search Engine Query parser • Statement parsed into an abstract syntax tree Index selection • Cost estimate from each index • Select the index with least cost Index lookup • Look up matching paths from selected index Filtering • Load matching nodes • Filter results based on ACL restrictions and other constraints Features not covered here: • joins • ordering Features not yet available: • facets • Aggregates Trouble with a query? • try the EXPLAIN feature!
  • 25. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Index definitions Nodes under /oak:index • Index data as hidden content or in an external location Creating an index: • add a definition node Removing an index: • remove the node Re-indexing: • set reindex=true Update frequency: • async=“async” Fallback: • traversing index
  • 26. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Property index SELECT * FROM [mix:language] WHERE [jcr:language]=?
  • 27. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Constraints on multiple properties SELECT * FROM [nt:base] WHERE foo=? AND bar=? • one index on foo and another on bar • engine automatically selects best index • other constraints applied as extra filters • future extension: multi-property index
  • 28. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Unique index SELECT * FROM [rep:Authorizable] WHERE [rep:principalName]=?
  • 29. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Ordered index SELECT * FROM [nt:base] WHERE [cq:lastModified] > ? AND [cq:lastModified] < ? ORDER BY [cq:lastModified]
  • 30. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Lucene index SELECT * FROM [nt:base] WHERE CONTAINS(*, ?) Lucene index files stored as hidden content inside the repository!
  • 31. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Questions?
  • 32. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc.