In this session, we'll discuss architectural, design and tuning best practices for building rock solid and scalable Alfresco Solutions. We'll cover the typical use cases for highly scalable Alfresco solutions, like massive injection and high concurrency, also introducing 3.3 and 3.4 Transfer / Replication services for building complex high availability enterprise architectures.
Alfresco DevCon 2019 Performance Tools of the TradeLuis Colorado
Discover tips and tools that will help you to keep your Alfresco environment in shape. Most of the best tools are free or Open Source, and this presentation will guide you through the steps to improve the performance of your system.
This session will provide a guide to Alfresco truststores and keystores. Several live examples will be shown, including the replacement of existing cryptographic stores or certificates. Additionally, a troubleshooting configuration guide for mTLS communication will be provided.
Infrastructure, use cases and performance considerations for
an Enterprise Grade ECM implementation up to 1B documents on AWS (Amazon Web Services EC2 and Aurora) based on the Alfresco (http://www.alfresco.com) Platform, leading Open Source Enterprise Content Management system.
Sizing an alfresco infrastructure has always been an interesting topic with lots of unrevealed questions. There is no perfect formula that can accurately define what is the perfect sizing for your architecture considering your use case. However, we can provide you with valuable guidance on how to size your Alfresco solution, by asking the right questions, collecting the right numbers, and taking the right assumptions on a very interesting sizing exercise.
How many alfresco servers will you need on your alfresco cluster? How many CPUs/cores do you need on those servers to handle your estimated user concurrency? How do you estimate the sizing and growth of your storage? How much memory do you need on your Solr servers? How many Solr servers do you need to get the response times you require? What are the golden rules that can drive and maintain the success of an Alfresco project?
Alfresco DevCon 2019 Performance Tools of the TradeLuis Colorado
Discover tips and tools that will help you to keep your Alfresco environment in shape. Most of the best tools are free or Open Source, and this presentation will guide you through the steps to improve the performance of your system.
This session will provide a guide to Alfresco truststores and keystores. Several live examples will be shown, including the replacement of existing cryptographic stores or certificates. Additionally, a troubleshooting configuration guide for mTLS communication will be provided.
Infrastructure, use cases and performance considerations for
an Enterprise Grade ECM implementation up to 1B documents on AWS (Amazon Web Services EC2 and Aurora) based on the Alfresco (http://www.alfresco.com) Platform, leading Open Source Enterprise Content Management system.
Sizing an alfresco infrastructure has always been an interesting topic with lots of unrevealed questions. There is no perfect formula that can accurately define what is the perfect sizing for your architecture considering your use case. However, we can provide you with valuable guidance on how to size your Alfresco solution, by asking the right questions, collecting the right numbers, and taking the right assumptions on a very interesting sizing exercise.
How many alfresco servers will you need on your alfresco cluster? How many CPUs/cores do you need on those servers to handle your estimated user concurrency? How do you estimate the sizing and growth of your storage? How much memory do you need on your Solr servers? How many Solr servers do you need to get the response times you require? What are the golden rules that can drive and maintain the success of an Alfresco project?
The objective of this article is to describe what to monitor in and around Alfresco in order to have a good understanding of how the applications are performing and to be aware of potential issues.
Practical information for Alfresco integration with AOS (Sharepoint Protocol), Google Drive, Microsoft 365, ONLYOFFICE and Collabora Online.
Additionally ADW support for ONLYOFFICE is provided by https://github.com/atolcd/adf-onlyoffice-extension#installation
This is the session delivered during the Alfresco Developers Conference in Lisbon, January 2018. Learn all what you need to know to perform a proper backup and disaster recovery strategy. From a single server installation with hundreds of documents to a large deployment with multiple nodes, layers, databases and multi-million documents. What is the best way for each case?
Features of Alfresco Search Services.
Features of Alfresco Search & Insight Engine.
Future plans for the product
---
DEMO GUIDE
[1] Queries: Share > Node Browser
ASPECT:'cm:titled' AND cm:title:'*Sample*' AND TEXT:'code'
SELECT * FROM cm:titled WHERE cm:title like '%Sample%' AND CONTAINS('code')
[2] Queries: Share > JS Console
var ctxt = Packages.org.springframework.web.context.ContextLoader.getCurrentWebApplicationContext();
var searchService = ctxt.getBean('SearchService', org.alfresco.service.cmr.search.SearchService);
var StoreRef = Packages.org.alfresco.service.cmr.repository.StoreRef;
var SearchService = Packages.org.alfresco.service.cmr.search.SearchService;
var ResultSet = Packages.org.alfresco.repo.search.impl.lucene.SolrJSONResultSet;
ResultSet =
searchService.query(
StoreRef.STORE_REF_WORKSPACE_SPACESSTORE,
SearchService.LANGUAGE_FTS_ALFRESCO,
"ASPECT:'cm:titled' AND cm:title:'*Sample*' AND TEXT:'code'");
logger.log(ResultSet.getNodeRefs());
---
var ctxt = Packages.org.springframework.web.context.ContextLoader.getCurrentWebApplicationContext();
var searchService = ctxt.getBean('SearchService', org.alfresco.service.cmr.search.SearchService);
var StoreRef = Packages.org.alfresco.service.cmr.repository.StoreRef;
var SearchService = Packages.org.alfresco.service.cmr.search.SearchService;
var ResultSet = Packages.org.alfresco.repo.search.impl.lucene.SolrJSONResultSet;
ResultSet =
searchService.query(
StoreRef.STORE_REF_WORKSPACE_SPACESSTORE,
SearchService.LANGUAGE_CMIS_ALFRESCO,
"SELECT * FROM cm:titled WHERE cm:title like '%Sample%' AND CONTAINS('code')");
logger.log(ResultSet.getNodeRefs());
---
var def =
{
query: "ASPECT:'cm:titled' AND cm:title:'*Sample*' AND TEXT:'code'",
language: "fts-alfresco"
};
var results = search.query(def);
logger.log(results);
[3] Queries: api-explorer
{
"query": {
"language": "afts",
"query": "ASPECT:\"cm:titled\" AND cm:title:\"*Sample\" AND TEXT:\"code\""
}
}
---
{
"query": {
"language": "cmis",
"query": "SELECT * FROM cm:titled WHERE cm:title like '%Sample%' AND CONTAINS('code')"
}
}
[4] Queries: CMIS Workbench > Groovy Console
rs = session.query("SELECT * FROM cm:titled WHERE cm:title like '%Sample%' AND CONTAINS('code')", false)
for (res in rs) {
println(res.getPropertyValueById('cmis:objectId'))
}
[5] Queries: SOLR Web Console > (alfresco) > Query
/afts
ASPECT:'cm:titled' AND cm:title:'*Sample*' AND TEXT:'code'
---
/cmis
SELECT * FROM cm:titled WHERE cm:title like '%Sample%' AND CONTAINS('code')
---
How to migrate from Alfresco Search Services to Alfresco SearchEnterpriseAngel Borroy López
Presentation on how to move from the Alfresco Search Services product based in Apache Solr to the new Alfresco Search Enterprise integrated with Elasticsearch and Amazon Opensearch.
No Docker? No Problem: Automating installation and config with AnsibleJeff Potts
In this talk I show how to bring stability and repeatability to your Alfresco installation by automating install and config management with Ansible.
This talk was originally given at Alfresco DevCon 2020 (virtual edition).
Alfresco 5.2 Introduces New Public REST APIs
For an update, please see: https://www.slideshare.net/jvonka/exciting-new-alfresco-apis
https://www.meetup.com/Alfresco-Meetups/events/236987848/
An overview of the new and enhanced APIs will be discussed and some of the key endpoints demonstrated via Postman so that by the time you leave you should have enough knowledge to create a simple client or integration.
These APIs will also be the foundation for new clients developed for the Alfresco Digital Business Platform.
We'll have a sneak peek at what's coming next and leave plenty of time for questions, feedback and open discussion.
Alfresco DevCon 2019 (Edinburgh)
"Transforming the Transformers" for Alfresco Content Services (ACS) 6.1 & beyond
https://community.alfresco.com/community/ecm/blog/2019/02/07/alfresco-transform-service-new-with-acs-61
Alfresco provides various content transformation options across the Digital Business Platform (DBP). In this talk, we will explore the new independently-scalable Alfresco Transform Service. This enables a new option for transforms to be asynchronously off-loaded by Alfresco Content Services (ACS).
https://devcon.alfresco.com/speaker/jan-vonka/
Alfresco Web Scripts have become an important part of any Alfresco developer's tool kit and in this session we will take a deep dive into how Web Scripts can be used to provide public APIs for Alfresco extensions. After briefly reviewing the anatomy of a Web Script and discussing Alfresco's approach to Service development, we will work through an example that extends Alfresco with a simple service and creates a REST API using Web Scripts.
Moving Gigantic Files Into and Out of the Alfresco RepositoryJeff Potts
This talk is a technical case study showing show Metaversant solved a problem for one of their clients, Noble Research Institute. Researchers at Noble deal with very large files which are often difficult to move into and out of the Alfresco repository.
Support material for the blog post available in https://hub.alfresco.com/t5/alfresco-content-services-blog/alfresco-7-3-upgrading-to-transform-core-3-0-0/ba-p/315364
This presentation describes the differences between Alfresco Transform Engine and Alfresco Transform Core 3.0.0.
Deployment, configuration and extension topics for Transform Core are covered.
The objective of this article is to describe what to monitor in and around Alfresco in order to have a good understanding of how the applications are performing and to be aware of potential issues.
Practical information for Alfresco integration with AOS (Sharepoint Protocol), Google Drive, Microsoft 365, ONLYOFFICE and Collabora Online.
Additionally ADW support for ONLYOFFICE is provided by https://github.com/atolcd/adf-onlyoffice-extension#installation
This is the session delivered during the Alfresco Developers Conference in Lisbon, January 2018. Learn all what you need to know to perform a proper backup and disaster recovery strategy. From a single server installation with hundreds of documents to a large deployment with multiple nodes, layers, databases and multi-million documents. What is the best way for each case?
Features of Alfresco Search Services.
Features of Alfresco Search & Insight Engine.
Future plans for the product
---
DEMO GUIDE
[1] Queries: Share > Node Browser
ASPECT:'cm:titled' AND cm:title:'*Sample*' AND TEXT:'code'
SELECT * FROM cm:titled WHERE cm:title like '%Sample%' AND CONTAINS('code')
[2] Queries: Share > JS Console
var ctxt = Packages.org.springframework.web.context.ContextLoader.getCurrentWebApplicationContext();
var searchService = ctxt.getBean('SearchService', org.alfresco.service.cmr.search.SearchService);
var StoreRef = Packages.org.alfresco.service.cmr.repository.StoreRef;
var SearchService = Packages.org.alfresco.service.cmr.search.SearchService;
var ResultSet = Packages.org.alfresco.repo.search.impl.lucene.SolrJSONResultSet;
ResultSet =
searchService.query(
StoreRef.STORE_REF_WORKSPACE_SPACESSTORE,
SearchService.LANGUAGE_FTS_ALFRESCO,
"ASPECT:'cm:titled' AND cm:title:'*Sample*' AND TEXT:'code'");
logger.log(ResultSet.getNodeRefs());
---
var ctxt = Packages.org.springframework.web.context.ContextLoader.getCurrentWebApplicationContext();
var searchService = ctxt.getBean('SearchService', org.alfresco.service.cmr.search.SearchService);
var StoreRef = Packages.org.alfresco.service.cmr.repository.StoreRef;
var SearchService = Packages.org.alfresco.service.cmr.search.SearchService;
var ResultSet = Packages.org.alfresco.repo.search.impl.lucene.SolrJSONResultSet;
ResultSet =
searchService.query(
StoreRef.STORE_REF_WORKSPACE_SPACESSTORE,
SearchService.LANGUAGE_CMIS_ALFRESCO,
"SELECT * FROM cm:titled WHERE cm:title like '%Sample%' AND CONTAINS('code')");
logger.log(ResultSet.getNodeRefs());
---
var def =
{
query: "ASPECT:'cm:titled' AND cm:title:'*Sample*' AND TEXT:'code'",
language: "fts-alfresco"
};
var results = search.query(def);
logger.log(results);
[3] Queries: api-explorer
{
"query": {
"language": "afts",
"query": "ASPECT:\"cm:titled\" AND cm:title:\"*Sample\" AND TEXT:\"code\""
}
}
---
{
"query": {
"language": "cmis",
"query": "SELECT * FROM cm:titled WHERE cm:title like '%Sample%' AND CONTAINS('code')"
}
}
[4] Queries: CMIS Workbench > Groovy Console
rs = session.query("SELECT * FROM cm:titled WHERE cm:title like '%Sample%' AND CONTAINS('code')", false)
for (res in rs) {
println(res.getPropertyValueById('cmis:objectId'))
}
[5] Queries: SOLR Web Console > (alfresco) > Query
/afts
ASPECT:'cm:titled' AND cm:title:'*Sample*' AND TEXT:'code'
---
/cmis
SELECT * FROM cm:titled WHERE cm:title like '%Sample%' AND CONTAINS('code')
---
How to migrate from Alfresco Search Services to Alfresco SearchEnterpriseAngel Borroy López
Presentation on how to move from the Alfresco Search Services product based in Apache Solr to the new Alfresco Search Enterprise integrated with Elasticsearch and Amazon Opensearch.
No Docker? No Problem: Automating installation and config with AnsibleJeff Potts
In this talk I show how to bring stability and repeatability to your Alfresco installation by automating install and config management with Ansible.
This talk was originally given at Alfresco DevCon 2020 (virtual edition).
Alfresco 5.2 Introduces New Public REST APIs
For an update, please see: https://www.slideshare.net/jvonka/exciting-new-alfresco-apis
https://www.meetup.com/Alfresco-Meetups/events/236987848/
An overview of the new and enhanced APIs will be discussed and some of the key endpoints demonstrated via Postman so that by the time you leave you should have enough knowledge to create a simple client or integration.
These APIs will also be the foundation for new clients developed for the Alfresco Digital Business Platform.
We'll have a sneak peek at what's coming next and leave plenty of time for questions, feedback and open discussion.
Alfresco DevCon 2019 (Edinburgh)
"Transforming the Transformers" for Alfresco Content Services (ACS) 6.1 & beyond
https://community.alfresco.com/community/ecm/blog/2019/02/07/alfresco-transform-service-new-with-acs-61
Alfresco provides various content transformation options across the Digital Business Platform (DBP). In this talk, we will explore the new independently-scalable Alfresco Transform Service. This enables a new option for transforms to be asynchronously off-loaded by Alfresco Content Services (ACS).
https://devcon.alfresco.com/speaker/jan-vonka/
Alfresco Web Scripts have become an important part of any Alfresco developer's tool kit and in this session we will take a deep dive into how Web Scripts can be used to provide public APIs for Alfresco extensions. After briefly reviewing the anatomy of a Web Script and discussing Alfresco's approach to Service development, we will work through an example that extends Alfresco with a simple service and creates a REST API using Web Scripts.
Moving Gigantic Files Into and Out of the Alfresco RepositoryJeff Potts
This talk is a technical case study showing show Metaversant solved a problem for one of their clients, Noble Research Institute. Researchers at Noble deal with very large files which are often difficult to move into and out of the Alfresco repository.
Support material for the blog post available in https://hub.alfresco.com/t5/alfresco-content-services-blog/alfresco-7-3-upgrading-to-transform-core-3-0-0/ba-p/315364
This presentation describes the differences between Alfresco Transform Engine and Alfresco Transform Core 3.0.0.
Deployment, configuration and extension topics for Transform Core are covered.
Extremely high-level overview of some of the major components and sub-systems of the Alfresco platform for content management. Delivered to the Red Hat Summit/JBoss World Campground session on 5/4/2011.
Scaling the Content Repository with ElasticsearchNuxeo
This talk will explain how to leverage Elasticsearch capabilities to make your content repository scale to the sky while still relying on standard SQL based technologies and ensuring data security and integrity. The design choices behind this hybrid Elasticsearch / PgSQL architecture will be discussed and the technical integration with Elasticsearch will be demonstrated.
Watch the recorded webinar: http://www.nuxeo.com/resources/scaling-the-document-repository-with-elasticsearch/
This session will first explain the index related options that are available when developing a data model and how these choices affect indexing and searching. We will cover Alfresco FTS in detail, and compare SQL 92 with the CMIS QL. We will also consider sorting and other ways to control the results returned, and how query performance may be affected by ACL evaluation.
Alfresco Content Modelling and Policy BehavioursJ V
Alfresco DevCon 2010 (Paris and New York)
This session starts by giving an overview of components of an Alfresco content model. We then examine the various forms of call-backs and hook-points available to the developer and give some examples of how these can be used to enforce custom business logic and model consistency.
Apache Chemistry: The Alfresco Open Source Implementation of CMISAlfresco Software
Learn how to make CMIS simple for Java client and server developers. Apache Chemistry is the umbrella project for all CMIS (Content Management Interoperability Services) related projects within the Apache Software Foundation and OpenCMIS is a collection of Java libraries, frameworks and tools around CMIS specification.
Enterprise Content Management Migration Best Practices Feat Migrations From...Alfresco Software
www.alfresco.com/about/events/ondemand (for full webinar)
Technology Services Group (TSG) discusses a recent project showcasing a migration effort from SharePoint 2003 to Alfresco.
TSG has extensive content migration experience and is able to understand and meet complex migration requirements by leveraging their OpenSource migration framework, OpenMigrate.
This webinar will include various Alfresco migration success stories (like Documentum to Alfresco)...
as well as an architectural overview of their open source migration tool - OpenMigrate.
BFIT for healthcare is a Document Management System design for the healthcare industry. BFIT will provide your hospital or clinic a comprehensive database repository system to keep your patient database, their medical records, x-ray negative, letter of reference and etc.. important note in one system. The system also provide a notepad and image editor to doctors to records their observation and solution just like recording to the patient's card.
Still All on One Server: Perforce at Scale Perforce
Google runs the busiest single Perforce server on the planet, and one of the largest repositories in any source control system. This session will address server performance and other issues of scale, as well as where Google is in general, how it got there and how it continues to stay ahead of its users.
Speaker: Varun Sharma (Pinterest)
Over the past year, HBase has become an integral component of Pinterest's storage stack. HBase has enabled us to quickly launch and iterate on new products and create amazing pinner experiences. This talk briefly describes some of these applications, the underlying schema, and how our HBase setup stays highly available and performant despite billions of requests every week. It will also include some performance tips for running on SSDs. Finally, we will talk about a homegrown serving technology we built from a mashup of HBase components that has gained wide adoption across Pinterest.
Large-scale projects development (scaling LAMP)Alexey Rybak
This 8-hours tutorial was given at various conferences including Percona conference (London), DevConf (Moscow), Highload++ (Moscow).
ABSTRACT
During this tutorial we will cover various topics related to high scalability for the LAMP stack. This workshop is divided into three sections.
The first section covers basic principles of shared nothing architectures and horizontal scaling for the app//cache/database tiers.
Section two of this tutorial is devoted to MySQL sharding techniques, queues and a few performance-related tips and tricks.
In section three we will cover the practical approach for measuring site performance and quality, porviding a "lean" support philosophy, connecting buesiness and technology metrics.
In addition we will cover a very useful Pinba real-time statistical server, it's features and various use cases. All of the sections will be based on real-world examples built in Badoo, one of the biggest dating sites on the Internet.
Some of the most common questions we hear from users relate to capacity planning and hardware choices. How many replicas do I need? Should I consider sharding right away? How much RAM will I need for my working set? SSD or HDD? No one likes spending a lot of cash on hardware and cloud bills can just be as painful. MongoDB is different from traditional RDBMSs in its resource management, so you need to be mindful when deciding on the cluster layout and hardware. In this talk we will review the factors that drive the capacity requirements: volume of queries, access patterns, indexing, working set size, among others. Attendees will gain additional insight as we go through a few real-world scenarios, as experienced with MongoDB Inc customers, and come up with their ideal cluster layout and hardware.
Optimizing Latency-sensitive queries for Presto at Facebook: A Collaboration ...Alluxio, Inc.
Data Orchestration Summit 2020 organized by Alluxio
https://www.alluxio.io/data-orchestration-summit-2020/
Optimizing Latency-sensitive queries for Presto at Facebook: A Collaboration between Presto & Alluxio
Ke Wang, Software Engineer (Facebook)
Bin Fan, Founding Engineer, VP Of Open Source (Alluxio)
About Alluxio: alluxio.io
Engage with the open source community on slack: alluxio.io/slack
Alluxio - Scalable Filesystem Metadata ServicesAlluxio, Inc.
This talk was presented by Alluxio's top contributor and PMC Maintainer Calvin Jia at the Alluxio bay area Meetup.
This talk shares our design, implementation and optimization of Alluxio metadata service to address the scalability challenges, focusing on how to apply and combine techniques including tiered metadata storage (based on off-heap KV store RocksDB), fine-grained file system inode tree locking scheme, embedded state-replicate machine (based on RAFT), exploration and performance tuning in the correct RPC frameworks (thrift vs gRPC) and etc.
The Hadoop Distributed File System is the foundational storage layer in typical Hadoop deployments. Performance and stability of HDFS are crucial to the correct functioning of applications at higher layers in the Hadoop stack. This session is a technical deep dive into recent enhancements committed to HDFS by the entire Apache contributor community. We describe real-world incidents that motivated these changes and how the enhancements prevent those problems from reoccurring. Attendees will leave this session with a deeper understanding of the implementation challenges in a distributed file system and identify helpful new metrics to monitor in their own clusters.
Inter connect2016 yss1841-cloud-storage-options-v4Tony Pearson
This session will cover private and public cloud storage options, including flash, disk and tape, to address the different types of cloud storage requirements. It will also explain the use of Active File Management for local space management and global access to files, and support for file-and-sync.
Optimizing Latency-Sensitive Queries for Presto at Facebook: A Collaboration ...Alluxio, Inc.
Alluxio Global Online Meetup
May 7, 2020
For more Alluxio events: https://www.alluxio.io/events/
Speakers:
Rohit Jain, Facebook
Yutian "James" Sun, Facebook
Bin Fan, Alluxio
For many latency-sensitive SQL workloads, Presto is often bound by retrieving distant data. In this talk, Rohit Jain, James Sun from Facebook and Bin Fan from Alluxio will introduce their teams’ collaboration on adding a local on-SSD Alluxio cache inside Presto workers to improve unsatisfied Presto latency.
This talk will focus on:
- Insights of the Presto workloads at Facebook w.r.t. cache effectiveness
- API and internals of the Alluxio local cache, from design trade-offs (e.g. caching granularity, concurrency level and etc) to performance optimizations.
- Initial performance analysis and timeline to deliver this feature for general Presto users.
- Discussion on our future work to optimize cache performance with deeper integration with Presto
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
"Impact of front-end architecture on development cost", Viktor TurskyiFwdays
I have heard many times that architecture is not important for the front-end. Also, many times I have seen how developers implement features on the front-end just following the standard rules for a framework and think that this is enough to successfully launch the project, and then the project fails. How to prevent this and what approach to choose? I have launched dozens of complex projects and during the talk we will analyze which approaches have worked for me and which have not.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
JMeter webinar - integration with InfluxDB and Grafana
Scale your Alfresco Solutions
1. Mike Farman
Product Manager, Alfresco
Peter Monks
Director, Professional Services, Alfresco
Derek Hulley
Senior Engineer, Alfresco
2
2. Many areas to consider...
• Core Repository
• Web-tier load balancing and caching
• Scale-up/scale out - horizontal vs. vertical
• Components tuning
• Replication strategies (3.4)
• Profiling and benchmarking
• ....
We‟re going to focus on the Core Repository
4
3. What happens when you create a node?
1
Begin
Transaction
3 4 8
2 Write 5
Create Update DB Begin Commit
stream (Transaction ID for
node in DB content URL Commit IndexTracking)
to disk
6 9
Transform Add to L2
(extract) Text Cache
Update 7
Index (Props
& Content)
Content Indexing
automatically moved to
background if text extraction 7a
exceeds 20 ms Index Fulltext
5 (Background)
4. What happens when you querying for nodes?
1 2 3
Query Batch 4 5
Results Set In Cache Result Set
(Lucene) Pre-fetch
4a
DB Fetch
Check 6 Deliver 7
Permissions Results
- Max Permission Checks
- Timeout
6
5. What happens when you read a nodes content?
1 4 5
Node Read 2
Fetch Stream
Cached
Request Content Response
3
DB Lookup
7
6. Example Use Cases:
• UC01: Bulk Loading
• High batch throughput, ongoing
• e.g. scanning, archival solutions, systems of record
• Migration
• One-off migration to Alfresco from legacy system
• Then UC02...
• UC02: Enterprise Collaboration Platform
• Concurrent users, variety of interfaces
• e.g. Team/Project Collaboration, Document/Knowledge
Management
8
7. Typical Characteristics
• Large number of documents and throughput
• 10‟s thousands documents injected per day, often during nightly hours
• 10‟s million documents per year
• Low User concurrency
• 100-1000 users (read only access)
• Application profile – System of Record
• End users mostly search & read
• Document formats: PDF, TIFF, JPG (i.e. no full text indexing)
• Typically fixed metadata
• No or little version control
• Few to no rules, actions, workflows, content transformations
• Client Interfaces
• Share/Explorer or Custom e.g. Web Scripts, CMIS
• Typically little CIFS/WebDAV/FTP
10
8. Primary Objective is to Maximise Throughput
• Parallel processing
• Load nodes simultaneously
• Avoid unnecessary in-transaction processing
• In-transaction services often not required when loading
• e.g. Transformation, Indexing
• Disable unneeded services
• Many standard services are not required when loading
• Minimise network and file I/O operations
• Get source content as close to server storage as possible
• Always benchmark and tune...
• JVM, Network, Threads, DB Connections...
12
9. Architectural considerations
• Creation is CPU, memory, network intensive
• Always 64 bit
• Rule of thumb: Prefer scale up over scale out – simpler deployment and
management
• Rule of thumb: get the content as close as possible to Alfresco
• Nature of the data set (i.e. batches) is KEY
• If batches are sequential -> minimize time-per-batch
• Scale up in CPU and memory
• If batches are parallelizable -> maximize number of batches processed
• Scale out with multi-threaded uploads
• Consider dedicated server(s) for ingestion
• Use production servers for migration use case and then reconfigure
• Design content storage around your data
• How can you get the source content as close as possible to repository content
storage?
• Note: Avoid Sparc T and related series
• Highly parallel but not suited for atomic heavy serial operations
13
10. Tuning best practices - JVM Tuning – Application Server
• 64 bit • Pay attention to the
• Make NewSize as large as machine capacity i.e.
possible to avoid spill over • Threads
to OldGen • CPU Utilization
• I/O
• See
http://wiki.alfresco.com/wiki/JVM_Tuning
Sample JVM Config: 64-bit, dual 2.6GHz
Xeon / dual-core per CPU , 8GB RAM
environment
-server
-Xss1M
-Xms2G
-Xmx3G
-XX:NewSize=1G
-XX:MaxPermSize=256M
16
12. Tuning best practices – I/O
• Network
• Alfresco to Database is Key
• Latency is key e.g. > 10ms is absolute max
• JDBC fetch size should be 150
• See BP-1_Alfresco_Environment_Validation_and_Day_Zero_Configuration
• Alfresco to storage (if remote)
• If possible, avoid it completely for file transfers - Stage content on local disks
• Use a dedicated network for storage e.g. Fibre channel
• Incoming to Alfresco – Typically not relevant for bulk loading use case
• Disk
• Lucene index operations' are disk I/O intensive
• Fast read/writes i.e. local disk
• Avoid indexing if not required
• Avoid unnecessary content file copying
• Stage content on local disks
• Consider set cm:content property directly e.g.
• contentUrl=store://mypath/mydocument.docx|mimetype=application/vnd.openxmlformats-
officedocument.wordprocessingml.document|size=51142|encoding=UTF-8|locale=en_GB_
18
13. Tuning best practices - Database
• Connections – Relevant if you are loading concurrently
• See BP-1_Alfresco_Environment_Validation_and_Day_Zero_Configuration
• DB Indexes & Statistics
• Plan your batch loads to allow for periodic statistics maintenance
• Make sure the database hardware/software is sized
appropriately e.g.
• Log sizes, flush on transaction commit, cache tuning, lock
management....
• Use of multiple physical volumes/RAID....
•All databases provide many options to optimise
performance
• Get a DB administrator, partner involved
19
14. Tuning best practice - Repository Services
• Force background indexing
• alfresco-global.properties
• Everything: index.tracking.disableInTransactionIndexing=true
• Just Content: lucene.maxAtomicTransformationTime=0
• Is content indexing required at all?
• DoNotIndex aspect
• “Run As” system user to avoid permission checking
20
15. Tuning best practice - Repository Services
• Use an optimised custom bulk loader
• Process docs in batches - not 1 doc per transaction or 1 transaction for entire
content set
• Example: 100 documents per batch
• Use Foundation (Java) API if possible
• Design multi-threaded import code
• Partition your data set so you can use multiple threads loading in different areas
• Scale up CPU accordingly
•Consider direct APIs (e.g. “NodeService” vs “nodeService”)
• Public services are heavily wrapped with interceptors for transactions, auditing,
permissions, multilingual translations, etc.
• Disable behaviours
• Rules evaluations, cm:auditable, versioning, quotas (system.usages.enabled=false)
•Use proper transaction demarcation
• Complete all operations on a node in a single transaction
• Batching – group multiple updates in a single transaction
• Avoid mixing reads and writes
• See session CS2-Repository_Internals for more details on API specifics
21
16. Tuning best practices – Repository Services
• Disable modified timestamp propagation to parent folders
• system.enableTimestampPropagation=false (default)
• Deleting large numbers of nodes
• Skip deleted items (archive) by adding sys:temporary aspect your
content before deletion
• Partition your content within the repository
• Depends on read access requirements
• Consider partitioning more than 2000 nodes per space if browsing
space children
Note: Performance much improved in later releases 3.3.3, 3.4 –
test for your use case
22
17. Scale Out Using Dedicated Bulk Load Server(s)
• Alfresco can support a non-clustered injection only tier
• Objective: Separate input write process from front end read load
• Solution: Dedicated injection tier pointing to same DB/Content
store(s) as front end servers. No need to cluster caches from this
tier with the front end. Background index properties and/or content,
indexes will catch up from DB transactions.
• Benefits: No Cache update/invalidation overhead. Indexing does not
block loading process
24
18. Bulk load server(s) not clustered but share storage and DB
product servers will „catch up‟ via index tracking
Bulk Load Process Runtime Clients
Creates Only
Bulk Load A Bulk Load B Production A Production B Production C
Tomcat Tomcat Tomcat Tomcat Tomcat
EHCache EHCache EHCache EHCache EHCache
Lucene Lucene Lucene Lucene Lucene
Index Index Index Index Index
Database
Content
MySQL
Store
25
19. Load Server(s) Configuration Tips
• Bulk Load Server(s)
• To exclude servers(s) from cluster:
• Do not set cluster name for bulk load servers in alfresco-global.properties
• alfresco.cluster.name=
• Force background indexing in the local alfresco-global.properties using:
• Everything:
• index.tracking.disableInTransactionIndexing=true
• Just Content:
• lucene.maxAtomicTransformationTime=0
• Note: The load process should perform creates only, no updates or
reads
• Production Server(s)
• Ensure index tracking is enabled:
• index.tracking.cronExpression=0/5 * * * * ?
• index.recovery.mode=AUTO
26
20. Example: In-transaction v‟s Background Indexing
• 10,000 docs, 1,000 folders
• 50kb word documents
• FTP with 10 sessions
• Laptop
• Foreground Indexing:
• 33 mins
• Background Indexing:
• 5 mins
27
22. Requirements
• High (and potentially highly distributed) user concurrency
• 1,000‟s -10,000‟s users (read & write)
• Medium/High number of documents
• 10,000-1 million+ documents
• 1000 document updates per day
• Complex enterprise content and permission models
• Multiple content models/Dynamic ACL
• Versioning and full text indexing on all documents
• Document types: Office, drawing, images
• Advanced content management
• Multiple rules and actions
• Heavy use of content transformations/workflow
•Interfaces (All)
• Share, WebDAV, CIFS ....
30
23. Architectural considerations
• Fully fledged platform deployment
• Need to consider maintenance window
• Scale out Share independently from Repo
• Front and intermediate Load balancer/Web Cache layers
• Read/write split and scheduled repository exclusion for maintenance
• Scale out transformation server
• Enterprise only: JOD OpenOffice subsystem
• Scale out and up infrastructure
• Cluster CIFS with DFS (Distributed File System)
• All HTTP based protocols scale seamlessly (SSP on port 7070)
•Balance multi-CPU (scale up) and multi-node clusters (scale out)
• Overhead of index tracking
31
24. Design best practices
• Distribute your content within the repository
• Otherwise search and retrieval performance degradation is likely
• Use versioning and indexing where appropriate, not just because it‟s
there..
• e.g. don‟t simply apply cm:versionable to the full cm:content
• Modelling
• Prefer aspects over types
• Remember aspects support inheritance as well
• Content Model indexing options
• Tune what you need to index
• Quotas (aka Usages)
• Might save your repo from content explosion but also have an
overhead!
32
25. Tuning best practices – Note: Also see bulk load use case!
• RDBMS
• Number of connections much more important for this use case
• Formula: HTTP Worker Threads + 75 per cluster node
• For Tomcat defaults this is 275
• Cache Configuration
• L2 Cache: increase with RAM to include more objects in cache
• Use ehcache tracing tool to indentify which caches have low hit ratios and increase if you have available memory
• See http://wiki.alfresco.com/wiki/Repository_Cache_Configuration#Tracing_cache_sizes for details
• Alfresco Configuration optimization
• VFS thread pool tuning (default: <threadPool init=“25” max=“50” />)
• Tune ACLs and preload common searches (if needed)
system.acl.maxPermissionCheckTimeMillis=10000
system.acl.maxPermissionChecks=10000
Query via node browser as different users, not only admin
• Consider bulk load large user bases (10,000s) to single (un-clustered) node and then cluster
• Disable eager home folder creation
• home.folder.creation.eager=false in alfresco-globallproperties
• Use multi-threaded and incremental LDAP sync once initial sync has been completed
• Differential sync is the default
• Lucene Tuning
• Lucene.maxAtomicTransformationTime=20
• Monitor the network performance when adding nodes to a cluster
• What for ehcache waiting for the network via thread dumps
• Consider disabling some/all of the L2 caches
33
26. HTTP Clients
Example Windows ECM
CIFS
e.g. Share via alfrescocifs Production
Cluster Install
HTTP Load Balancer DFS Round Robin - Local & Shared Content
Store Active
Directory
User/Group Sync
NTLM Authentication
alfappsrv01 alfappsrv02
Tomcat 1 Tomcat 2
Local Local
alf_data alf_data
• Lucene Index • Lucene Index
EHCache Clustered EHCache d:alf_storelucene-indexes
d:alf_storelucene-indexes
• Content Store • Content Store
d:alf_storecontentstore d:alf_storecontentstore
In & Outbound Replication In & Outbound Replication to
shared content store on SAN
JDBC
oraclecluster
alfclustsrv01 alfclustsrv02
• Replicating Content Store • Replicating Content Store
Oracle 1 Oracle 2
In & Outbound replication <- Failover -> In & Outbound replication
between local and shared between local and shared
content store content store
MSCS Cluster
SAN
• Shared Content Store: sharedContentStore (alfdataDatastore)
• Oracle:
- Data (o:oradataalfresco), Control (o:oradataalfresco) & Logfiles (L:oradataalfresco)
- Oracle Backup (o:flash_recovery_area)
• Lucene Index Backup (alfdataHold)
27. Replication (3.4) offers new deployment options
• Replication may be appropriate for specific contexts
• Provides selective replication of content between distinct Alfresco
repositories
• On demand or scheduled via Replication Jobs
• Reporting and Tracking of Replication Jobs
• Read and viewing performance: Content is served from a
local server
35
28. For any system...
• Do not use the OOTB settings for application server, database etc
Alfresco you must always tune for your use case
• Balance your resources
• Separate tiers for DataBase, Content, App Servers
• Indexes should always be on fast, local disk e.g. not NFS mounts,
USB drives etc
• Run on a supported stack e.g.
• e.g. issues with 1.6u10 use JDK 1.6u.20, use MySQL 5.1.39 or later
• Don‟t starve your database of connections:
• db.pool.max=XXX
• Use appropriate application server worker threads
• Configuration details are application server specific e.g. Tomcat: server.xml
• When clustering, use JGroups and Unicast
• Use the latest Alfresco version/service pack e.g.
• 3.3.3, 3.4
36
29. Things you should NOT change
• The database transaction isolation level
• Use defaults for all databases except MS SQLServer
• FYI. SQLServer should be:
• db.txn.isolation=4096
• ALTER DATABASE alfresco SET ALLOW_SNAPSHOT_ISOLATION ON;
• The ehcache default configuration i.e. Replicate async
• The Lucene indexing defaults unless you know what you
are doing and why!
• Note: Also do not do a full-index rebuild unless you know
what was wrong in the first place!
• Use the index checker
37
33. Q/A & Feedback
• Any Questions?
• Share your experiences (good and bad) with us so we can
all learn!
• Successful scaled up/out architectures
• Limitations, bottlenecks
• Use case parameters => Implementation => Results
• What worked, what didn‟t
43
Editor's Notes
We won’t be going into details on how to setup clustering and the web tier
[Check with AH the background indexing stuff, i.e. is it indexing or extraction that exceeds 20 ms]
Theses are typically, specifics with obviously vary.
[Derek]
[Derek]
[PM – how does the custom loading fit into this??]