[RT] The various roles of (multitenant) content

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

[RT] The various roles of (multitenant) content

Bertrand Delacretaz
Hi,

I'm working on various experiments (like [1]) related to continuous
deployment with Sling, and having a clearer definition of the various
roles of the content that a typical Sling applications manages would
help. I'm saying "roles" instead of "types" on purpose, to avoid
confusion with Content-Type ;-)

There's a lot of ties between this and our recent discussions about
multi-tenancy, so refining this tentative list of roles might help for
that as well.

Does this list fit with your use cases? Do people see other roles?

My context is a number of Sling instances sharing a common content repository.

Deliverable content:
Displayed on a website or mobile app for example.
Can be global, shared between a group of tenants or tenant-specific.

System content:
Defines how a specific version of the system behaves.
Multiple system versions can coexist in a shared content repository
(as we demonstrated in [1], in a limited way)

Application content:
Extensions or overrides of system content, that modify how the system behaves.
Usually tenant-specific, or maybe shared between a group of tenants

Module state content:
The typical example is workflow models and state, which is not
deliverable but persistent and might be partially shared.

Instance-specific transient content:
Transient content that's relevant to a single Sling instance. Compiled
scripts, for example.
Not needed when the Sling instance starts.

WDYT?

-Bertrand

[1] https://github.com/ArtyomStetsenko/sling-devops-experiments
Reply | Threaded
Open this post in threaded view
|

Re: [RT] The various roles of (multitenant) content

Ian Boston
Hi,
Is configuration part of application content or system content or both?

I can see that in a clustered environment you might want to have
configuration shared centrally amongst many versions of the running
application, but you might also need configuration local to a running
version, so that upgrades don't require all running instances to be
taken offline.

Best Regards
Ian


On 18 August 2014 10:12, Bertrand Delacretaz <[hidden email]> wrote:

> Hi,
>
> I'm working on various experiments (like [1]) related to continuous
> deployment with Sling, and having a clearer definition of the various
> roles of the content that a typical Sling applications manages would
> help. I'm saying "roles" instead of "types" on purpose, to avoid
> confusion with Content-Type ;-)
>
> There's a lot of ties between this and our recent discussions about
> multi-tenancy, so refining this tentative list of roles might help for
> that as well.
>
> Does this list fit with your use cases? Do people see other roles?
>
> My context is a number of Sling instances sharing a common content repository.
>
> Deliverable content:
> Displayed on a website or mobile app for example.
> Can be global, shared between a group of tenants or tenant-specific.
>
> System content:
> Defines how a specific version of the system behaves.
> Multiple system versions can coexist in a shared content repository
> (as we demonstrated in [1], in a limited way)
>
> Application content:
> Extensions or overrides of system content, that modify how the system behaves.
> Usually tenant-specific, or maybe shared between a group of tenants
>
> Module state content:
> The typical example is workflow models and state, which is not
> deliverable but persistent and might be partially shared.
>
> Instance-specific transient content:
> Transient content that's relevant to a single Sling instance. Compiled
> scripts, for example.
> Not needed when the Sling instance starts.
>
> WDYT?
>
> -Bertrand
>
> [1] https://github.com/ArtyomStetsenko/sling-devops-experiments
Reply | Threaded
Open this post in threaded view
|

Re: [RT] The various roles of (multitenant) content

Bertrand Delacretaz
Hi,

On Mon, Aug 18, 2014 at 2:56 PM, Ian Boston <[hidden email]> wrote:
...
> Is configuration part of application content or system content or both?
...

We probably need a more fine-grained definition for configs - for now
I see the following types of configuration:

a) Global system-level config, like the URL of a remote logging
server. This can be either pure OSGi configs or based on shared
repository content with suitable access control.

b) Version-specific system config, where Sling instances that run the
same version of system and application code share the same config.
Also manageable in the content repository with access control.

c) Application or tenant-specific config. Using non-OSGi configs which
are just content in the repository, picked up on the fly by services
that process a tenant-specific request, works. But I don't think we
currently have a solution for tenant-specific configuration of OSGi
services, unless the services are specifically designed for that.

So I'd say with our current installer there is configuration both in
system and application content. and tenant-specific configurations
require specific code for now.

-Bertrand
Reply | Threaded
Open this post in threaded view
|

Re: [RT] The various roles of (multitenant) content

Ruben Reusser
looking at this it seems the same functionality would be handy for
feature flags, no?

Ruben

On 8/18/2014 6:19 AM, Bertrand Delacretaz wrote:

> Hi,
>
> On Mon, Aug 18, 2014 at 2:56 PM, Ian Boston <[hidden email]> wrote:
> ...
>> Is configuration part of application content or system content or both?
> ...
>
> We probably need a more fine-grained definition for configs - for now
> I see the following types of configuration:
>
> a) Global system-level config, like the URL of a remote logging
> server. This can be either pure OSGi configs or based on shared
> repository content with suitable access control.
>
> b) Version-specific system config, where Sling instances that run the
> same version of system and application code share the same config.
> Also manageable in the content repository with access control.
>
> c) Application or tenant-specific config. Using non-OSGi configs which
> are just content in the repository, picked up on the fly by services
> that process a tenant-specific request, works. But I don't think we
> currently have a solution for tenant-specific configuration of OSGi
> services, unless the services are specifically designed for that.
>
> So I'd say with our current installer there is configuration both in
> system and application content. and tenant-specific configurations
> require specific code for now.
>
> -Bertrand

Reply | Threaded
Open this post in threaded view
|

Re: [RT] The various roles of (multitenant) content

Bertrand Delacretaz
Hi,

On Mon, Aug 18, 2014 at 7:35 PM, Ruben Reusser <[hidden email]> wrote:
> ...looking at this it seems the same functionality would be handy for feature
> flags, no?...

Not sure what you mean by that, can you explain more?
-Bertrand
Reply | Threaded
Open this post in threaded view
|

RE: [RT] The various roles of (multitenant) content

Stefan Seifert
In reply to this post by Bertrand Delacretaz
hello betrand.

i try to find the bridge to the multitenancy scenarios i've described in [1]:

>Deliverable content:
>Displayed on a website or mobile app for example.
>Can be global, shared between a group of tenants or tenant-specific.

this is what i've called "content" in the wiki page. may be page content, media assets etc., everything the editors enter into the system.
i18n translations may fall into this role as well.


>System content:
>Defines how a specific version of the system behaves.
>Multiple system versions can coexist in a shared content repository
>(as we demonstrated in [1], in a limited way)

this is for example configuration - but as you describe it mainly system-level configuration (e.g. OSGI configuration).
what is with the other types of configuration on the different levels (regions, tenants, sites). they do not belong into the role "system content", but they do not fit in the other roles as well.


>Application content:
>Extensions or overrides of system content, that modify how the system
>behaves.
>Usually tenant-specific, or maybe shared between a group of tenants

if an application is installed to be used by all tenants (e.g. "massive multi site scenario"), it may be global application-level overrides as well. but this fits in your "group of tenants" picture, where the group is all tenants.

i assume the whole application bundle falls into this category? but an application bundle usually consist of both OSGi bundles (system role) and scripts (application context role).


>Module state content:
>The typical example is workflow models and state, which is not
>deliverable but persistent and might be partially shared.

other examples are background jobs using sling event/job infrastructure. this is not "module"-related, or i do not understand clearly what you mean with "model" in this context.


>Instance-specific transient content:
>Transient content that's relevant to a single Sling instance. Compiled
>scripts, for example.
>Not needed when the Sling instance starts.

ok


stefan

[1] https://cwiki.apache.org/confluence/x/So2uAg

Reply | Threaded
Open this post in threaded view
|

Re: [RT] The various roles of (multitenant) content

Bertrand Delacretaz
Hi Stefan,

On Fri, Aug 22, 2014 at 2:03 PM, Stefan Seifert <[hidden email]> wrote:
>>System content:
>>Defines how a specific version of the system behaves.
>>Multiple system versions can coexist in a shared content repository
>>(as we demonstrated in [1], in a limited way)
>
> this is for example configuration - but as you describe it mainly system-level configuration (e.g. OSGI configuration).
> what is with the other types of configuration on the different levels (regions, tenants, sites). they do not belong into the role "system content", but they do not fit in the other roles as well...

I agree, that content might be called "tenant-specific application
content" maybe?

...
>>Application content:
>>Extensions or overrides of system content, that modify how the system
>>behaves.
>>Usually tenant-specific, or maybe shared between a group of tenants
...
> i assume the whole application bundle falls into this category? but an application bundle usually
> consist of both OSGi bundles (system role) and scripts (application context role)....

Currently I don't think we have a way to make OSGI services specific
to a tenant, unless the method signatures require tenant information.
This is a whole topic in itself.

-Bertrand
Reply | Threaded
Open this post in threaded view
|

RE: [RT] The various roles of (multitenant) content

Stefan Seifert


>-----Original Message-----
>From: Bertrand Delacretaz [mailto:[hidden email]]
>Sent: Thursday, August 28, 2014 6:31 PM
>To: dev
>Subject: Re: [RT] The various roles of (multitenant) content
>
>Hi Stefan,
>
>On Fri, Aug 22, 2014 at 2:03 PM, Stefan Seifert <[hidden email]>
>wrote:
>>>System content:
>>>Defines how a specific version of the system behaves.
>>>Multiple system versions can coexist in a shared content repository
>>>(as we demonstrated in [1], in a limited way)
>>
>> this is for example configuration - but as you describe it mainly system-
>level configuration (e.g. OSGI configuration).
>> what is with the other types of configuration on the different levels
>(regions, tenants, sites). they do not belong into the role "system content",
>but they do not fit in the other roles as well...
>
>I agree, that content might be called "tenant-specific application
>content" maybe?

yes, perhaps this matches (which is somewhat a subcategory of role "Application content" then)

stefan