James Falkner 9 Anos atrás Do you have to think about multi-tenancy when developing a new service using ServiceBuilder? Like, what if you remove the "companyId" column from your entities? Por favor, autentique-se para votar. Responda como... Cancelar Olaf Kock James Falkner 9 Anos atrás If you remove the companyId from ServiceBuilder entities, these entities will not work with multi-tenancy. They'll be the same over all, yes. As the technical name for "instance" is "company": well observed. Por favor, autentique-se para votar. Responda como... Cancelar
Olaf Kock James Falkner 9 Anos atrás If you remove the companyId from ServiceBuilder entities, these entities will not work with multi-tenancy. They'll be the same over all, yes. As the technical name for "instance" is "company": well observed. Por favor, autentique-se para votar. Responda como... Cancelar
Carlo Cavallieri 9 Anos atrás Hi Olaf, doesn't the porperty "company-limit" inside liferay-look-and-feel.xml for themes-plugin solve the problem of "themes sharing"?don't know if this xml files could also be used for portlet and hoock plugin ... Por favor, autentique-se para votar. Responda como... Cancelar Olaf Kock Carlo Cavallieri 9 Anos atrás There's something that I didn't stumble upon yet. I'll check it & try it out, then update. Thanks for the pointer Por favor, autentique-se para votar. Responda como... Cancelar Olaf Kock Olaf Kock 9 Anos atrás - Editado @Carlo: Thanks for the pointer. After doing it wrong in the first time (leading to LPS-54387, which is invalid), I have this working. However, that's only for themes, not for any other plugin type. So: To the letter (as I was speaking explicitly about themes) I was wrong. At least the principle holds - just only for every other plugin type but themes. Good catch, and I now know a new feature. Por favor, autentique-se para votar. Responda como... Cancelar Carlo Cavallieri Olaf Kock 9 Anos atrás thanks for your explanation Olaf Por favor, autentique-se para votar. Responda como... Cancelar
Olaf Kock Carlo Cavallieri 9 Anos atrás There's something that I didn't stumble upon yet. I'll check it & try it out, then update. Thanks for the pointer Por favor, autentique-se para votar. Responda como... Cancelar Olaf Kock Olaf Kock 9 Anos atrás - Editado @Carlo: Thanks for the pointer. After doing it wrong in the first time (leading to LPS-54387, which is invalid), I have this working. However, that's only for themes, not for any other plugin type. So: To the letter (as I was speaking explicitly about themes) I was wrong. At least the principle holds - just only for every other plugin type but themes. Good catch, and I now know a new feature. Por favor, autentique-se para votar. Responda como... Cancelar Carlo Cavallieri Olaf Kock 9 Anos atrás thanks for your explanation Olaf Por favor, autentique-se para votar. Responda como... Cancelar
Olaf Kock Olaf Kock 9 Anos atrás - Editado @Carlo: Thanks for the pointer. After doing it wrong in the first time (leading to LPS-54387, which is invalid), I have this working. However, that's only for themes, not for any other plugin type. So: To the letter (as I was speaking explicitly about themes) I was wrong. At least the principle holds - just only for every other plugin type but themes. Good catch, and I now know a new feature. Por favor, autentique-se para votar. Responda como... Cancelar Carlo Cavallieri Olaf Kock 9 Anos atrás thanks for your explanation Olaf Por favor, autentique-se para votar. Responda como... Cancelar
Carlo Cavallieri Olaf Kock 9 Anos atrás thanks for your explanation Olaf Por favor, autentique-se para votar. Responda como... Cancelar
Vanita Chawla 9 Anos atrás Great information on instances! Thanks Olaf. Por favor, autentique-se para votar. Responda como... Cancelar
Patrick Wolf 9 Anos atrás Very interesting indeed.What about multiple instances versus sharding? As you suggest you may use Liferay as a multi-tenant portal and create one instance per client (or tenant). Let's say that the services you sell get viral and you come up quickly with thousands of instances.How do you manage your back-up plan by tenant as your tenant's data clutter the database up since you get only one lportal database. In that case wouldn't it be more sensible to think of doing sharding. You would get one database per tenant. Would this be the best design when running Liferay as a multi-tenant platform? Por favor, autentique-se para votar. Responda como... Cancelar Olaf Kock Patrick Wolf 9 Anos atrás Hi Patrick,I don't like to advocate sharding. One reason is that the setup is not really intuitive, and it's not trivial to get a shard out of the collection. IMHO it does not solve the problem that you'd expect it to solve (e.g. ease separation) but just stores different instance's data in different shards. It's quite complicated to change the setup of the shards. Por favor, autentique-se para votar. Responda como... Cancelar
Olaf Kock Patrick Wolf 9 Anos atrás Hi Patrick,I don't like to advocate sharding. One reason is that the setup is not really intuitive, and it's not trivial to get a shard out of the collection. IMHO it does not solve the problem that you'd expect it to solve (e.g. ease separation) but just stores different instance's data in different shards. It's quite complicated to change the setup of the shards. Por favor, autentique-se para votar. Responda como... Cancelar
Patrick Wolf 9 Anos atrás Thank you for your feedback.What I meant is that you get one shard per tenant, i.e. tenants' data could then be easily retrieved and backed up. Otherwise, retrieving one tenant's data, should it be required by the tenant, sounds difficult if you get a lot of instances. You could do it with the CompanyId identifier unique for each instance, but painfully. Configuring sharding is not trivial but once this is done, maintenance and back-up by tenant would be easier. Please correct me if I am wrong, in a nutshell, I assume that creating multiple instances is great when you don't have to manage many tenants, but when the number of tenants increases exponentially, it may be a good idea to think of another convenient design, like sharding, even though this is a challenge. Por favor, autentique-se para votar. Responda como... Cancelar Olaf Kock Patrick Wolf 9 Anos atrás - Editado That's the problem: Shards seem to solve problems, but I am not confident that they deliver on your or my expectations: Can you back them up sequentially or does the backup need to be atomic (of the admin- and a secondary shard)? How do you ever remove one from the list of shards when you want to separate it to another server? And there's more than just the db: Search Index, Document library etc. There are a lot of details in shards that can easily mess with your expectation. This personal preference might be the main reason why I've left sharding out of the article... Por favor, autentique-se para votar. Responda como... Cancelar
Olaf Kock Patrick Wolf 9 Anos atrás - Editado That's the problem: Shards seem to solve problems, but I am not confident that they deliver on your or my expectations: Can you back them up sequentially or does the backup need to be atomic (of the admin- and a secondary shard)? How do you ever remove one from the list of shards when you want to separate it to another server? And there's more than just the db: Search Index, Document library etc. There are a lot of details in shards that can easily mess with your expectation. This personal preference might be the main reason why I've left sharding out of the article... Por favor, autentique-se para votar. Responda como... Cancelar
Marc Herren 7 Anos atrás I'm new to liferay, so perhaps I did not fully understand everything yet ;)But if i'm correct you need to create instances to completely separate the data?In our case we have the situation that within a setup with one instance with multiple site ( lets name them lrA, lr you would be able to access lrB trough lrA with the following URL "http://lrA/web/lrB"Having two instances (lri-A, lri- would prevent this, correct? Por favor, autentique-se para votar. Responda como... Cancelar Olaf Kock Marc Herren 7 Anos atrás Hi Marc,you're correct: Two instances would prevent you being able to see http://lrA/web/lrB. However, I feel that instances in this case are an oversized powertool where you only need a screwdriver - you can also prevent this when a webserver (e.g. Apache httpd) configures the virtual hosts so that host "lrA" does not allow URLs "*/web/lrB/*" and "*/group/lrB/*" and vice versa. However, both lrA and lrB would share a user database and permissions (roles etc) in this case. If this is absolutely undesirable, there's another argument for instances, but don't just use them lightly by default (because once you did, they're harder to get rid of, or to separate to different servers)Sorry, as usual the answer is "it depends". I hope that the answer clarifies what it depends on. Por favor, autentique-se para votar. Responda como... Cancelar Marc Herren Olaf Kock 7 Anos atrás Hi Olaf, Thanks for the quick response.As we will host dozens of completely independent website I rather favors instances over sites.Another thing is also, that I noticed that you can also access another website trough the URLs " http://lrA/sr/web/lrB" or "http://lrA/sr_RS/web/lrB" which makes the ACL even more complicated. Although I don't know if its a misconfiguration from our site on the test setup Por favor, autentique-se para votar. Responda como... Cancelar Olaf Kock Marc Herren 7 Anos atrás Yep, those are the languages/localizations you want to use (if you want to enforce them through the URL). They're the reason why I mentioned "*/web/lrB/*" above and not "/web/lrB/*" (note the leading wildcard - and yes, it should rather be a regexp for empty or any character but slash).It's fine to use instances (if you use the precautionary administrative instance I mention in the article), just don't do this before you absolutely know that you must. If these sites share the userbase, it might be easier to use a single instance. If you need to install different plugins per customer/website, it might be advisable to use different servers. If you need different administrative staff (that don't trust each other): Validate the level of trust that you have with what instances provide. Por favor, autentique-se para votar. Responda como... Cancelar
Olaf Kock Marc Herren 7 Anos atrás Hi Marc,you're correct: Two instances would prevent you being able to see http://lrA/web/lrB. However, I feel that instances in this case are an oversized powertool where you only need a screwdriver - you can also prevent this when a webserver (e.g. Apache httpd) configures the virtual hosts so that host "lrA" does not allow URLs "*/web/lrB/*" and "*/group/lrB/*" and vice versa. However, both lrA and lrB would share a user database and permissions (roles etc) in this case. If this is absolutely undesirable, there's another argument for instances, but don't just use them lightly by default (because once you did, they're harder to get rid of, or to separate to different servers)Sorry, as usual the answer is "it depends". I hope that the answer clarifies what it depends on. Por favor, autentique-se para votar. Responda como... Cancelar Marc Herren Olaf Kock 7 Anos atrás Hi Olaf, Thanks for the quick response.As we will host dozens of completely independent website I rather favors instances over sites.Another thing is also, that I noticed that you can also access another website trough the URLs " http://lrA/sr/web/lrB" or "http://lrA/sr_RS/web/lrB" which makes the ACL even more complicated. Although I don't know if its a misconfiguration from our site on the test setup Por favor, autentique-se para votar. Responda como... Cancelar Olaf Kock Marc Herren 7 Anos atrás Yep, those are the languages/localizations you want to use (if you want to enforce them through the URL). They're the reason why I mentioned "*/web/lrB/*" above and not "/web/lrB/*" (note the leading wildcard - and yes, it should rather be a regexp for empty or any character but slash).It's fine to use instances (if you use the precautionary administrative instance I mention in the article), just don't do this before you absolutely know that you must. If these sites share the userbase, it might be easier to use a single instance. If you need to install different plugins per customer/website, it might be advisable to use different servers. If you need different administrative staff (that don't trust each other): Validate the level of trust that you have with what instances provide. Por favor, autentique-se para votar. Responda como... Cancelar
Marc Herren Olaf Kock 7 Anos atrás Hi Olaf, Thanks for the quick response.As we will host dozens of completely independent website I rather favors instances over sites.Another thing is also, that I noticed that you can also access another website trough the URLs " http://lrA/sr/web/lrB" or "http://lrA/sr_RS/web/lrB" which makes the ACL even more complicated. Although I don't know if its a misconfiguration from our site on the test setup Por favor, autentique-se para votar. Responda como... Cancelar Olaf Kock Marc Herren 7 Anos atrás Yep, those are the languages/localizations you want to use (if you want to enforce them through the URL). They're the reason why I mentioned "*/web/lrB/*" above and not "/web/lrB/*" (note the leading wildcard - and yes, it should rather be a regexp for empty or any character but slash).It's fine to use instances (if you use the precautionary administrative instance I mention in the article), just don't do this before you absolutely know that you must. If these sites share the userbase, it might be easier to use a single instance. If you need to install different plugins per customer/website, it might be advisable to use different servers. If you need different administrative staff (that don't trust each other): Validate the level of trust that you have with what instances provide. Por favor, autentique-se para votar. Responda como... Cancelar
Olaf Kock Marc Herren 7 Anos atrás Yep, those are the languages/localizations you want to use (if you want to enforce them through the URL). They're the reason why I mentioned "*/web/lrB/*" above and not "/web/lrB/*" (note the leading wildcard - and yes, it should rather be a regexp for empty or any character but slash).It's fine to use instances (if you use the precautionary administrative instance I mention in the article), just don't do this before you absolutely know that you must. If these sites share the userbase, it might be easier to use a single instance. If you need to install different plugins per customer/website, it might be advisable to use different servers. If you need different administrative staff (that don't trust each other): Validate the level of trust that you have with what instances provide. Por favor, autentique-se para votar. Responda como... Cancelar