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

Aem dispatcher – tips & tricks
Aem dispatcher – tips & tricksAem dispatcher – tips & tricks
Aem dispatcher – tips & tricksAshokkumar T A
 
Tips on High Performance Server Programming
Tips on High Performance Server ProgrammingTips on High Performance Server Programming
Tips on High Performance Server ProgrammingJoshua Zhu
 
클라우드 마이그레이션 성공적인 여정, 그 중요한 시작 "Readiness Assessment (전환 준비 평가)" - 김준범, AWS Mi...
클라우드 마이그레이션 성공적인 여정, 그 중요한 시작 "Readiness Assessment (전환 준비 평가)" - 김준범, AWS Mi...클라우드 마이그레이션 성공적인 여정, 그 중요한 시작 "Readiness Assessment (전환 준비 평가)" - 김준범, AWS Mi...
클라우드 마이그레이션 성공적인 여정, 그 중요한 시작 "Readiness Assessment (전환 준비 평가)" - 김준범, AWS Mi...Amazon Web Services Korea
 
MySQL Deep dive with FusionIO
MySQL Deep dive with FusionIOMySQL Deep dive with FusionIO
MySQL Deep dive with FusionIOI Goo Lee
 
REST and RESTful Web Services
REST and RESTful Web ServicesREST and RESTful Web Services
REST and RESTful Web ServicesKasun Madusanke
 
Apache spark 소개 및 실습
Apache spark 소개 및 실습Apache spark 소개 및 실습
Apache spark 소개 및 실습동현 강
 
Oracle Service Bus & Coherence Caching Strategies
Oracle Service Bus & Coherence Caching StrategiesOracle Service Bus & Coherence Caching Strategies
Oracle Service Bus & Coherence Caching StrategiesWilliam Markito Oliveira
 
Etsy Activity Feeds Architecture
Etsy Activity Feeds ArchitectureEtsy Activity Feeds Architecture
Etsy Activity Feeds ArchitectureDan McKinley
 
Building a SIMD Supported Vectorized Native Engine for Spark SQL
Building a SIMD Supported Vectorized Native Engine for Spark SQLBuilding a SIMD Supported Vectorized Native Engine for Spark SQL
Building a SIMD Supported Vectorized Native Engine for Spark SQLDatabricks
 
Apache Spark on K8S Best Practice and Performance in the Cloud
Apache Spark on K8S Best Practice and Performance in the CloudApache Spark on K8S Best Practice and Performance in the Cloud
Apache Spark on K8S Best Practice and Performance in the CloudDatabricks
 
Nginx Internals
Nginx InternalsNginx Internals
Nginx InternalsJoshua Zhu
 
Spark shuffle introduction
Spark shuffle introductionSpark shuffle introduction
Spark shuffle introductioncolorant
 
Shuffle phase as the bottleneck in Hadoop Terasort
Shuffle phase as the bottleneck in Hadoop TerasortShuffle phase as the bottleneck in Hadoop Terasort
Shuffle phase as the bottleneck in Hadoop Terasortpramodbiligiri
 
Change Data Capture to Data Lakes Using Apache Pulsar and Apache Hudi - Pulsa...
Change Data Capture to Data Lakes Using Apache Pulsar and Apache Hudi - Pulsa...Change Data Capture to Data Lakes Using Apache Pulsar and Apache Hudi - Pulsa...
Change Data Capture to Data Lakes Using Apache Pulsar and Apache Hudi - Pulsa...StreamNative
 
Thrift vs Protocol Buffers vs Avro - Biased Comparison
Thrift vs Protocol Buffers vs Avro - Biased ComparisonThrift vs Protocol Buffers vs Avro - Biased Comparison
Thrift vs Protocol Buffers vs Avro - Biased ComparisonIgor Anishchenko
 
Hadoop Security Architecture
Hadoop Security ArchitectureHadoop Security Architecture
Hadoop Security ArchitectureOwen O'Malley
 

What's hot (20)

Apache Spark Architecture
Apache Spark ArchitectureApache Spark Architecture
Apache Spark Architecture
 
Aem dispatcher – tips & tricks
Aem dispatcher – tips & tricksAem dispatcher – tips & tricks
Aem dispatcher – tips & tricks
 
Tips on High Performance Server Programming
Tips on High Performance Server ProgrammingTips on High Performance Server Programming
Tips on High Performance Server Programming
 
클라우드 마이그레이션 성공적인 여정, 그 중요한 시작 "Readiness Assessment (전환 준비 평가)" - 김준범, AWS Mi...
클라우드 마이그레이션 성공적인 여정, 그 중요한 시작 "Readiness Assessment (전환 준비 평가)" - 김준범, AWS Mi...클라우드 마이그레이션 성공적인 여정, 그 중요한 시작 "Readiness Assessment (전환 준비 평가)" - 김준범, AWS Mi...
클라우드 마이그레이션 성공적인 여정, 그 중요한 시작 "Readiness Assessment (전환 준비 평가)" - 김준범, AWS Mi...
 
MySQL Deep dive with FusionIO
MySQL Deep dive with FusionIOMySQL Deep dive with FusionIO
MySQL Deep dive with FusionIO
 
REST and RESTful Web Services
REST and RESTful Web ServicesREST and RESTful Web Services
REST and RESTful Web Services
 
Voldemort Nosql
Voldemort NosqlVoldemort Nosql
Voldemort Nosql
 
Apache spark 소개 및 실습
Apache spark 소개 및 실습Apache spark 소개 및 실습
Apache spark 소개 및 실습
 
Web services SOAP
Web services SOAPWeb services SOAP
Web services SOAP
 
Oracle Service Bus & Coherence Caching Strategies
Oracle Service Bus & Coherence Caching StrategiesOracle Service Bus & Coherence Caching Strategies
Oracle Service Bus & Coherence Caching Strategies
 
Etsy Activity Feeds Architecture
Etsy Activity Feeds ArchitectureEtsy Activity Feeds Architecture
Etsy Activity Feeds Architecture
 
Building a SIMD Supported Vectorized Native Engine for Spark SQL
Building a SIMD Supported Vectorized Native Engine for Spark SQLBuilding a SIMD Supported Vectorized Native Engine for Spark SQL
Building a SIMD Supported Vectorized Native Engine for Spark SQL
 
Apache Spark on K8S Best Practice and Performance in the Cloud
Apache Spark on K8S Best Practice and Performance in the CloudApache Spark on K8S Best Practice and Performance in the Cloud
Apache Spark on K8S Best Practice and Performance in the Cloud
 
Nginx Internals
Nginx InternalsNginx Internals
Nginx Internals
 
Spark shuffle introduction
Spark shuffle introductionSpark shuffle introduction
Spark shuffle introduction
 
Shuffle phase as the bottleneck in Hadoop Terasort
Shuffle phase as the bottleneck in Hadoop TerasortShuffle phase as the bottleneck in Hadoop Terasort
Shuffle phase as the bottleneck in Hadoop Terasort
 
Change Data Capture to Data Lakes Using Apache Pulsar and Apache Hudi - Pulsa...
Change Data Capture to Data Lakes Using Apache Pulsar and Apache Hudi - Pulsa...Change Data Capture to Data Lakes Using Apache Pulsar and Apache Hudi - Pulsa...
Change Data Capture to Data Lakes Using Apache Pulsar and Apache Hudi - Pulsa...
 
Thrift vs Protocol Buffers vs Avro - Biased Comparison
Thrift vs Protocol Buffers vs Avro - Biased ComparisonThrift vs Protocol Buffers vs Avro - Biased Comparison
Thrift vs Protocol Buffers vs Avro - Biased Comparison
 
Jboss Tutorial Basics
Jboss Tutorial BasicsJboss Tutorial Basics
Jboss Tutorial Basics
 
Hadoop Security Architecture
Hadoop Security ArchitectureHadoop Security Architecture
Hadoop Security Architecture
 

Similar to The new repository in AEM 6

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 ?strikr .
 
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 deploymentDave Ward
 
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
 
Deploying WSO2 Middleware on Containers
Deploying WSO2 Middleware on ContainersDeploying WSO2 Middleware on Containers
Deploying WSO2 Middleware on ContainersImesh Gunaratne
 
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 ContainersLakmal Warusawithana
 
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 WORLDAleksandr Maklakov
 
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...Docker, Inc.
 
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 MongoDBMongoDB
 
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 ...Patrick Chanezon
 
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 SaaSRyan Crawford
 
DevOps Supercharged with Docker on Exadata
DevOps Supercharged with Docker on ExadataDevOps Supercharged with Docker on Exadata
DevOps Supercharged with Docker on ExadataMarketingArrowECS_CZ
 
Creating Resilient, Dockerbased Applications using Lattice
Creating Resilient, Dockerbased Applications using LatticeCreating Resilient, Dockerbased Applications using Lattice
Creating Resilient, Dockerbased Applications using LatticeDustin Ruehle
 
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 2015WaveMaker, Inc.
 
Meetup Openshift Geneva 03/10
Meetup Openshift Geneva 03/10Meetup Openshift Geneva 03/10
Meetup Openshift Geneva 03/10MagaliDavidCruz
 
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 FrankDocker, Inc.
 
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...Tokyo Azure Meetup
 
Docker and the K computer
Docker and the K computerDocker and the K computer
Docker and the K computerPeter Bryzgalov
 
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...Odinot Stanislas
 
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 OpenPOWERIndrajit Poddar
 

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
 
Deploying WSO2 Middleware on Containers
Deploying WSO2 Middleware on ContainersDeploying WSO2 Middleware on Containers
Deploying WSO2 Middleware on Containers
 
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
 
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

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 CIJukka Zitting
 
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 3Jukka Zitting
 
/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 repositoryJukka Zitting
 
MicroKernel & NodeStore
MicroKernel & NodeStoreMicroKernel & NodeStore
MicroKernel & NodeStoreJukka 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 IncubatorJukka Zitting
 
Content extraction with apache tika
Content extraction with apache tikaContent extraction with apache tika
Content extraction with apache tikaJukka Zitting
 
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 2011Jukka Zitting
 
OSGifying the repository
OSGifying the repositoryOSGifying the repository
OSGifying the repositoryJukka Zitting
 
Repository performance tuning
Repository performance tuningRepository performance tuning
Repository performance tuningJukka Zitting
 
The return of the hierarchical model
The return of the hierarchical modelThe return of the hierarchical model
The return of the hierarchical modelJukka 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 TikaJukka Zitting
 
Mime Magic With Apache Tika
Mime Magic With Apache TikaMime Magic With Apache Tika
Mime Magic With Apache TikaJukka Zitting
 
Content Storage With Apache Jackrabbit
Content Storage With Apache JackrabbitContent Storage With Apache Jackrabbit
Content Storage With Apache JackrabbitJukka Zitting
 
Introduction to JCR and Apache Jackrabbi
Introduction to JCR and Apache JackrabbiIntroduction to JCR and Apache Jackrabbi
Introduction to JCR and Apache JackrabbiJukka Zitting
 
File System On Steroids
File System On SteroidsFile System On Steroids
File System On SteroidsJukka Zitting
 
Mime Magic With Apache Tika
Mime Magic With Apache TikaMime Magic With Apache Tika
Mime Magic With Apache TikaJukka Zitting
 
Design and architecture of Jackrabbit
Design and architecture of JackrabbitDesign and architecture of Jackrabbit
Design and architecture of JackrabbitJukka Zitting
 
Content Management With Apache Jackrabbit
Content Management With Apache JackrabbitContent Management With Apache Jackrabbit
Content Management With Apache JackrabbitJukka 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

SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfkalichargn70th171
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 

Recently uploaded (20)

SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Odoo Development Company in India | Devintelle Consulting Service
Odoo Development Company in India | Devintelle Consulting ServiceOdoo Development Company in India | Devintelle Consulting Service
Odoo Development Company in India | Devintelle Consulting Service
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 

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.