mt internals (enabling multi-tenant saas in the cloud) jan vonka core repository - cloud / hybrid...

Post on 26-Mar-2015

220 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

MT Internals(enabling multi-tenant SaaS “in the cloud”)

Jan Vonka

Core Repository - Cloud / Hybrid Services

Agenda

• Multi-Tenant (MT) Overview

• MT Core

• MT 4.x and “in the cloud”• What’s new in Alfresco 4.x ?• How does Alfresco “in the cloud” differ ?

• Summary and Feedback (Q & A)

MT Overview

MT Overview4.x instance – example 1

DBDB Content(Shared F/S)

Content(Shared F/S)

Search (Solr)

Search (Solr)

ShareShare

Repository (including Transforms)Repository (including Transforms)

APIs / Protocols(CMIS, REST, WebDAV,

…)

APIs / Protocols(CMIS, REST, WebDAV,

…)

MT Overview4.x instance – example 2

DBDBDB2DB1

Content(Shared F/S)

Content(Shared F/S)

Search nodesSearch nodesSolr2Solr1 Solr3

Share nodesShare nodesSh2Sh1 Sh3

Repository ClusterRepository ClusterR2R1 R3

Transformer nodes

Transformer nodesT2T1 T3

APIs / Protocols(CMIS, REST, WebDAV,

…)

APIs / Protocols(CMIS, REST, WebDAV,

…)

MT Overview

ContentContentDBDB Search Index

Search Index

AlfrescoAlfresco

Alfresco “vanilla” – single-tenant (single instance)

Alfresco – single-tenant (multi-instance)

MT Overview

ContentContentDBDB Search IndexSearch Index

Alfresco Cluster

Alfresco Cluster

ContentContentDBDB Search IndexSearch Index

AlfrescoClusterAlfrescoCluster

ContentContentDBDB Search IndexSearch Index

AlfrescoClusterAlfrescoCluster

ContentContentDBDB Search IndexSearch Index

Alfresco Cluster

Alfresco Cluster

T1T1 T2T2

T3T3 T4T4

Alfresco MT – multi-tenant (single instance)

MT Overview

ContentContentDBDB Search IndexSearch Index

Alfresco ClusterAlfresco Cluster

T1T1

T2T2

T3T3

T4T4

MT Overview

Why use MT ?

•Economies of scale• Lower licensing / TCO

•Easier to manage• Less administrative overhead, easier upgrades

•Scale• Cloud – multi-tenant SaaS (Software as a Service)

•New use-cases• Cloud – eg. B2B collaboration

MT Overview

Alfresco has provided multi-tenant option since v3

•Single instance / multiple tenants

•Each tenant can access logical repo

•Full partitioning (isolated tenants)

•UIs + APIs / Protocols

•Dynamic Models

MT Core

MT Core

MT implementation – tenant context

• Auth (Security) ctx => fully qualified userid• minimise impact on APIs + support standard

protocols• myuser@mytenant

• Internally partitioned by Alfresco “store”• workspace://SpacesStore

• workspace://@@mytenant@@SpacesStore

MT Core

MT implementation – tenant context (cont’)

• workspace://@@acme.com@@SpacesStore• Company Home

• Sites• Site1, Site2, …

• User Homes• fsmith@acme.com, jdoe@acme.com, …

• workspace://@@ano.co.uk@@SpacesStore• Company Home

• Sites• Site1, Site2, …

• User Homes• fsmith@ano.co.uk, jdoe@ano.co.uk

MT Core

MT implementation – create tenant

• When creating a tenant, we “bootstrap” the data …

• create tenant-specific stores (x5)• Live store (workspace://SpacesStore)• Version2 store• Archive store• User store• System store

• add to “alf_tenant” table• Tenant Domain, Enabled/Disabled, Content Root (if not co-

mingled)

MT Core

MT implementation – Services vs DAOs

•Services / APIs• “always” accessed in tenant ctx • notable exception is QuickShare service

• public/shared links => no login required

•Persistence DAOs • direct use• in some cases, apply to multiple / all (?) tenants

• eg. system-wide patches / jobs etc

MT Core

Quick reference … something to review later

• MultiTServiceImpl TenantService• Provides name mangling – injected in various

services

• MultiTAdminServiceImpl TenantAdminService

• Manage tenants – create, disable / enable, delete

• MultiTNodeServiceInterceptor• example that wraps (intercepts) generic

NodeService• instead of injecting TenantService (or extending)

MT CoreSee: node-services-context.xml

<bean id="multiTNodeServiceInterceptor" class="org.alfresco.repo.tenant.MultiTNodeServiceInterceptor"> <property name="tenantService"> <ref bean="tenantService" /> </property></bean>

<bean id="mtAwareNodeService" class="org.springframework.aop.framework.ProxyFactoryBean" > <property name="targetName"> <value>dbNodeService</value> </property> <property name="proxyInterfaces"> <list> <value>org.alfresco.service.cmr.repository.NodeService</value> </list> </property> <property name="interceptorNames"> <list> <value>multiTNodeServiceInterceptor</value> </list> </property></bean>

<bean id="dbNodeService" class="org.alfresco.repo.node.db.DbNodeServiceImpl" init-method="init" > <!-- … more here … -></bean>

MT Core

Other examples …

• Core Services, eg.• NodeService -> FileFolderService• ContentService• SearchService• WorkflowService (JBPM + Activiti since v4)• … etc

• APIs & Protocols, eg.• WebScripts• CMIS• WebDAV

What’s new in Alfresco v4.x ?

What’s new in Alfresco v4

Changes include:

• Activiti support for MT• in addition to JBPM

• Solr support for MT• “core” tracking, tenant ctx filter, …

• MT pre-configured (enable w/ 1st tenant)• note: since Enterprise 4.0.2 / Community 4.2.a

What’s new in Alfresco v4

Changes include:

• Alf_Tenant table• replaces attribute list

• Common implementation• eg. for (tenant-based) caches

• Various bug fixes & other related improvements• from Cloud release + customer feedback

How does Alfresco “in the cloud” differ ?

How does Alfresco “in the cloud” differ ?

MT Core 4.x except hosted on AWS and …

Search Index (Solr)

Search Index (Solr)

DB (RDS)DB (RDS) Content (S3)Content (S3)

Alfresco ClusterAlfresco Cluster

How does Alfresco “in the cloud” differ ?

… with Tenant (aka. Network switching)

• Unlike MT core, cloud allows Tenant switching• User has primary tenant• Can be invited to secondary tenants

• We split Tenant ctx from Auth ctx (see TenantUtil)

• Share + APIs support tenant switching• via cloud extensions for:

• Share / Surf• WebDAV protocol• SharePoint protocol• Core Repo APIs – including the new “public API”

How does Alfresco “in the cloud” differ ?Scaling – networks, users, sites, documents, …

•Hosted Core MT might be “100s” of tenants

•Cloud supports “100s of thousands” of tenants• eg. 15000 companies signed up in first 3 months

•Generic improvements get pushed back to core code

Futures

Futures

Health warning – this slide is speculative

• Driven by both Enterprise and Cloud use-cases

• Scaling – scale & partition tiers, as needed• SharePoint Protocol• Refactor of MT dynamic models (+ CMIS 1.1)• More dynamic Share / platform (per-tenant overrides)• Public / Private / Hybrid – MT vs ST• …

• What would you like to see on the list ?

Summary

Summary

• MT Core• Fully partitioned by tenant context

• What’s new in Alfresco 4.x ?• Activiti, Solr, … + improvements & bug fixes

• How does Alfresco “in the cloud” differ ?• Network switching

• Please try it out• Download latest Community 4.2 …• http://wiki.alfresco.com/wiki/Multi-Tenancy

Thank you

… Questions & Feedback ?

Photo credits: http://www.stonebalancing.com/

top related