Search code examples
design-patternsarchitecturemicroservicesalfresco

How does Alfresco's microservices access database?


Alfresco ECM is based on micro-service architecture. Does each micro-service connects to a shared database? Or each micro-service maintains it's own database?. Can anyone explain the micro service architecture of alfresco content service at a higher level?


Solution

  • At its core is something called the content repository, or Alfresco Content Services (ACS). The repository is responsible for persisting and securing folders and content. Metadata about those folders and content resides in the database.

    ACS exposes a REST API which other applications can use to manage the repository.

    On top of that you have one or more front-ends. The "old" front-end is called Alfresco Share. It does not write to a database--it only reads and writes data to ACS. The newer front-end is the Alfresco Digital Workspace which is an Angular application that leverages the REST API to interact with ACS. It also does not directly access a database. The ADW was built with the Alfresco Developer Framework (ADF) which is a set of Angular components and a client-side JavaScript API which can be used with or without Angular.

    Next you've got transformation services. The transformation service is responsible for transforming content from one format to another. It has no database interactions.

    All of the content stored in the repo is full-text indexed. The metadata about that content is also indexed. The Alfresco Search Service facilitates indexing and querying. It has no database interactions. It uses Solr under the covers.

    If you have significant workflow/business process needs you might also have Alfresco Process Services installed. APS, which is based on the Activiti BPM engine, can be used with or without ACS. It writes data to a database. This database might be the same database server used by ACS or it could be a different one, it's up to you.

    Rounding out the high-level overview is Alfresco Governance Services which you might also see referred to as Records Management. AGS is a module that gets installed into ACS and is then accessed from an end-user perspective either in Alfresco Share or an ADF-based front-end (in later versions). AGS does not have any database interactions.

    All of this is covered in detail on Alfresco's web site and in the docs.