Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations

Presentation on theme: "MT Internals (enabling multi-tenant SaaS “in the cloud”)"— Presentation transcript:

1 MT Internals (enabling multi-tenant SaaS “in the cloud”)
About me Jan Vonka, Senior Alfresco for over 5 years Core Repository team and Cloud technical lead, most recently implementing Hybrid Sync About the talk Multi-tenant internals … marketing: “enabling multi-tenant SaaS “in the cloud” ( MT Internals (enabling multi-tenant SaaS “in the cloud”) Jan Vonka Core Repository - Cloud / Hybrid Services

2 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) About the audience Who’s tried to use MT option (Community and/or Enterprise) ? Who’s has used Alfresco “in the cloud” … Network => Tenant

3 MT Overview

4 Repository (including Transforms)
MT Overview 4.x instance – example 1 Share APIs / Protocols (CMIS, REST, WebDAV, …) On order of 4 machine nodes (physical and/or virtual) Repository (including Transforms) DB Content (Shared F/S) Search (Solr)

5 MT Overview 4.x instance – example 2 Share nodes APIs / Protocols
(CMIS, REST, WebDAV, …) Repository Cluster R2 R1 R3 In addition, also load-balancers and/or web proxies On order of 10 to 15 machine nodes (physical and/or virtual) Transformer nodes T2 T1 T3 DB DB2 DB1 Content (Shared F/S) Search nodes Solr2 Solr1 Solr3

6 MT Overview Alfresco “vanilla” – single-tenant (single instance)
Content DB Search Index Alfresco

7 MT Overview Alfresco – single-tenant (multi-instance) T2 T1 T4 T3
Content DB Search Index Alfresco Cluster Content DB Search Index Alfresco Cluster T4 T3 Content DB Search Index Alfresco Cluster Content DB Search Index Alfresco Cluster

8 MT Overview Alfresco MT – multi-tenant (single instance) Content DB
Search Index Alfresco Cluster T1 T2 T3 T4 Data is shown as logically partitioned, but in fact is co-mingled by default (in terms of DB, Content binaries and Solr indexes)

9 MT Overview Why use MT ? Economies of scale Easier to manage 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

10 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

11 MT Core

12 MT Core MT implementation – tenant context
Auth (Security) ctx => fully qualified userid minimise impact on APIs + support standard protocols Internally partitioned by Alfresco “store” workspace://SpacesStore

13 MT Core MT implementation – tenant context (cont’)
Company Home Sites Site1, Site2, … User Homes - alf_store (root_node_id) <- alf_node (<- alf_node_aspects, alf_node_properties) <= alf_child_assoc

14 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)

15 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

16 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)

17 MT Core See: 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 name="proxyInterfaces"> <list> <value>org.alfresco.service.cmr.repository.NodeService</value> </list> <property name="interceptorNames"> <value>multiTNodeServiceInterceptor</value> <bean id="dbNodeService" class="org.alfresco.repo.node.db.DbNodeServiceImpl" init-method="init" > <!-- … more here … ->

18 MT Core Other examples … Core Services, eg. APIs & Protocols, eg.
NodeService -> FileFolderService ContentService SearchService WorkflowService (JBPM + Activiti since v4) … etc APIs & Protocols, eg. WebScripts CMIS WebDAV

19 What’s new in Alfresco v4.x ?

20 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 / Community 4.2.a

21 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

22 How does Alfresco “in the cloud” differ ?

23 How does Alfresco “in the cloud” differ ?
MT Core 4.x except hosted on AWS and … Alfresco Cluster DB (RDS) Content (S3) Search Index (Solr)

24 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” Key difference is support for Network switching Other Additional Network attributes (eg. type of Network, max file upload size …) Network usage / quota

25 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 companies signed up in first 3 months Generic improvements get pushed back to core code

26 Futures

27 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 ? SPP – initially “in the cloud” Partitioning … eg. DB (multi-schema, multi-instance ?), Solr partitioning (multi-core, multi-instance ?) Optimise Enterprise networks/customers ? Refactor of Dynamic Models cache - eg. limited custom modeling in the cloud ?, CMIS 1.1 – optional type management support Public vs Private - … eg. public vs private instances “in the cloud” (likely single tenant, but not necessarily on-prem) => managed service … plus (optionally) hybrid

28 Summary

29 Summary MT Core What’s new in Alfresco 4.x ?
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 …

30 Thank you  … Questions & Feedback. Photo credits: http://www

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

Similar presentations

Ads by Google