jhipster / generator-jhipster

JHipster is a development platform to quickly generate, develop, & deploy modern web applications & microservice architectures.
https://www.jhipster.tech
Apache License 2.0
21.47k stars 4.02k forks source link

Generator for Infinispan clustered data grid #1491

Closed NickGDev-zz closed 9 years ago

NickGDev-zz commented 9 years ago

Firstly hat's off to all contributing to jhipster it's a great expression of the power of spring. As a Java developer i have had the opportunity to work on a few commercial projects that utilise scalable data grids. With that i'd like to discuss Hazelcast's clustered encryption / SSL support and a possible alternative.

As of Hazelcast 3.4 (http://goo.gl/alZqvn) SSL is now an enterprise only feature. This is a regression in features supported by the community edition from v3.2 (http://goo.gl/882oWx). For many customers end-to-end encryption is a must so i would suggest jhipster provides alternative data grid that supports the same embedded data grid configuration, but with the option to enable further security.

Infinispan is not exactly winning the race in the Java data grid space and documentation can be patchy but it is performant and backed by RedHat (it's used as jboss/wildfly's native clustering technology). I feel it's worth offering it as an alternative as Hazelcast hasn't been very upfront about this change.

Hazelcast vs Infinispan white-paper - https://goo.gl/ssi3V Hazelcast vs Infinispan benchmark (old) - Interesting comparison - http://www.slideshare.net/tmatyashovsky/from-cache-to-in-memory-data-grid-introduction-to-hazelcast

jdubois commented 9 years ago

Looks like bad news, here are my thoughts:

gregrluck commented 9 years ago

We have a commercial/open source business model. This architecture diagram makes it very clear: http://hazelcast.com/wp-content/uploads/2013/12/Hazelcast-3.4-Architecture-r1.0.png The salmon coloured parts are all open source. We have a small number of enterprise features that are not required by almost all users, but large corporations with complex use cases use them.

The idea here is to ensure that we have both a viable open source project and a business. In that GridGain were open source, then closed source, then settled on a mix, with open source (now called Ignite) and added features in the Enterprise version. Our understanding is that Pivotal will be doing exactly the same with Gemfire. Infinispan is now the only open source IMDG which offering commercial support which does not have enterprise only features.

In terms of roadmap the only major thing not on the diagram which is planned for enterprise is Hot Restart. That will come in 3.6 and adds the ability to restart with caches loaded from SSD or possibly disk. It is most relevant to large caches of hundreds of GBs in size.

The problem with the pure open source support model is that it is hard enough to generate enough funds to get a significant. Red Hat is the exception but perhaps will be the only one. http://techcrunch.com/2014/02/13/please-dont-tell-me-you-want-to-be-the-next-red-hat/

We now have a 30 strong engineering team and we invest the majority of our time on open source Hazelcast.

Finally my understanding is that SSL is not required for this integration. Is that correct?

jdubois commented 9 years ago

Hi @gregrluck ! Really nice to have an answer directly from you!

I've looked at the diagram, and:

I fully agree with your analysis of the current OSS market. Maybe we should add Infinispan, so that people have 3 options (with ehcache and HazelCast), so that everybody finds something suitable for his needs with JHipster. But this also adds a maintenance cost, and so that will depends whether this is complex to integrate or not.

NickGDev-zz commented 9 years ago

great feedback @jdubois & @gregrluck. It's understandable Hazelcast needs to find ways to generate revenue and don't get me wrong i feel it's a valuable product. From personal experience (outside of jhipster project) not having encryption is a deal breaker for smaller customers with sensitive client data.

In reality SSL isn't critical for jhipster but not having the option in a spring project is quite unusual and potentially limits the use cases of the project. As of late i am personally switching away from Hazelcast as most of my clients have some form of sensitive data but cant afford the per-node licensing. Being a supporter of the jhipster project i was concerned to see direct usage of Hazelcast's features e.g. the Web Sessions you mentioned.

This makes me question how tightly jhipster should couple with cache providers, maybe we should implement a generic cache provider for CacheConfiguration + API that can utilise multiple providers for features such as the WebConfigurer / spring-data / spring-cache?

jdubois commented 9 years ago

@NickGDev no I don't think those are big issues:

To go back to HazelCast vs Infinispan:

jdubois commented 9 years ago

We will wait until Spring Boot 1.3 is released, as it has Inifispan support: https://github.com/spring-projects/spring-boot/blob/master/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/cache/InfinispanCacheConfiguration.java

I'm marking this as closed, as this is an unreleased version, and we will have a migration path to follow first.

jgasmi commented 8 years ago

Any news regarding Infinispan and when it will be included in the generator ?

jdubois commented 8 years ago

It won't be included anytime soon:

deepu105 commented 8 years ago

You can add it with a Jhipster module if you want btw On 21 Mar 2016 04:42, "Julien Dubois" notifications@github.com wrote:

It won't be included anytime soon:

  • Nobody has expressed any interest in it
  • Hazelcast is working great, and we are even more thightly integrated with it in our microservices approach, and the end result just awesome!

— You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub https://github.com/jhipster/generator-jhipster/issues/1491#issuecomment-199016893

jgasmi commented 8 years ago

My only concerns with Hazelcast are regarding HTTP session clustering and the license behind that.

deepu105 commented 8 years ago

What concern? On 21 Mar 2016 19:47, "Jamel Gasmi" notifications@github.com wrote:

My only concerns with Hazelcast are regarding HTTP session clustering and the license behind that.

— You are receiving this because you commented. Reply to this email directly or view it on GitHub https://github.com/jhipster/generator-jhipster/issues/1491#issuecomment-199237661

jgasmi commented 8 years ago

That the HTTP Session clustering is not open source. Please correct me if I'm wrong.

NickGDev-zz commented 8 years ago

it's available in the OSS code base but the documentation states, that particular feature falls under the enterprise license...

"Tomcat Session Replication in Hazelcast Enterprise is a Hazelcast Module where the state of each created HttpSessionObject is kept in the Hazelcast Distributed Map"

https://hazelcast.com/use-cases/web-session-clustering/tomcat-web-session-replication/

Hazelcast is great but I raised a similar concerns regarding their security module being silently switched to enterprise in newer releases

*further clarification from latest 3.6 release: http://docs.hazelcast.org/docs/3.6/manual/html-single/images/HazelcastArchitecture.png http://goo.gl/2hD4sM

deepu105 commented 8 years ago

Really :O this needs to be investigated. cc @jdubois On 21 Mar 2016 20:41, "Nick" notifications@github.com wrote:

it's available in the OSS code base but the documentation states, that particular feature falls under the enterprise license...

"Tomcat Session Replication in Hazelcast Enterprise is a Hazelcast Module where the state of each created HttpSessionObject is kept in the Hazelcast Distributed Map"

https://hazelcast.com/use-cases/web-session-clustering/tomcat-web-session-replication/

Hazelcast is great but I raised a similar concerns regarding their security module being silently switched to enterprise in newer releases

— You are receiving this because you commented. Reply to this email directly or view it on GitHub https://github.com/jhipster/generator-jhipster/issues/1491#issuecomment-199255253

deepu105 commented 8 years ago

Ok this is available as open source as well http://hazelcast.org/use-cases/clustering/

Cc @jdubois

jdubois commented 8 years ago

We already had an answer from @gregrluck saying it would stay Open Source, that's good enough for me.