the alfresco ecm 1 billion document benchmark on aws and aurora - benchmark details and scalability...

22
Alfresco 1 Billion document benchmark Infrastructure, use cases and performance considerations for an Enterprise Grade ECM implementation

Upload: gabriele-columbro

Post on 16-Apr-2017

7.184 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: The Alfresco ECM 1 Billion Document Benchmark on AWS and Aurora  - Benchmark details and scalability recommendations

Alfresco 1 Billion document benchmarkInfrastructure, use cases and performance considerations for

an Enterprise Grade ECM implementation

Page 2: The Alfresco ECM 1 Billion Document Benchmark on AWS and Aurora  - Benchmark details and scalability recommendations

Gabriele ColumbroSr. Product Manager, Core Platform / API

Page 3: The Alfresco ECM 1 Billion Document Benchmark on AWS and Aurora  - Benchmark details and scalability recommendations

ECM Use cases

5.1 Disclaimer

The following information is based on an development version of the unreleased Alfresco 5.1.Performance data is provisional and subtle to change based on testing the final Alfresco 5.1 release.

Page 4: The Alfresco ECM 1 Billion Document Benchmark on AWS and Aurora  - Benchmark details and scalability recommendations

4

Alfresco reaches the 1B document mark on AWS• 10 Alfresco 5.1 nodes, 20 Solr 4 nodes in Sharding mode, 1 Aurora DB • Loaded 1B documents at 1000 docs / sec – 86M per day• Indexed 1B documents in 5 days – > 2000 docs / sec• No degradation in ingestion or content access upon content growth• Tested up to 500 Share concurrent users and 200 CMIS concurrent sessions

“We applaud Alfresco’s ability to leverage Amazon Aurora to address business requirements of the

modern digital enterprise, and enable a more agile and cost-effective content deployments.”

Anurag Gupta, Vice President, Database Services, Amazon Web Services, Inc. – 2015 October 6th

Highlights

Press release

Page 5: The Alfresco ECM 1 Billion Document Benchmark on AWS and Aurora  - Benchmark details and scalability recommendations

5

ECM Use cases

Systems of record at scale

Enterprise Document Library

Loans & Policies

Claims & Case Processing

Transaction & Logistics Records

Research & Analysis

Real-time Video

Internet of Things

Medical & Personnel Records

Government Records & Archives

Discovery & Litigation

Page 6: The Alfresco ECM 1 Billion Document Benchmark on AWS and Aurora  - Benchmark details and scalability recommendations

ECM Use cases

Systems of engagement use cases at scale

Document Library

Image Management

File Sync & Share

Search & Retrieval

Business Process

Management

Records Management

Case Management

Media Management

Information Archiving

Page 7: The Alfresco ECM 1 Billion Document Benchmark on AWS and Aurora  - Benchmark details and scalability recommendations

Accelerate user adoption

Freedom to innovate

SIMPLE

SMART

OPEN

Drive digital transformation

Connect people, content, and processes to accelerate digital transformation

ECM BPM

Page 9: The Alfresco ECM 1 Billion Document Benchmark on AWS and Aurora  - Benchmark details and scalability recommendations

9

Divide et impera

Decomposing the problem of Alfresco Scalability

Alfresco Index Server

Alfresco Repository

Search ServicesContent Services

Database Storage Network

Customizations / Applications

Share or Bespoke

Page 10: The Alfresco ECM 1 Billion Document Benchmark on AWS and Aurora  - Benchmark details and scalability recommendations

10

Sizing Area Collaboration Headless Content Platform

Search Search is usually just a small portion of the operations percentage (around 10%)

In most of the cases especially for very large repositories there wont be full text indexing/search.

Permissions Permission control happens at Alfresco layer. User authority structure will be complex. With users belonging to many groups in average.

Most of the times permission control is happening elsewhere. Authority structures will be in general fairly simple.

Ingestion Ingestion rates are usually not important uploads are normally manually driven.

Injection rates are usually very important. Dedicated layers/nodes may be needed.

Repository Size

Repository Sizes are usually of small (hundreds of thousands) or intermediate (millions) size.

Repository sizes are usually quite big (tens of millions to billions).

Customization

Level of customization will vary but in most cases will concentrate at the front end (Share).

Customizations are usually important, typically on the repository side. Custom solution code may live external to Alfresco by using CMIS, public APIs, etc.

Architecture Architecture options will be in general the standard ones provided by Alfresco (cluster, dedicated index/transformation layers, etc).

Architecture options may vary considerably with more high scale and availability solutions being used: proxies, cluster and un-clustered layers, multi-repositories options of Alfresco repository, etc.

Concurrency Concurrent users will possibly be many, with average and peak values important to be considered.

Concurrent users will be in general few but think times will be much smaller than for collaboration

Interfaces You may expect mostly the Share interface to be used, but also it will be very common SPP, CIFS, IMAP, WebDAV and other public interfaces (CMIS) for other interfaces (mobile).

Most of the load should concentrate around public API (CMIS) and custom developed REST API (Webscripts).

Batch Batch operations should mostly be around human interaction workflows and the standard Alfresco jobs.

Batch operations will usually have a considerable importance, including content injection processes (bulk import), custom workflows and scheduled jobs.

ECM Scenarios

ECM is no one size fits all.

Page 11: The Alfresco ECM 1 Billion Document Benchmark on AWS and Aurora  - Benchmark details and scalability recommendations

11

Bechmark

Results Introducing the 1B documents benchmark• Repository Layout

– 10k sites; 2 levels deep; 10 folders per level; 1000 files per folder– 100 kb avg plain text files with varying content complexity (for

indexing purpose)– Default content model

• Scenarios– Share interaction (Enterprise Collaboration)

• First focused on the Repository, no Search• Then with Search, including Solr4 Sharding

– CMIS interaction (Headless Content Platform)• Transactional Metadata Query testing

• AWS Fully cloud environment (provisioned by chef-alfresco)– Alfresco 5.1 + Share 5.1 (development code, unreleased)– AWS EC2 / Aurora (Mysql compatible and Alfresco supported)– Ephemeral for Index storage / EBS for content storage (spoofed)

Page 12: The Alfresco ECM 1 Billion Document Benchmark on AWS and Aurora  - Benchmark details and scalability recommendations

12

Cloud stack1.2B documents execution environment

UI Test x 20 m3.2xlarge Simulate 500 Users• Selenium / Firefox• 1 hour constant load• 10 sec think time

UI Test UI Test

Alfresco Alfresco Alfresco x 10 c3.2xlarge Alfresco Repo and Share

Solr x 20 m3.2xlarge Solr Solr

Aurora x 1 db.r3.xlarge

ELB

Sharded Solr 4

sites folders files transactions dbSize GB

10,804 1,168,206 1,168,206,000 15,475,064 3,185

EBSIngestion (in place)

EBS

Page 13: The Alfresco ECM 1 Billion Document Benchmark on AWS and Aurora  - Benchmark details and scalability recommendations

13

Cloud scale testing

How did we test it?

• Repository Loaded using bm-dataload (with file spoofing option)

• 1B document benchmark AKA BM-0004 - Testing Repository Limits base on bm-share

• Scalability & Sizing testing on Enterprise Collaboration Scenario (bm-share) and Headless Content Platform (bm-cmis)

https://wiki.alfresco.com/wiki/Benchmark_Testing_with_Alfrescohttps://github.com/derekhulley/alfresco-benchmark

Benchmark Server

Tomcat 7

Rest API

MongoDBConfig Data

Services

MongoDBTest Data

UI

Benchmark Driver (xN)Benchmark Driver (xN)Benchmark Driver

Tomcat 7 Extras(Selenium)

Servers / APIs Servers / APIs

Load Balancer

Servers / APIs

Test

Services

Rest API

Page 14: The Alfresco ECM 1 Billion Document Benchmark on AWS and Aurora  - Benchmark details and scalability recommendations

14

Benchmark

Results Getting to 1B documents

• Ingestion– With 10 nodes, 1000 documents / second (3 million per hour, 86M per

day, 12 days for the full repo) – spoofed content comparable to in place BFSIT loading

– Load rate consistent even beyond 1B documents– Throughput grew linearly by adding ingestion nodes (100 docs / sec

per node)– Adding additional loading nodes likely to raise ingestion throughput –

as Aurora was only at 50% CPU• Indexing

– Index distributed over 20 Alfresco Index Servers, sharding on ACLs (good for site based repository), with Alfresco dedicated tracking instance

– Each shard holds approx (in excess of) 50M nodes – Re-Indexing completed in about 5 days (each node tracks a sub-set of

the 1B)– Dynamic sharding autoconfiguration (5.1 feature)

NOTE: requires Alfresco tracking nodes to be in the cluster

Page 15: The Alfresco ECM 1 Billion Document Benchmark on AWS and Aurora  - Benchmark details and scalability recommendations

1515

Bechmark Results

Testing Alfresco on 1b docs

• Repository Only (500 Share users) test– Sub-second login times and good, linear responses for other actions

• Open Library: 4.5s / Page Results: 1s / Navigate to Site: 2.3– CPU loads:

• Database: 8-10% / Alfresco (each of 10 nodes): 25-30%• Shows room for growth up to 1000 concurrent users

• Repository + Search (100 Share users)– Metadata and full text search ~ 5s (on 1B documents)– 1.2 searches / sec hitting the 20 shards

• TMDQ queries (database only, no index) via CMIS– IN_FOLDER (sorted, limited) ~ 160ms at CMIS interface– CMIS:NAME (=, LIKE) ~ 20ms at CMIS interface

Page 16: The Alfresco ECM 1 Billion Document Benchmark on AWS and Aurora  - Benchmark details and scalability recommendations

16

1B docs testsRepository – Performances at 1B docs

500 concurrent Share users – no searchNOTE: Minor repo changes between 5.0.1 and 5.1 – performance are comparable

share.doclib

.page

share.doclib

.selec

tFileU

pload

share.doclib

.uploadFil

e

share.lo

gin

share.nav.

dashboard

share.nav.

documen

tLibrar

y

share.navi

gateT

o.site

share.navi

gateT

oShare

0500

100015002000250030003500400045005000

Arithmetic Mean (ms)Standard Deviation (ms)

Avg response time (ms)

Std deviation (ms)

Page 17: The Alfresco ECM 1 Billion Document Benchmark on AWS and Aurora  - Benchmark details and scalability recommendations

17

Recomm

endations

Lessons Learned

• A single Alfresco repository can grow to 1B documents on AWS without notable issues, especially with a scalable DB like AWS Aurora

• As for the index, Shard, Shard, Shard– Shard to cope with content growth

• Single Solr instance tuned for 50M docs / 32GB– Shard for performance / SLA

• Improve performance of search on large scale repositories to hit SLA requirements

– Shard for operational reasons• Improve reindexing time (1B docs re-index in 5 days with 20 shards)

– NOTE: Sharding has a cost of results post-ranking. Use reasonably.• No indications of any size-related bottlenecks with 1.1 Billion

Documents• DB Indexes optimized (no index scans) even at a 3.2TB Aurora DB• Low

Page 18: The Alfresco ECM 1 Billion Document Benchmark on AWS and Aurora  - Benchmark details and scalability recommendations

18

Folder Size m

atters

Limiting the number of files in a folder is a good best practice

Avg response time (ms) – 1000 docs/folder

Avg response time (ms) – 5000 docs/folder

Page 19: The Alfresco ECM 1 Billion Document Benchmark on AWS and Aurora  - Benchmark details and scalability recommendations

19

Out of scope1B document Benchmark – Requires further testing• The following items were out of scope for the benchmark and

will be tested in the future. Keep this into account when using this info for sizing.

• Content Store I/O– File were spoofed, so not on the filesystem (bm-dataload allows to

store them)– What does it mean from a scalability standpoint?

• For ingestion, comparable to an in-place ingestion of content with BFSIT

• For indexing, no difference, Alfresco provides Solr with on-the-fly generated content

• For performance testing, difference in download, negligible with large files

• Transformation server / subsystem• All files are plain text files• Can be added to testing at later stage, as it’s a separate dimension• Trying to keep the problem ‘testable’

Page 20: The Alfresco ECM 1 Billion Document Benchmark on AWS and Aurora  - Benchmark details and scalability recommendations

20

ConclusionsConclusions• Alfresco can power Enterprise Grade deployments of several ECM

use cases in a fully AWS best-of-breed cloud environment • Alfresco Repository can ingest and serve 1B documents without

bottlenecks or notable performance issues• The Alfresco Index Server, as of 5.1, will leverage sharding to

support large distributed, high performance indices• Using Alfresco in conjunction with AWS Aurora is a powerful

combination to reach high scalability without operational complexity

• Alfresco is investing in provisioning technologies like chef-alfresco to ensure a seamless experience for DevOps deploying Enterprise Grade architectures in the cloud

• This data is based on Alfresco: further testing is undergoing to provide additional data and provide Alfresco 5.1 final sizing & scalability guidelines

Page 21: The Alfresco ECM 1 Billion Document Benchmark on AWS and Aurora  - Benchmark details and scalability recommendations

21

5.1Key Alfresco 5.1 scalability items to look forward to• Alfresco Solr Sharding

– On ACL– Tested up to 80M documents per shard and 20 shards

• Improved Transactional metadata queries– Boolean, Double and OR construct

• Easy deployment and scaling in AWS using provisioning technologies like chef-alfresco

• Alfresco support for Amazon Aurora (also available in Alfresco 5.0)• Updated field collaterals

– Scalability Blueprint for Alfresco 5.1– Sizing Guide for Alfresco 5.1– AWS Reference architecture, implementation guide and

CloudFormation template for Alfresco 5.0 and 5.1

Page 22: The Alfresco ECM 1 Billion Document Benchmark on AWS and Aurora  - Benchmark details and scalability recommendations

22

Wrap upQuestions?• Please send feedback to:

[email protected]– Twitter: @mindthegabz

• Participate to the Alfresco Research process:

Help us help you. Our products are better with your input and thoughts. Sign up for research at:

http://bit.ly/alfresco-research-signupThere are many ways to help:

– Research Surveys– Remote or in person interviews – Investigative workflow conversations or online design exercises