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

2014-08-28 Thread Bertrand Delacretaz
Hi Stefan,

On Fri, Aug 22, 2014 at 2:03 PM, Stefan Seifert sseif...@pro-vision.de 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


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

2014-08-22 Thread Bertrand Delacretaz
Hi,

On Mon, Aug 18, 2014 at 7:35 PM, Ruben Reusser r...@headwire.com 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


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

2014-08-22 Thread Stefan Seifert
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



[RT] The various roles of (multitenant) content

2014-08-18 Thread 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


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

2014-08-18 Thread 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 bdelacre...@apache.org 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


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

2014-08-18 Thread Bertrand Delacretaz
Hi,

On Mon, Aug 18, 2014 at 2:56 PM, Ian Boston i...@tfd.co.uk 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


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

2014-08-18 Thread 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 i...@tfd.co.uk 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