Hazelcast Deployment Topology Considerations: To Embed or Not?
Many thanks to Tom O’Connell who co-authored this blog.

Hazelcast can be deployed in two topologies – namely Embedded and Client-Server. In this blog, we lay out the differences between the two topologies.
Embedded Architecture:
Hazelcast is embedded in the application and runs in the same process.
Client Server Architecture:
Item |
Embedded |
Client-Server |
Language Support |
Java only. |
Any supported language (Java, Python, go, .Net etc). |
Ease of onboarding and Operations |
Easier to adopt and operate. Application and Platform owned by the same team. |
App and Platform may be owned by separate teams. |
Separation of Concerns |
Application and Hazelcast are running in the same JVM. |
Optimize the Hazelcast cluster separately. Cluster can be scaled as needed independent of the application. |
User Code Deployment |
Since Hazelcast is embedded in the application, all application classes are available. |
Application Classes (Runnable, Callable, EntryProcessors) may need to be deployed on the Hazelcast cluster. N.B. Hazelcast has introduced Generic records ( beta in 4.1 ) that can eliminate the need to deploy domain classes on the client-side. |
Number of Applications |
Better if only one application is using Hazelcast. No noisy neighbor issues caused by other applications. |
Better if multiple applications are using a shared Hazelcast cluster. |
Memory Use |
Storage will compete with application objects for Java heap. HD storage lessens reduces impact. |
Client JVMs support application object heap consumption. |
Scaling |
|
|
Conclusion
We hope this article helps you with your decision on your deployment architecture as you embark on your journey with Hazelcast.