"매 distributed RAM 의 partitioned + replicated 의 통한 sub-ms key-value + compute 의 horizontal scale". 매 Oracle Coherence (2001) 의 commercial origin, 매 Hazelcast (2008) / Apache Ignite (2014) 의 OSS 의 popularization — 매 modern 의 Redis Cluster + Apache Ignite + Hazelcast 5.x 의 dominant.
매 핵심
매 IMDG vs Distributed Cache
Cache (Redis, Memcached): 매 read-through, eviction-driven, simple K/V.
HazelcastInstancehz=Hazelcast.newHazelcastInstance();IMap<String,Order>orders=hz.getMap("orders");orders.put("o-123",newOrder(...));Ordero=orders.get("o-123");// sub-ms// Pessimistic lock 의 partition-localorders.executeOnKey("o-123",entry->{Ordercur=entry.getValue();cur.markPaid();entry.setValue(cur);returnnull;});
Apache Ignite — SQL over Cache
IgniteConfigurationcfg=newIgniteConfiguration();Igniteignite=Ignition.start(cfg);CacheConfiguration<Long,Person>ccfg=newCacheConfiguration<>("Person");ccfg.setIndexedTypes(Long.class,Person.class);IgniteCache<Long,Person>cache=ignite.getOrCreateCache(ccfg);List<List<?>>rows=cache.query(newSqlFieldsQuery("SELECT name, salary FROM Person WHERE salary > ? ORDER BY salary DESC").setArgs(100_000)).getAll();
언제: IMDG 의 sizing 의 estimate, partition strategy 의 review, Hazelcast/Ignite config 의 generate.
언제 X: 매 production 의 capacity planning 의 final sign-off (real workload benchmark 필수).
❌ 안티패턴
Distributed monolith state: 매 service 의 IMDG 의 shared mutable state — 매 hidden coupling.
N+1 across grid: client-side loop 의 단일 키 fetch — 매 batch API 의 use.
No backup count: backup=0 → 매 node loss 의 data loss.
Serialization neglect: default Java serialization → 매 slow + bloated, 매 IdentifiedDataSerializable / Compact 의 use.
Treating IMDG as durable DB: 매 persistence 의 explicit config 없이 → restart 의 data loss.