SlideShare a Scribd company logo
1 of 62
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

From zero to hero Backing up alfresco
From zero to hero Backing up alfrescoFrom zero to hero Backing up alfresco
From zero to hero Backing up alfrescoToni 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 SearchEnterpriseAngel 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 ThenAngel Borroy López
 
Alfresco DevCon 2019 - Alfresco Identity Services in Action
Alfresco DevCon 2019 - Alfresco Identity Services in ActionAlfresco DevCon 2019 - Alfresco Identity Services in Action
Alfresco DevCon 2019 - Alfresco Identity Services in ActionFrancesco Corti
 
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 RepositoryJeff Potts
 
Alfresco Share - Recycle Bin Ideas
Alfresco Share - Recycle Bin IdeasAlfresco Share - Recycle Bin Ideas
Alfresco Share - Recycle Bin IdeasAlfrescoUE
 
(Re)Indexing Large Repositories in Alfresco
(Re)Indexing Large Repositories in Alfresco(Re)Indexing Large Repositories in Alfresco
(Re)Indexing Large Repositories in AlfrescoAngel Borroy López
 
Guide to alfresco monitoring
Guide to alfresco monitoringGuide to alfresco monitoring
Guide to alfresco monitoringMiguel Rodriguez
 
Bulk Export Tool for Alfresco
Bulk Export Tool for AlfrescoBulk Export Tool for Alfresco
Bulk Export Tool for AlfrescoRichard McKnight
 
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...J V
 
Alfresco DevCon 2019: Encryption at-rest and in-transit
Alfresco DevCon 2019: Encryption at-rest and in-transitAlfresco DevCon 2019: Encryption at-rest and in-transit
Alfresco DevCon 2019: Encryption at-rest and in-transitToni de la Fuente
 
Workflow Engines & Event Streaming Brokers - Can they work together? [Current...
Workflow Engines & Event Streaming Brokers - Can they work together? [Current...Workflow Engines & Event Streaming Brokers - Can they work together? [Current...
Workflow Engines & Event Streaming Brokers - Can they work together? [Current...Natan Silnitsky
 
Scale your Alfresco Solutions
Scale your Alfresco Solutions Scale your Alfresco Solutions
Scale your Alfresco Solutions Alfresco Software
 
Alfresco Security Best Practices Guide
Alfresco Security Best Practices GuideAlfresco Security Best Practices Guide
Alfresco Security Best Practices GuideToni de la Fuente
 
Kafka Summit SF 2017 - Kafka Connect Best Practices – Advice from the Field
Kafka Summit SF 2017 - Kafka Connect Best Practices – Advice from the FieldKafka Summit SF 2017 - Kafka Connect Best Practices – Advice from the Field
Kafka Summit SF 2017 - Kafka Connect Best Practices – Advice from the Fieldconfluent
 
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみようAlfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみようTasuku Otani
 
Intro to the Alfresco Public API
Intro to the Alfresco Public APIIntro to the Alfresco Public API
Intro to the Alfresco Public APIJeff Potts
 
No Docker? No Problem: Automating installation and config with Ansible
No Docker? No Problem: Automating installation and config with AnsibleNo Docker? No Problem: Automating installation and config with Ansible
No Docker? No Problem: Automating installation and config with AnsibleJeff Potts
 
Introduction to Kafka Streams
Introduction to Kafka StreamsIntroduction to Kafka Streams
Introduction to Kafka StreamsGuozhang Wang
 

What's hot (20)

From zero to hero Backing up alfresco
From zero to hero Backing up alfrescoFrom zero to hero Backing up alfresco
From zero to hero Backing up alfresco
 
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
 
Alfresco DevCon 2019 - Alfresco Identity Services in Action
Alfresco DevCon 2019 - Alfresco Identity Services in ActionAlfresco DevCon 2019 - Alfresco Identity Services in Action
Alfresco DevCon 2019 - Alfresco Identity Services in Action
 
Alfresco tuning part1
Alfresco tuning part1Alfresco tuning part1
Alfresco tuning part1
 
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 Share - Recycle Bin Ideas
Alfresco Share - Recycle Bin IdeasAlfresco Share - Recycle Bin Ideas
Alfresco Share - Recycle Bin Ideas
 
(Re)Indexing Large Repositories in Alfresco
(Re)Indexing Large Repositories in Alfresco(Re)Indexing Large Repositories in Alfresco
(Re)Indexing Large Repositories in Alfresco
 
Guide to alfresco monitoring
Guide to alfresco monitoringGuide to alfresco monitoring
Guide to alfresco monitoring
 
Bulk Export Tool for Alfresco
Bulk Export Tool for AlfrescoBulk Export Tool for Alfresco
Bulk Export Tool for Alfresco
 
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
 
Alfresco DevCon 2019: Encryption at-rest and in-transit
Alfresco DevCon 2019: Encryption at-rest and in-transitAlfresco DevCon 2019: Encryption at-rest and in-transit
Alfresco DevCon 2019: Encryption at-rest and in-transit
 
Workflow Engines & Event Streaming Brokers - Can they work together? [Current...
Workflow Engines & Event Streaming Brokers - Can they work together? [Current...Workflow Engines & Event Streaming Brokers - Can they work together? [Current...
Workflow Engines & Event Streaming Brokers - Can they work together? [Current...
 
Scale your Alfresco Solutions
Scale your Alfresco Solutions Scale your Alfresco Solutions
Scale your Alfresco Solutions
 
Alfresco Security Best Practices Guide
Alfresco Security Best Practices GuideAlfresco Security Best Practices Guide
Alfresco Security Best Practices Guide
 
Kafka Summit SF 2017 - Kafka Connect Best Practices – Advice from the Field
Kafka Summit SF 2017 - Kafka Connect Best Practices – Advice from the FieldKafka Summit SF 2017 - Kafka Connect Best Practices – Advice from the Field
Kafka Summit SF 2017 - Kafka Connect Best Practices – Advice from the Field
 
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみようAlfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
 
Intro to the Alfresco Public API
Intro to the Alfresco Public APIIntro to the Alfresco Public API
Intro to the Alfresco Public API
 
No Docker? No Problem: Automating installation and config with Ansible
No Docker? No Problem: Automating installation and config with AnsibleNo Docker? No Problem: Automating installation and config with Ansible
No Docker? No Problem: Automating installation and config with Ansible
 
Introduction to Kafka Streams
Introduction to Kafka StreamsIntroduction to Kafka Streams
Introduction to Kafka Streams
 

Similar to Architectural changes in ACS 6.1

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 JoseHao Chen
 
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
 
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 2018Amazon Web Services
 
Meetup 2022 - APIs with Quarkus.pdf
Meetup 2022 - APIs with Quarkus.pdfMeetup 2022 - APIs with Quarkus.pdf
Meetup 2022 - APIs with Quarkus.pdfLuca Mattia Ferrari
 
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-upJerome Marc
 
Apache Eagle in Action
Apache Eagle in ActionApache Eagle in Action
Apache Eagle in ActionHao 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 2019UA DevOps Conference
 
Regain Control Thanks To Prometheus
Regain Control Thanks To PrometheusRegain Control Thanks To Prometheus
Regain Control Thanks To PrometheusEtienne Coutaud
 
New features in qtp11
New features in qtp11New features in qtp11
New features in qtp11G.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.0Prasad Mukhedkar
 
Spring Boot Loves K8s
Spring Boot Loves K8sSpring Boot Loves K8s
Spring Boot Loves K8sVMware 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 LaskewitzDaniel 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 ACS 6.1 (20)

OpenStack Watcher
OpenStack WatcherOpenStack Watcher
OpenStack Watcher
 
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
 
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
 
Week 4 lecture material cc (1)
Week 4 lecture material cc (1)Week 4 lecture material cc (1)
Week 4 lecture material cc (1)
 
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時代の自動化、そのリアリティとは?~
 
Pixels_Camp
Pixels_CampPixels_Camp
Pixels_Camp
 

Recently uploaded

Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfngoud9212
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfjimielynbastida
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 

Recently uploaded (20)

Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdf
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdf
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 

Architectural changes in ACS 6.1

  • 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.