SlideShare a Scribd company logo
Architectural changes in the Content Repository in 6.1
and beyond
Alex Mukha
Stefan Kopf
Plan to cover:
● Where we come from
● Monitoring (Micrometer.io /
Prometheus)
● ACS and ActiveMQ
● New policies and behaviours with
events
● New Transform Service
● New Alfresco Identity Service
● Deployment in AWS
● Removed and deprecated
features
● Where we are going to
(Unified) Roadmap
Learn. Connect. Collaborate.
Safe
Harbour
Statement
• The information contained in these presentations is
intended to outline general product direction and should
not be relied upon in making purchasing decisions.
• The content is for informational purposes only and may
not be incorporated into any contract.
• The information presented is not a commitment, promise,
or legal obligation to deliver any material, code or
functionality.
• Any references to the development, release, and timing of
any features or functionality described for these products
remains at Alfresco's sole discretion
• Product capabilities, timeframes and features are subject
to change and should not be viewed as Alfresco
commitments.
Learn. Connect. Collaborate.
Where we come from
1.0
2005
Spring
Explorer
DB
Lucene
Learn. Connect. Collaborate.
Where we come from
1.0
2005
Spring
Explorer
DB
Lucene
2.0
2005
Spring
Explorer
DB
Lucene
Learn. Connect. Collaborate.
Where we come from
1.0
Spring
Explorer
DB
Lucene
2.0
Spring
Explorer
DB
Lucene
3.0
2008
Spring
Share
DB
Lucene
Learn. Connect. Collaborate.
Where we come from
1.0
Spring
Explorer
DB
Lucene
2.0
Spring
Explorer
DB
Lucene
3.0
2008
Spring
Share
DB
4.0
2011
Spring
DB
SOLR
Lucene
Share
Learn. Connect. Collaborate.
Composition
Today
Based on
• Spring Context
• Policy/Behaviour framework
Guaranteed to be
• in-process
• in-context
• in-transaction
• synchronous
Learn. Connect. Collaborate.
What we
need
• out-of-process
• out-of-context
• out-of-transaction
• asynchronous
Learn. Connect. Collaborate.
Evolution
Build
MeasureLearn
Monitoring in ACS
Learn. Connect. Collaborate.
Micrometer
New endpoint in ACS 6.1(enterprise-only):
/alfresco/s/prometheus
A Prometheus compatible scraping (read only
webscript). The metrics collection is powered by the
micrometer library (Vendor-neutral application metrics
facade)
https://micrometer.io/
https://prometheus.io/
https://grafana.com/
Learn. Connect. Collaborate.
Micrometer
Available metrics
Basic JVM metrics: CPU, memory, GC, Threads and
etc.
Configuration:
metrics.jvmMetricsReporter.enabled=true
Grafana dashboard:
https://grafana.com/dashboards/470
Learn. Connect. Collaborate.
Micrometer
Available metrics
Rest API call metrics:
● 1 timer “restapi_execution_time” with 2 labels:
○ Type of request (GET, POST,PUT,DELETE)
○ The path to the webscript (e.g: /alfresco/api/-
default-/public/alfresco/versions/1/people) if
path is enabled
Configuration:
metrics.restMetricsReporter.enabled=true
metrics.restMetricsReporter.path.enabled=false
Grafana sample dashboard:
https://github.com/Alfresco/acs-
packaging/tree/master/docs/micrometer
Learn. Connect. Collaborate.
Micrometer
Available metrics
DB layer metrics:
● 1 timer “queries_execution_time” with 2 labels
○ Type of query (Select, Update, Insert, Delete)
○ The mybatis query ID (e.g:
alfresco.node.select_ChildAssocOfParentByName)
● 2 gauges: num_connections_active and
num_connections_idle
Configuration:
metrics.dbMetricsReporter.enabled=true
metrics.dbMetricsReporter.query.enabled=true
metrics.dbMetricsReporter.query.statements.enabled=false
Grafana sample dashboard: https://github.com/Alfresco/acs-
packaging/tree/master/docs/micrometer
Learn. Connect. Collaborate.
Micrometer
Available metrics
Tomcat metrics:
● servlet_request timer (number of responses with particular
response times)
Configuration:
metrics.tomcatMetricsReporter.enabled=true
Grafana sample dashboard: https://github.com/Alfresco/acs-
packaging/tree/master/docs/micrometer
Learn. Connect. Collaborate.
Micrometer
Future plans
● Integrate monitoring into Helm charts and CloudWatch in
AWS
● More metrics:
○ Audit
○ Renditions
○ Hazelcast caches
○ Logged in users
○ etc..
ACS and ActiveMQ
Learn. Connect. Collaborate.
ACS and ActiveMQ
• Leading Open Source messaging platform
• Reliable, high performance messaging
• Fully supports JMS 1.1 and J2EE 1.4 with support
for transient, persistent, transactional and XA
messaging
• Supports a variety of Cross Language Clients and
Protocols from Java, C, C++, C#, Ruby, Perl,
Python, PHP
– OpenWire
– Stomp
– AMQP
– MQTT
Learn. Connect. Collaborate.
ACS and ActiveMQ
• Alfresco Content Services (ACS) used ActiveMQ
for message queuing with various products, for
example Alfresco Media Management or Alfresco
Sync Service (Desktop Sync)
• Starting from ACS 6.1, ActiveMQ is a mandatory
requirement for the ACS Repository and its new
Raw Events module/capability
Learn. Connect. Collaborate.
ACS and ActiveMQ
Connect ACS to ActiveMQ:
Define the location of ActiveMQ in your alfresco-
global.properties file:
messaging.broker.url=failover:(tcp://server:61616)?timeout
=3000
where server is the host name of the server where
ActiveMQ is installed.
Notes:
• When you set up ActiveMQ, the Alfresco Content Services
messaging subsystem is set to start up automatically.
• Any changes to broker URL requires ACS restart to apply
the changes.
Learn. Connect. Collaborate.
ACS and ActiveMQ
Ways to deploy ActiveMQ:
● Containerized deployment*
https://github.com/Alfresco/acs-deployment
○ docker-compose
○ Helm / Kubernetes
● Using distribution zip
http://activemq.apache.org/download.html
● ...or your favourite managed offering, e.g.
AmazonMQ
* Conteinerized deployments of ACS use Alfresco ActiveMQ
image:
https://github.com/Alfresco/alfresco-docker-activemq
Can be also deployed via Helm chart:
https://github.com/Alfresco/alfresco-activemq-deployment
Transactional Events
Learn. Connect. Collaborate.
Two
Generals’
Problem
Possible inconsistencies:
• DB succeeds, but MB fails
• MB succeeds, but DB fails
“Two Generals’ Problem”
In Enterprise Software:
• Distributed Transactions (XA)
Learn. Connect. Collaborate.
Distributed
Transactions
Severe additional complexity:
• Transaction manager required
Additional constraints
• All data sources need to support XA
⇒ In 6.1:
NO Distributed Transactions
Learn. Connect. Collaborate.
Residual
Error
False Positive:
Messages have been sent out, but DB transaction
is rolled back
False Negative:
DB transaction succeeded, but Message Broker
fails
TransactionAwareEventProducer
• Implements 2nd approach
• Collects messages during transaction
• Sends all at once after commit
Policies and Behaviours
Learn. Connect. Collaborate.
Recap:
What are
Policies
And
Behaviours
Policy / Behaviour framework:
Implementation of the observer pattern in
Alfresco
Policy:
Advertisement of an Extension Point provided by
a component
Behaviour:
Subscription of a Policy, i.e. code that gets
executed when a Policy is triggered
Learn. Connect. Collaborate.
EventBehaviour
Existing Behaviours:
• JavaBehaviour
• ScriptBehaviour
New in 6.1:
• EventBehaviour
Learn. Connect. Collaborate.
EventBehaviour
Example
@Autowired
private TransactionAwareEventProducer taep;
@Autowired
private PolicyComponent policyComponent;
@Override
public void configure() throws Exception
{
EventBehaviour eventBehaviour = new EventBehaviour(taep, sourceQueue, this,
"createEvent", Behaviour.NotificationFrequency.EVERY_EVENT);
policyComponent.bindClassBehaviour(
ContentServicePolicies.OnContentUpdatePolicy.QNAME,
RenditionModel.ASPECT_RENDITIONED, eventBehaviour);
...
}
public OnContentUpdatePolicyEvent createEvent(NodeRef node, boolean newContent)
{
OnContentUpdatePolicyEvent event = new OnContentUpdatePolicyEvent();
event.setNodeRef(node.toString());
event.setNewContent(newContent);
...
return event;
}
New Transform Service
Learn. Connect. Collaborate.
Transform Service
Bottleneck…
● Document transformations are used heavily within
ACS. All content imported into ACS generates
renditions, for example thumbnails and previews
● Most of the transformations were synchronous,
consuming resources of ACS JVM or underlying
OS.
● Security risk of running them on the same machine
as ACS
● Transformations have been a limiting factor when
ingesting large amounts of content, this means
that, in high load situations, transformations had to
be disabled
Learn. Connect. Collaborate.
Transform Service
Overview
New Transform Service features:
● Microservice architecture
○ Independent scalability
○ Cost effective
○ High throughput
● Co-exists with existing transformations in ACS
● Containerised deployments only
● ACS 6.1+
● Enterprise-only
● Supports a smaller subset of available
transformations comparing to 6.0
Learn. Connect. Collaborate.
ACS Async Rendition Service
V1 REST APIV0 REST API
Rendition Service 2
Rendition Service
Thumbnail Service
Action Service
Content Service Shared File Store
<<Docker>>
Content Update
Transform Service
Router
<<Docker>>
Transformers
<<Docker>>
Transformers
<<Docker>>
Transformers
<<Docker>>
Transformers
<<Docker>>
Transform Response
Transform Request
TransformerTransformerLocal Transformers
Solr 6
101010
101010
101010
Learn. Connect. Collaborate.
Transform Service Configuration
local.transform.service.enabled=true
transform.service.enabled=true
Rendition 2 Definition Bean
<bean id="renditionDefinition2DocLib"
class="org.alfresco.repo.rendition2.RenditionDefinition2Impl">
<constructor-arg name="renditionName" value="doclib"/>
<constructor-arg name="targetMimetype" value="image/png"/>
<constructor-arg name="transformOptions">
<map>
<entry key="resizeWidth" value="100"/>
<entry key="resizeHeight" value="100"/>
<entry key="allowEnlargement" value="false" />
<entry key="maintainAspectRatio" value="true"/>
<entry key="thumbnail" value="true"/>
<entry key="timeout"
value="${system.thumbnail.definition.default.timeoutMs}" />
</map>
</constructor-arg>
<constructor-arg name="registry" ref="renditionDefinitionRegistry2"/>
</bean>
ImageMagick ‘flat’ Transform Options
alphaRemove
autoOrient
startPage
endPage
cropGravity
cropWidth
cropHeight
cropPercentage
cropXOffset
cropYOffset
thumbnail
resizeHeight
resizeWidth
resizePercentage
allowEnlargement
maintainAspectRatio
Learn. Connect. Collaborate.
Transform Service
Future plans
• New Transform Service will increase the number of
supported transformations.
– Integrate with Search Services (to text
conversion)
– Extensibility
– AI and more..
• The synchronous renditions are deprecated and
will be removed from content repository
completely
• Metadata extraction is moved out from content
repository
Alfresco Identity Service
Learn. Connect. Collaborate.
Alfresco Identity Service
Overview
Alfresco Identity Service provides authentication and
proof of identity, in the form of a standard token (JSON
Web Token https://jwt.io ), understood by Digital
Business Platform components:
○ ACS 6.1 REST APIs (v1) and CMIS
○ APS 1.10 REST APIs
○ AGS 3.1 REST API (v1)
○ ADF 2.6
Alfresco Identity Service is based on Keycloak and
supports:
○ LDAP (OpenLDAP)
○ SAML 2.0 (PingFederate)
○ OpenID Connect
Learn. Connect. Collaborate.
Alfresco Identity Service
Deployment
● The deployment artifact is the alfresco-identity-
service Helm Chart
○ http://kubernetes-
charts.alfresco.com/stable/alfresco-identity-
service-1.0.0.tgz
● Deployed, by default, as part of the alfresco-
infrastructure Helm Chart
○ http://kubernetes-
charts.alfresco.com/stable/alfresco-
infrastructure-3.0.0.tgz
● Is NOT part of ACS 6.1 Helm charts
Contains:
● Keycloak with Alfresco Theme
● PostgreSQL
● Ingress
Learn. Connect. Collaborate.
Alfresco Identity Service
support in ACS
Represented by authentication subsystem:
● alfresco/subsystems/Authentication/identity-service
Based on Keycloak libs:
• https://github.com/keycloak/keycloak
(Supports JWT standard)
Users and groups are still managed in ACS:
• Can auto-create users
• Works with LDAP sync (recommended)
JWT and basic to access APIs in ACS
AIS and ACS are (almost) pre-configured for dev/test (test real is
present in AIS)
Learn. Connect. Collaborate.
Alfresco Identity Service
Configuration
Configure ACS alfresco-global.properties:
authentication.chain=ais:identity-service,...
identity-service.authentication.enabled=true
identity-service.authentication.validation.failure.silent=true
identity-service.authentication.defaultAdministratorUserNames=admin
identity-service.authentication.allowGuestLogin=true
identity-service.authentication.enable-username-password-authentication=true
identity-service.auth-server-url=http://localhost:8180/auth
identity-service.realm=alfresco
identity-service.ssl-required=none
identity-service.resource=alfresco
identity-service.public-client=true
Configure AIS:
https://github.com/Alfresco/alfresco-identity-service/tree/master/docs
Learn. Connect. Collaborate.
Alfresco Identity Service
Simplified sequence diagram:
Client AIS ACS
Request JWT
Full example: https://github.com/Alfresco/alfresco-identity-
service/blob/master/docs/resource/sequence/high-level-ldap-auth-
sequence.png
JWT: kfYclR..
GET /some-api
Authorization: Bearer kfYcIR...
Get signing keys
Verify JWT
Process request
Response to client
Learn. Connect. Collaborate.
Alfresco Identity Service
Future plans
• User and group management will be moved from
ACS into AIS
• Authentication chain will be deprecated and
removed. List of supported authentication types
will be extended in AIS.
• (Maybe) Move management of ACLs to AIS
Deployment in AWS
Learn. Connect. Collaborate.
HELM Charts
Since 6.0
• New additional deployment option
• Existing deployment options still available
• Codification of documentation and
recommended best practices
• Reference deployment: starting point for your
own environment description
• w/o params: Brings everything in a container
• Parameterize to use your infrastructure
Learn. Connect. Collaborate.
6.1
AWS
Deployment
• Set of CloudFormation templates plus scripts
and tooling
• Sets up:
– VPC + Bastion
– EKS + Worker Nodes
– S3 incl replication
– Aurora DB
– AmazonMQ
– IAM permissions
Learn. Connect. Collaborate.
AWS
Architecture
Learn. Connect. Collaborate.
ACS on AWS
Source code locations
● CFN templates + AWS alterations
https://github.com/Alfresco/acs-deployment-aws
● ACS Helm Charts
https://github.com/Alfresco/acs-deployment
● Charts Repository
https://github.com/Alfresco/charts
Removed and
deprecated features
Learn. Connect. Collaborate.
Removed and
deprecated features
● Removed (configuration and code)
○ CIFS
○ NTLM
● Deprecated (will be removed in future
versions)
○ Synchronous transformations
○ Cloud Sync
Learn. Connect. Collaborate.
Beyond
• Extract common components
• Identity Service
– Move profiles to AIS
– Move user/group info to AIS
– Perform authentication outside of ACS
– All requests carry JWT token
• Move to Async, candidates
– Auditing
– Metadata extraction
– Search indexing
– Rules / Actions
• Deployment options for other cloud provider
Thanks!
Reach us on email:
alex.mukha@alfresco.com
stefan.kopf@alfresco.com
GitHub:
https://github.com/Alfresco
JIRA:
https://issues.alfresco.com
Learn. Connect. Collaborate.
New Raw Events
Motivation (the “why?”)
• decoupling
• asynchronous processing
• integration
• fault-tolerance
• spikability
How?
• An evolutionary path to asynchronous processing
based upon policies / behaviours
• The event model enables us to execute code when
an event happens in the system. These events are
referred to as “policies”. With “behaviours”, you
can register code that is executed when these
events occur.
Learn. Connect. Collaborate.
New Raw Events
Motivation (the “why?”)
• decoupling
• asynchronous processing
• integration
• fault-tolerance
• spikability
How?
• An evolutionary path to asynchronous processing
based upon policies / behaviours
• The event model enables us to execute code when
an event happens in the system. These events are
referred to as “policies”. With “behaviours”, you
can register code that is executed when these
events occur.
Learn. Connect. Collaborate.
New Raw Events
Learn. Connect. Collaborate.
New Raw Events
The basic data which is captured for each event:
• id
• type
• authenticatedUser
• executingUser
• timestamp
• schema
Learn. Connect. Collaborate.
New Raw Events
EventProducers
AbstractEventProducer
• Abstract helper to send events to an endpoint. The
AbstractEventProducer acts as a wrapper that
provides marshalling for a Camel
ProducerTemplate.
• A client has the option of creating an event
producer without supplying an endpoint. In this
case, an endpoint must be provided with every
send operation.
• A client also has the option to provide an
ObjectMapper that will be used to marshal basic
POJOs to JSON, before sending the event.
TransactionAwareEventProducer
• Events are scheduled to be sent in post-commit
phase.
Learn. Connect. Collaborate.
New Raw Events
EventBehaviour
• Event based Behaviour.
• A client uses an EventBehaviour to bind a send
event behaviour to a Class-level Policy.
• The endpoint uri can be a queue or a topic.
– e.g: jms:acs-repo-rendition-
events?jmsMessageType=Text
• The event behavior delegates the generation of the
event to a method pointer. The pointer is
represented by an instance object and method
name.
Learn. Connect. Collaborate.
New Raw Events
Event Behaviour
Notification Frequency
• EVERY_EVENT: The event handler is then just
executed wherever it is being invoked in the code.
The name of this notification frequency implies that
the event handler will be called multiple times, but
that is not the case.
• TRANSACTION_COMMIT: This is the default, if
the notification frequency is not specified. The
event handler is queued and invoked at the end of
the transaction, after it has been committed. A
proxy around the event handler manages the
queuing.
• FIRST_EVENT: The event handler is invoked just
after the transaction is started. A proxy around the
event handler manages this.

More Related Content

What's hot

Alfresco Certificates
Alfresco Certificates Alfresco Certificates
Alfresco Certificates
Angel Borroy López
 
Bulk Export Tool for Alfresco
Bulk Export Tool for AlfrescoBulk Export Tool for Alfresco
Bulk Export Tool for Alfresco
Richard McKnight
 
Alfresco DevCon 2019 Performance Tools of the Trade
Alfresco DevCon 2019   Performance Tools of the TradeAlfresco DevCon 2019   Performance Tools of the Trade
Alfresco DevCon 2019 Performance Tools of the Trade
Luis Colorado
 
Moving Gigantic Files Into and Out of the Alfresco Repository
Moving Gigantic Files Into and Out of the Alfresco RepositoryMoving Gigantic Files Into and Out of the Alfresco Repository
Moving Gigantic Files Into and Out of the Alfresco Repository
Jeff Potts
 
Alfresco tuning part1
Alfresco tuning part1Alfresco tuning part1
Alfresco tuning part1
Luis Cabaceira
 
Collaborative Editing Tools for Alfresco
Collaborative Editing Tools for AlfrescoCollaborative Editing Tools for Alfresco
Collaborative Editing Tools for Alfresco
Angel Borroy López
 
Alfresco Backup and Disaster Recovery White Paper
Alfresco Backup and Disaster Recovery White PaperAlfresco Backup and Disaster Recovery White Paper
Alfresco Backup and Disaster Recovery White Paper
Toni de la Fuente
 
How to migrate from Alfresco Search Services to Alfresco SearchEnterprise
How to migrate from Alfresco Search Services to Alfresco SearchEnterpriseHow to migrate from Alfresco Search Services to Alfresco SearchEnterprise
How to migrate from Alfresco Search Services to Alfresco SearchEnterprise
Angel Borroy López
 
Alfresco search services: Now and Then
Alfresco search services: Now and ThenAlfresco search services: Now and Then
Alfresco search services: Now and Then
Angel Borroy López
 
Guide to alfresco monitoring
Guide to alfresco monitoringGuide to alfresco monitoring
Guide to alfresco monitoring
Miguel Rodriguez
 
Jose portillo dev con presentation 1138
Jose portillo   dev con presentation 1138Jose portillo   dev con presentation 1138
Jose portillo dev con presentation 1138
Jose Portillo
 
Alfresco 5.2 REST API
Alfresco 5.2 REST APIAlfresco 5.2 REST API
Alfresco 5.2 REST API
J V
 
Storage and Alfresco
Storage and AlfrescoStorage and Alfresco
Storage and Alfresco
Toni de la Fuente
 
Alfresco Transform Core 3.0.0
Alfresco Transform Core 3.0.0Alfresco Transform Core 3.0.0
Alfresco Transform Core 3.0.0
Angel Borroy López
 
Metadata Extraction and Content Transformation
Metadata Extraction and Content TransformationMetadata Extraction and Content Transformation
Metadata Extraction and Content Transformation
Alfresco Software
 
Upgrading to Alfresco 6
Upgrading to Alfresco 6Upgrading to Alfresco 6
Upgrading to Alfresco 6
Angel Borroy López
 
Moving From Actions & Behaviors to Microservices
Moving From Actions & Behaviors to MicroservicesMoving From Actions & Behaviors to Microservices
Moving From Actions & Behaviors to Microservices
Jeff Potts
 
Alfresco CMIS
Alfresco CMISAlfresco CMIS
Alfresco CMIS
Alfresco Software
 
Alfresco REST API of the future ... is closer than you think
Alfresco REST API of the future ... is closer than you thinkAlfresco REST API of the future ... is closer than you think
Alfresco REST API of the future ... is closer than you think
J V
 
Alfresco devcon 2019: How to track user activities without using the audit fu...
Alfresco devcon 2019: How to track user activities without using the audit fu...Alfresco devcon 2019: How to track user activities without using the audit fu...
Alfresco devcon 2019: How to track user activities without using the audit fu...
konok
 

What's hot (20)

Alfresco Certificates
Alfresco Certificates Alfresco Certificates
Alfresco Certificates
 
Bulk Export Tool for Alfresco
Bulk Export Tool for AlfrescoBulk Export Tool for Alfresco
Bulk Export Tool for Alfresco
 
Alfresco DevCon 2019 Performance Tools of the Trade
Alfresco DevCon 2019   Performance Tools of the TradeAlfresco DevCon 2019   Performance Tools of the Trade
Alfresco DevCon 2019 Performance Tools of the Trade
 
Moving Gigantic Files Into and Out of the Alfresco Repository
Moving Gigantic Files Into and Out of the Alfresco RepositoryMoving Gigantic Files Into and Out of the Alfresco Repository
Moving Gigantic Files Into and Out of the Alfresco Repository
 
Alfresco tuning part1
Alfresco tuning part1Alfresco tuning part1
Alfresco tuning part1
 
Collaborative Editing Tools for Alfresco
Collaborative Editing Tools for AlfrescoCollaborative Editing Tools for Alfresco
Collaborative Editing Tools for Alfresco
 
Alfresco Backup and Disaster Recovery White Paper
Alfresco Backup and Disaster Recovery White PaperAlfresco Backup and Disaster Recovery White Paper
Alfresco Backup and Disaster Recovery White Paper
 
How to migrate from Alfresco Search Services to Alfresco SearchEnterprise
How to migrate from Alfresco Search Services to Alfresco SearchEnterpriseHow to migrate from Alfresco Search Services to Alfresco SearchEnterprise
How to migrate from Alfresco Search Services to Alfresco SearchEnterprise
 
Alfresco search services: Now and Then
Alfresco search services: Now and ThenAlfresco search services: Now and Then
Alfresco search services: Now and Then
 
Guide to alfresco monitoring
Guide to alfresco monitoringGuide to alfresco monitoring
Guide to alfresco monitoring
 
Jose portillo dev con presentation 1138
Jose portillo   dev con presentation 1138Jose portillo   dev con presentation 1138
Jose portillo dev con presentation 1138
 
Alfresco 5.2 REST API
Alfresco 5.2 REST APIAlfresco 5.2 REST API
Alfresco 5.2 REST API
 
Storage and Alfresco
Storage and AlfrescoStorage and Alfresco
Storage and Alfresco
 
Alfresco Transform Core 3.0.0
Alfresco Transform Core 3.0.0Alfresco Transform Core 3.0.0
Alfresco Transform Core 3.0.0
 
Metadata Extraction and Content Transformation
Metadata Extraction and Content TransformationMetadata Extraction and Content Transformation
Metadata Extraction and Content Transformation
 
Upgrading to Alfresco 6
Upgrading to Alfresco 6Upgrading to Alfresco 6
Upgrading to Alfresco 6
 
Moving From Actions & Behaviors to Microservices
Moving From Actions & Behaviors to MicroservicesMoving From Actions & Behaviors to Microservices
Moving From Actions & Behaviors to Microservices
 
Alfresco CMIS
Alfresco CMISAlfresco CMIS
Alfresco CMIS
 
Alfresco REST API of the future ... is closer than you think
Alfresco REST API of the future ... is closer than you thinkAlfresco REST API of the future ... is closer than you think
Alfresco REST API of the future ... is closer than you think
 
Alfresco devcon 2019: How to track user activities without using the audit fu...
Alfresco devcon 2019: How to track user activities without using the audit fu...Alfresco devcon 2019: How to track user activities without using the audit fu...
Alfresco devcon 2019: How to track user activities without using the audit fu...
 

Similar to Architectural changes in the repo in 6.1 and beyond

OpenStack Watcher
OpenStack WatcherOpenStack Watcher
OpenStack Watcher
openstackindia
 
Apache Eagle at Hadoop Summit 2016 San Jose
Apache Eagle at Hadoop Summit 2016 San JoseApache Eagle at Hadoop Summit 2016 San Jose
Apache Eagle at Hadoop Summit 2016 San Jose
Hao Chen
 
Apache Eagle: Secure Hadoop in Real Time
Apache Eagle: Secure Hadoop in Real TimeApache Eagle: Secure Hadoop in Real Time
Apache Eagle: Secure Hadoop in Real Time
DataWorks Summit/Hadoop Summit
 
Week 4 lecture material cc (1)
Week 4 lecture material cc (1)Week 4 lecture material cc (1)
Week 4 lecture material cc (1)
Ankit Gupta
 
week 4_watermark.pdfffffffffffffffffffff
week 4_watermark.pdfffffffffffffffffffffweek 4_watermark.pdfffffffffffffffffffff
week 4_watermark.pdfffffffffffffffffffff
anushka2002ece
 
Get SaaSy with Red Hat OpenShift on AWS (CON305-S) - AWS re:Invent 2018
Get SaaSy with Red Hat OpenShift on AWS (CON305-S) - AWS re:Invent 2018Get SaaSy with Red Hat OpenShift on AWS (CON305-S) - AWS re:Invent 2018
Get SaaSy with Red Hat OpenShift on AWS (CON305-S) - AWS re:Invent 2018
Amazon Web Services
 
Meetup 2022 - APIs with Quarkus.pdf
Meetup 2022 - APIs with Quarkus.pdfMeetup 2022 - APIs with Quarkus.pdf
Meetup 2022 - APIs with Quarkus.pdf
Red Hat
 
Implementing Progressive Delivery with Your Team (by Leigh Capili)
Implementing Progressive Delivery with Your Team (by Leigh Capili)Implementing Progressive Delivery with Your Team (by Leigh Capili)
Implementing Progressive Delivery with Your Team (by Leigh Capili)
Weaveworks
 
ManageIQ Overview at Management and Orchestration Developer (MODM) Meet-up
ManageIQ Overview at Management and Orchestration Developer (MODM) Meet-upManageIQ Overview at Management and Orchestration Developer (MODM) Meet-up
ManageIQ Overview at Management and Orchestration Developer (MODM) Meet-up
Jerome Marc
 
Apache Eagle in Action
Apache Eagle in ActionApache Eagle in Action
Apache Eagle in Action
Hao Chen
 
ОЛЕГ МАЦЬКІВ «Crash course on Operator Framework» Lviv DevOps Conference 2019
ОЛЕГ МАЦЬКІВ «Crash course on Operator Framework» Lviv DevOps Conference 2019ОЛЕГ МАЦЬКІВ «Crash course on Operator Framework» Lviv DevOps Conference 2019
ОЛЕГ МАЦЬКІВ «Crash course on Operator Framework» Lviv DevOps Conference 2019
UA DevOps Conference
 
Regain Control Thanks To Prometheus
Regain Control Thanks To PrometheusRegain Control Thanks To Prometheus
Regain Control Thanks To Prometheus
Etienne Coutaud
 
New features in qtp11
New features in qtp11New features in qtp11
New features in qtp11
G.C Reddy
 
Openstack Cloud Management and Automation Using Red Hat Cloudforms 4.0
Openstack Cloud  Management and Automation Using Red Hat Cloudforms 4.0Openstack Cloud  Management and Automation Using Red Hat Cloudforms 4.0
Openstack Cloud Management and Automation Using Red Hat Cloudforms 4.0
Prasad Mukhedkar
 
Spring Boot Loves K8s
Spring Boot Loves K8sSpring Boot Loves K8s
Spring Boot Loves K8s
VMware Tanzu
 
IBM Bluemix OpenWhisk: Serverless Conference 2016, London, UK: The Future of ...
IBM Bluemix OpenWhisk: Serverless Conference 2016, London, UK: The Future of ...IBM Bluemix OpenWhisk: Serverless Conference 2016, London, UK: The Future of ...
IBM Bluemix OpenWhisk: Serverless Conference 2016, London, UK: The Future of ...
OpenWhisk
 
New features in qtp11
New features in qtp11New features in qtp11
New features in qtp11Ramu Palanki
 
Qtp 11 new enhacements in
Qtp 11 new enhacements inQtp 11 new enhacements in
Qtp 11 new enhacements inRamu Palanki
 
Managing and supporting PowerApps & Flow at scale by Daniel Laskewitz
Managing and supporting PowerApps & Flow at scale by Daniel LaskewitzManaging and supporting PowerApps & Flow at scale by Daniel Laskewitz
Managing and supporting PowerApps & Flow at scale by Daniel Laskewitz
Daniel Laskewitz
 
Event-driven automation, DevOps way ~IoT時代の自動化、そのリアリティとは?~
Event-driven automation, DevOps way ~IoT時代の自動化、そのリアリティとは?~Event-driven automation, DevOps way ~IoT時代の自動化、そのリアリティとは?~
Event-driven automation, DevOps way ~IoT時代の自動化、そのリアリティとは?~
Brocade
 

Similar to Architectural changes in the repo in 6.1 and beyond (20)

OpenStack Watcher
OpenStack WatcherOpenStack Watcher
OpenStack Watcher
 
Apache Eagle at Hadoop Summit 2016 San Jose
Apache Eagle at Hadoop Summit 2016 San JoseApache Eagle at Hadoop Summit 2016 San Jose
Apache Eagle at Hadoop Summit 2016 San Jose
 
Apache Eagle: Secure Hadoop in Real Time
Apache Eagle: Secure Hadoop in Real TimeApache Eagle: Secure Hadoop in Real Time
Apache Eagle: Secure Hadoop in Real Time
 
Week 4 lecture material cc (1)
Week 4 lecture material cc (1)Week 4 lecture material cc (1)
Week 4 lecture material cc (1)
 
week 4_watermark.pdfffffffffffffffffffff
week 4_watermark.pdfffffffffffffffffffffweek 4_watermark.pdfffffffffffffffffffff
week 4_watermark.pdfffffffffffffffffffff
 
Get SaaSy with Red Hat OpenShift on AWS (CON305-S) - AWS re:Invent 2018
Get SaaSy with Red Hat OpenShift on AWS (CON305-S) - AWS re:Invent 2018Get SaaSy with Red Hat OpenShift on AWS (CON305-S) - AWS re:Invent 2018
Get SaaSy with Red Hat OpenShift on AWS (CON305-S) - AWS re:Invent 2018
 
Meetup 2022 - APIs with Quarkus.pdf
Meetup 2022 - APIs with Quarkus.pdfMeetup 2022 - APIs with Quarkus.pdf
Meetup 2022 - APIs with Quarkus.pdf
 
Implementing Progressive Delivery with Your Team (by Leigh Capili)
Implementing Progressive Delivery with Your Team (by Leigh Capili)Implementing Progressive Delivery with Your Team (by Leigh Capili)
Implementing Progressive Delivery with Your Team (by Leigh Capili)
 
ManageIQ Overview at Management and Orchestration Developer (MODM) Meet-up
ManageIQ Overview at Management and Orchestration Developer (MODM) Meet-upManageIQ Overview at Management and Orchestration Developer (MODM) Meet-up
ManageIQ Overview at Management and Orchestration Developer (MODM) Meet-up
 
Apache Eagle in Action
Apache Eagle in ActionApache Eagle in Action
Apache Eagle in Action
 
ОЛЕГ МАЦЬКІВ «Crash course on Operator Framework» Lviv DevOps Conference 2019
ОЛЕГ МАЦЬКІВ «Crash course on Operator Framework» Lviv DevOps Conference 2019ОЛЕГ МАЦЬКІВ «Crash course on Operator Framework» Lviv DevOps Conference 2019
ОЛЕГ МАЦЬКІВ «Crash course on Operator Framework» Lviv DevOps Conference 2019
 
Regain Control Thanks To Prometheus
Regain Control Thanks To PrometheusRegain Control Thanks To Prometheus
Regain Control Thanks To Prometheus
 
New features in qtp11
New features in qtp11New features in qtp11
New features in qtp11
 
Openstack Cloud Management and Automation Using Red Hat Cloudforms 4.0
Openstack Cloud  Management and Automation Using Red Hat Cloudforms 4.0Openstack Cloud  Management and Automation Using Red Hat Cloudforms 4.0
Openstack Cloud Management and Automation Using Red Hat Cloudforms 4.0
 
Spring Boot Loves K8s
Spring Boot Loves K8sSpring Boot Loves K8s
Spring Boot Loves K8s
 
IBM Bluemix OpenWhisk: Serverless Conference 2016, London, UK: The Future of ...
IBM Bluemix OpenWhisk: Serverless Conference 2016, London, UK: The Future of ...IBM Bluemix OpenWhisk: Serverless Conference 2016, London, UK: The Future of ...
IBM Bluemix OpenWhisk: Serverless Conference 2016, London, UK: The Future of ...
 
New features in qtp11
New features in qtp11New features in qtp11
New features in qtp11
 
Qtp 11 new enhacements in
Qtp 11 new enhacements inQtp 11 new enhacements in
Qtp 11 new enhacements in
 
Managing and supporting PowerApps & Flow at scale by Daniel Laskewitz
Managing and supporting PowerApps & Flow at scale by Daniel LaskewitzManaging and supporting PowerApps & Flow at scale by Daniel Laskewitz
Managing and supporting PowerApps & Flow at scale by Daniel Laskewitz
 
Event-driven automation, DevOps way ~IoT時代の自動化、そのリアリティとは?~
Event-driven automation, DevOps way ~IoT時代の自動化、そのリアリティとは?~Event-driven automation, DevOps way ~IoT時代の自動化、そのリアリティとは?~
Event-driven automation, DevOps way ~IoT時代の自動化、そのリアリティとは?~
 

Recently uploaded

Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
RinaMondal9
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 

Recently uploaded (20)

Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 

Architectural changes in the repo in 6.1 and beyond

  • 1. Architectural changes in the Content Repository in 6.1 and beyond Alex Mukha Stefan Kopf
  • 2. Plan to cover: ● Where we come from ● Monitoring (Micrometer.io / Prometheus) ● ACS and ActiveMQ ● New policies and behaviours with events ● New Transform Service ● New Alfresco Identity Service ● Deployment in AWS ● Removed and deprecated features ● Where we are going to (Unified) Roadmap
  • 3. Learn. Connect. Collaborate. Safe Harbour Statement • The information contained in these presentations is intended to outline general product direction and should not be relied upon in making purchasing decisions. • The content is for informational purposes only and may not be incorporated into any contract. • The information presented is not a commitment, promise, or legal obligation to deliver any material, code or functionality. • Any references to the development, release, and timing of any features or functionality described for these products remains at Alfresco's sole discretion • Product capabilities, timeframes and features are subject to change and should not be viewed as Alfresco commitments.
  • 4. Learn. Connect. Collaborate. Where we come from 1.0 2005 Spring Explorer DB Lucene
  • 5. Learn. Connect. Collaborate. Where we come from 1.0 2005 Spring Explorer DB Lucene 2.0 2005 Spring Explorer DB Lucene
  • 6. Learn. Connect. Collaborate. Where we come from 1.0 Spring Explorer DB Lucene 2.0 Spring Explorer DB Lucene 3.0 2008 Spring Share DB Lucene
  • 7. Learn. Connect. Collaborate. Where we come from 1.0 Spring Explorer DB Lucene 2.0 Spring Explorer DB Lucene 3.0 2008 Spring Share DB 4.0 2011 Spring DB SOLR Lucene Share
  • 8. Learn. Connect. Collaborate. Composition Today Based on • Spring Context • Policy/Behaviour framework Guaranteed to be • in-process • in-context • in-transaction • synchronous
  • 9. Learn. Connect. Collaborate. What we need • out-of-process • out-of-context • out-of-transaction • asynchronous
  • 12. Learn. Connect. Collaborate. Micrometer New endpoint in ACS 6.1(enterprise-only): /alfresco/s/prometheus A Prometheus compatible scraping (read only webscript). The metrics collection is powered by the micrometer library (Vendor-neutral application metrics facade) https://micrometer.io/ https://prometheus.io/ https://grafana.com/
  • 13. Learn. Connect. Collaborate. Micrometer Available metrics Basic JVM metrics: CPU, memory, GC, Threads and etc. Configuration: metrics.jvmMetricsReporter.enabled=true Grafana dashboard: https://grafana.com/dashboards/470
  • 14. Learn. Connect. Collaborate. Micrometer Available metrics Rest API call metrics: ● 1 timer “restapi_execution_time” with 2 labels: ○ Type of request (GET, POST,PUT,DELETE) ○ The path to the webscript (e.g: /alfresco/api/- default-/public/alfresco/versions/1/people) if path is enabled Configuration: metrics.restMetricsReporter.enabled=true metrics.restMetricsReporter.path.enabled=false Grafana sample dashboard: https://github.com/Alfresco/acs- packaging/tree/master/docs/micrometer
  • 15. Learn. Connect. Collaborate. Micrometer Available metrics DB layer metrics: ● 1 timer “queries_execution_time” with 2 labels ○ Type of query (Select, Update, Insert, Delete) ○ The mybatis query ID (e.g: alfresco.node.select_ChildAssocOfParentByName) ● 2 gauges: num_connections_active and num_connections_idle Configuration: metrics.dbMetricsReporter.enabled=true metrics.dbMetricsReporter.query.enabled=true metrics.dbMetricsReporter.query.statements.enabled=false Grafana sample dashboard: https://github.com/Alfresco/acs- packaging/tree/master/docs/micrometer
  • 16. Learn. Connect. Collaborate. Micrometer Available metrics Tomcat metrics: ● servlet_request timer (number of responses with particular response times) Configuration: metrics.tomcatMetricsReporter.enabled=true Grafana sample dashboard: https://github.com/Alfresco/acs- packaging/tree/master/docs/micrometer
  • 17. Learn. Connect. Collaborate. Micrometer Future plans ● Integrate monitoring into Helm charts and CloudWatch in AWS ● More metrics: ○ Audit ○ Renditions ○ Hazelcast caches ○ Logged in users ○ etc..
  • 19. Learn. Connect. Collaborate. ACS and ActiveMQ • Leading Open Source messaging platform • Reliable, high performance messaging • Fully supports JMS 1.1 and J2EE 1.4 with support for transient, persistent, transactional and XA messaging • Supports a variety of Cross Language Clients and Protocols from Java, C, C++, C#, Ruby, Perl, Python, PHP – OpenWire – Stomp – AMQP – MQTT
  • 20. Learn. Connect. Collaborate. ACS and ActiveMQ • Alfresco Content Services (ACS) used ActiveMQ for message queuing with various products, for example Alfresco Media Management or Alfresco Sync Service (Desktop Sync) • Starting from ACS 6.1, ActiveMQ is a mandatory requirement for the ACS Repository and its new Raw Events module/capability
  • 21. Learn. Connect. Collaborate. ACS and ActiveMQ Connect ACS to ActiveMQ: Define the location of ActiveMQ in your alfresco- global.properties file: messaging.broker.url=failover:(tcp://server:61616)?timeout =3000 where server is the host name of the server where ActiveMQ is installed. Notes: • When you set up ActiveMQ, the Alfresco Content Services messaging subsystem is set to start up automatically. • Any changes to broker URL requires ACS restart to apply the changes.
  • 22. Learn. Connect. Collaborate. ACS and ActiveMQ Ways to deploy ActiveMQ: ● Containerized deployment* https://github.com/Alfresco/acs-deployment ○ docker-compose ○ Helm / Kubernetes ● Using distribution zip http://activemq.apache.org/download.html ● ...or your favourite managed offering, e.g. AmazonMQ * Conteinerized deployments of ACS use Alfresco ActiveMQ image: https://github.com/Alfresco/alfresco-docker-activemq Can be also deployed via Helm chart: https://github.com/Alfresco/alfresco-activemq-deployment
  • 24. Learn. Connect. Collaborate. Two Generals’ Problem Possible inconsistencies: • DB succeeds, but MB fails • MB succeeds, but DB fails “Two Generals’ Problem” In Enterprise Software: • Distributed Transactions (XA)
  • 25. Learn. Connect. Collaborate. Distributed Transactions Severe additional complexity: • Transaction manager required Additional constraints • All data sources need to support XA ⇒ In 6.1: NO Distributed Transactions
  • 26. Learn. Connect. Collaborate. Residual Error False Positive: Messages have been sent out, but DB transaction is rolled back False Negative: DB transaction succeeded, but Message Broker fails TransactionAwareEventProducer • Implements 2nd approach • Collects messages during transaction • Sends all at once after commit
  • 28. Learn. Connect. Collaborate. Recap: What are Policies And Behaviours Policy / Behaviour framework: Implementation of the observer pattern in Alfresco Policy: Advertisement of an Extension Point provided by a component Behaviour: Subscription of a Policy, i.e. code that gets executed when a Policy is triggered
  • 29. Learn. Connect. Collaborate. EventBehaviour Existing Behaviours: • JavaBehaviour • ScriptBehaviour New in 6.1: • EventBehaviour
  • 30. Learn. Connect. Collaborate. EventBehaviour Example @Autowired private TransactionAwareEventProducer taep; @Autowired private PolicyComponent policyComponent; @Override public void configure() throws Exception { EventBehaviour eventBehaviour = new EventBehaviour(taep, sourceQueue, this, "createEvent", Behaviour.NotificationFrequency.EVERY_EVENT); policyComponent.bindClassBehaviour( ContentServicePolicies.OnContentUpdatePolicy.QNAME, RenditionModel.ASPECT_RENDITIONED, eventBehaviour); ... } public OnContentUpdatePolicyEvent createEvent(NodeRef node, boolean newContent) { OnContentUpdatePolicyEvent event = new OnContentUpdatePolicyEvent(); event.setNodeRef(node.toString()); event.setNewContent(newContent); ... return event; }
  • 32. Learn. Connect. Collaborate. Transform Service Bottleneck… ● Document transformations are used heavily within ACS. All content imported into ACS generates renditions, for example thumbnails and previews ● Most of the transformations were synchronous, consuming resources of ACS JVM or underlying OS. ● Security risk of running them on the same machine as ACS ● Transformations have been a limiting factor when ingesting large amounts of content, this means that, in high load situations, transformations had to be disabled
  • 33. Learn. Connect. Collaborate. Transform Service Overview New Transform Service features: ● Microservice architecture ○ Independent scalability ○ Cost effective ○ High throughput ● Co-exists with existing transformations in ACS ● Containerised deployments only ● ACS 6.1+ ● Enterprise-only ● Supports a smaller subset of available transformations comparing to 6.0
  • 34. Learn. Connect. Collaborate. ACS Async Rendition Service V1 REST APIV0 REST API Rendition Service 2 Rendition Service Thumbnail Service Action Service Content Service Shared File Store <<Docker>> Content Update Transform Service Router <<Docker>> Transformers <<Docker>> Transformers <<Docker>> Transformers <<Docker>> Transformers <<Docker>> Transform Response Transform Request TransformerTransformerLocal Transformers Solr 6 101010 101010 101010
  • 35. Learn. Connect. Collaborate. Transform Service Configuration local.transform.service.enabled=true transform.service.enabled=true Rendition 2 Definition Bean <bean id="renditionDefinition2DocLib" class="org.alfresco.repo.rendition2.RenditionDefinition2Impl"> <constructor-arg name="renditionName" value="doclib"/> <constructor-arg name="targetMimetype" value="image/png"/> <constructor-arg name="transformOptions"> <map> <entry key="resizeWidth" value="100"/> <entry key="resizeHeight" value="100"/> <entry key="allowEnlargement" value="false" /> <entry key="maintainAspectRatio" value="true"/> <entry key="thumbnail" value="true"/> <entry key="timeout" value="${system.thumbnail.definition.default.timeoutMs}" /> </map> </constructor-arg> <constructor-arg name="registry" ref="renditionDefinitionRegistry2"/> </bean> ImageMagick ‘flat’ Transform Options alphaRemove autoOrient startPage endPage cropGravity cropWidth cropHeight cropPercentage cropXOffset cropYOffset thumbnail resizeHeight resizeWidth resizePercentage allowEnlargement maintainAspectRatio
  • 36. Learn. Connect. Collaborate. Transform Service Future plans • New Transform Service will increase the number of supported transformations. – Integrate with Search Services (to text conversion) – Extensibility – AI and more.. • The synchronous renditions are deprecated and will be removed from content repository completely • Metadata extraction is moved out from content repository
  • 38. Learn. Connect. Collaborate. Alfresco Identity Service Overview Alfresco Identity Service provides authentication and proof of identity, in the form of a standard token (JSON Web Token https://jwt.io ), understood by Digital Business Platform components: ○ ACS 6.1 REST APIs (v1) and CMIS ○ APS 1.10 REST APIs ○ AGS 3.1 REST API (v1) ○ ADF 2.6 Alfresco Identity Service is based on Keycloak and supports: ○ LDAP (OpenLDAP) ○ SAML 2.0 (PingFederate) ○ OpenID Connect
  • 39. Learn. Connect. Collaborate. Alfresco Identity Service Deployment ● The deployment artifact is the alfresco-identity- service Helm Chart ○ http://kubernetes- charts.alfresco.com/stable/alfresco-identity- service-1.0.0.tgz ● Deployed, by default, as part of the alfresco- infrastructure Helm Chart ○ http://kubernetes- charts.alfresco.com/stable/alfresco- infrastructure-3.0.0.tgz ● Is NOT part of ACS 6.1 Helm charts Contains: ● Keycloak with Alfresco Theme ● PostgreSQL ● Ingress
  • 40. Learn. Connect. Collaborate. Alfresco Identity Service support in ACS Represented by authentication subsystem: ● alfresco/subsystems/Authentication/identity-service Based on Keycloak libs: • https://github.com/keycloak/keycloak (Supports JWT standard) Users and groups are still managed in ACS: • Can auto-create users • Works with LDAP sync (recommended) JWT and basic to access APIs in ACS AIS and ACS are (almost) pre-configured for dev/test (test real is present in AIS)
  • 41. Learn. Connect. Collaborate. Alfresco Identity Service Configuration Configure ACS alfresco-global.properties: authentication.chain=ais:identity-service,... identity-service.authentication.enabled=true identity-service.authentication.validation.failure.silent=true identity-service.authentication.defaultAdministratorUserNames=admin identity-service.authentication.allowGuestLogin=true identity-service.authentication.enable-username-password-authentication=true identity-service.auth-server-url=http://localhost:8180/auth identity-service.realm=alfresco identity-service.ssl-required=none identity-service.resource=alfresco identity-service.public-client=true Configure AIS: https://github.com/Alfresco/alfresco-identity-service/tree/master/docs
  • 42. Learn. Connect. Collaborate. Alfresco Identity Service Simplified sequence diagram: Client AIS ACS Request JWT Full example: https://github.com/Alfresco/alfresco-identity- service/blob/master/docs/resource/sequence/high-level-ldap-auth- sequence.png JWT: kfYclR.. GET /some-api Authorization: Bearer kfYcIR... Get signing keys Verify JWT Process request Response to client
  • 43. Learn. Connect. Collaborate. Alfresco Identity Service Future plans • User and group management will be moved from ACS into AIS • Authentication chain will be deprecated and removed. List of supported authentication types will be extended in AIS. • (Maybe) Move management of ACLs to AIS
  • 45. Learn. Connect. Collaborate. HELM Charts Since 6.0 • New additional deployment option • Existing deployment options still available • Codification of documentation and recommended best practices • Reference deployment: starting point for your own environment description • w/o params: Brings everything in a container • Parameterize to use your infrastructure
  • 46. Learn. Connect. Collaborate. 6.1 AWS Deployment • Set of CloudFormation templates plus scripts and tooling • Sets up: – VPC + Bastion – EKS + Worker Nodes – S3 incl replication – Aurora DB – AmazonMQ – IAM permissions
  • 48. Learn. Connect. Collaborate. ACS on AWS Source code locations ● CFN templates + AWS alterations https://github.com/Alfresco/acs-deployment-aws ● ACS Helm Charts https://github.com/Alfresco/acs-deployment ● Charts Repository https://github.com/Alfresco/charts
  • 50. Learn. Connect. Collaborate. Removed and deprecated features ● Removed (configuration and code) ○ CIFS ○ NTLM ● Deprecated (will be removed in future versions) ○ Synchronous transformations ○ Cloud Sync
  • 51. Learn. Connect. Collaborate. Beyond • Extract common components • Identity Service – Move profiles to AIS – Move user/group info to AIS – Perform authentication outside of ACS – All requests carry JWT token • Move to Async, candidates – Auditing – Metadata extraction – Search indexing – Rules / Actions • Deployment options for other cloud provider
  • 52. Thanks! Reach us on email: alex.mukha@alfresco.com stefan.kopf@alfresco.com GitHub: https://github.com/Alfresco JIRA: https://issues.alfresco.com
  • 53.
  • 54.
  • 55.
  • 56. Learn. Connect. Collaborate. New Raw Events Motivation (the “why?”) • decoupling • asynchronous processing • integration • fault-tolerance • spikability How? • An evolutionary path to asynchronous processing based upon policies / behaviours • The event model enables us to execute code when an event happens in the system. These events are referred to as “policies”. With “behaviours”, you can register code that is executed when these events occur.
  • 57. Learn. Connect. Collaborate. New Raw Events Motivation (the “why?”) • decoupling • asynchronous processing • integration • fault-tolerance • spikability How? • An evolutionary path to asynchronous processing based upon policies / behaviours • The event model enables us to execute code when an event happens in the system. These events are referred to as “policies”. With “behaviours”, you can register code that is executed when these events occur.
  • 59. Learn. Connect. Collaborate. New Raw Events The basic data which is captured for each event: • id • type • authenticatedUser • executingUser • timestamp • schema
  • 60. Learn. Connect. Collaborate. New Raw Events EventProducers AbstractEventProducer • Abstract helper to send events to an endpoint. The AbstractEventProducer acts as a wrapper that provides marshalling for a Camel ProducerTemplate. • A client has the option of creating an event producer without supplying an endpoint. In this case, an endpoint must be provided with every send operation. • A client also has the option to provide an ObjectMapper that will be used to marshal basic POJOs to JSON, before sending the event. TransactionAwareEventProducer • Events are scheduled to be sent in post-commit phase.
  • 61. Learn. Connect. Collaborate. New Raw Events EventBehaviour • Event based Behaviour. • A client uses an EventBehaviour to bind a send event behaviour to a Class-level Policy. • The endpoint uri can be a queue or a topic. – e.g: jms:acs-repo-rendition- events?jmsMessageType=Text • The event behavior delegates the generation of the event to a method pointer. The pointer is represented by an instance object and method name.
  • 62. Learn. Connect. Collaborate. New Raw Events Event Behaviour Notification Frequency • EVERY_EVENT: The event handler is then just executed wherever it is being invoked in the code. The name of this notification frequency implies that the event handler will be called multiple times, but that is not the case. • TRANSACTION_COMMIT: This is the default, if the notification frequency is not specified. The event handler is queued and invoked at the end of the transaction, after it has been committed. A proxy around the event handler manages the queuing. • FIRST_EVENT: The event handler is invoked just after the transaction is started. A proxy around the event handler manages this.