Apache Ignite Zero ๋ฐฐํฌ: ์ •๋ง Zero์ธ๊ฐ€์š”?

Apache Ignite Zero ๋ฐฐํฌ: ์ •๋ง Zero์ธ๊ฐ€์š”?

์šฐ๋ฆฌ๋Š” ์†Œ๋งค ๋„คํŠธ์›Œํฌ์˜ ๊ธฐ์ˆ  ๊ฐœ๋ฐœ ๋ถ€์„œ์ž…๋‹ˆ๋‹ค. ์–ด๋Š ๋‚  ๊ฒฝ์˜์ง„์€ MSSQL๊ณผ ํ•จ๊ป˜ Apache Ignite๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋Œ€๊ทœ๋ชจ ๊ณ„์‚ฐ ์†๋„๋ฅผ ๋†’์ด๋Š” ์ž‘์—…์„ ์„ค์ •ํ•˜๊ณ  ์•„๋ฆ„๋‹ค์šด ๊ทธ๋ฆผ๊ณผ Java ์ฝ”๋“œ ์˜ˆ์ œ๊ฐ€ ํฌํ•จ๋œ ์›น ์‚ฌ์ดํŠธ๋ฅผ ๋ณด์—ฌ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ฆ‰์‹œ ์‚ฌ์ดํŠธ๋ฅผ ์ข‹์•„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ œ๋กœ ๋ฐฐํฌ, ๊ธฐ์ ์„ ์•ฝ์†ํ•˜๋Š” ์„ค๋ช…: ๊ทธ๋ฆฌ๋“œ์˜ ๊ฐ ๋…ธ๋“œ์— Java ๋˜๋Š” Scala ์ฝ”๋“œ๋ฅผ ์ˆ˜๋™์œผ๋กœ ๋ฐฐํฌํ•˜๊ณ  ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค ๋‹ค์‹œ ๋ฐฐํฌํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ž‘์—…์ด ์ง„ํ–‰๋˜๋ฉด์„œ Zero ๋ฐฐํฌ์—๋Š” ํŠน์ •ํ•œ ์šฉ๋„๊ฐ€ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์ด ๋ฐํ˜€์กŒ๊ณ , ๊ทธ ๊ธฐ๋Šฅ์„ ๊ณต์œ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ปท ์•„๋ž˜์—๋Š” ์ƒ๊ฐ๊ณผ ๊ตฌํ˜„ ์„ธ๋ถ€ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

1. ๋ฌธ์ œ ์ง„์ˆ 

๋ฌธ์ œ์˜ ๋ณธ์งˆ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. SalesPoint ํŒ๋งค ์ง€์  ๋””๋ ‰ํ† ๋ฆฌ์™€ Sku(์žฌ๊ณ  ์œ ์ง€ ๋‹จ์œ„) ์ œํ’ˆ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. POS(Point of Sale)์—๋Š” '์†Œํ˜•' ๋ฐ '๋Œ€ํ˜•' ๊ฐ’์„ ๊ฐ–๋Š” '๋งค์žฅ ์œ ํ˜•' ์†์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ํŒ๋งค์ ์— ์–ด์†ŒํŠธ๋จผํŠธ(ํŒ๋งค์‹œ์ ์˜ ์ƒํ’ˆ๋ชฉ๋ก)๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด(DBMS์—์„œ ๋กœ๋”ฉ), ์ง€์ •์ผ๋กœ๋ถ€ํ„ฐ ์ง€์ •์ƒํ’ˆ์ด
๊ตฌ์ƒ‰์—์„œ ์ œ์™ธ๋˜๊ฑฐ๋‚˜ ๊ตฌ์ƒ‰์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ถ„ํ• ๋œ POS ์บ์‹œ๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ํ•œ ๋‹ฌ ์ „์— ์—ฐ๊ฒฐ๋œ ์ œํ’ˆ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ „ํˆฌ ์‹œ์Šคํ…œ๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด์„œ๋Š” Ignite ํด๋ผ์ด์–ธํŠธ ๋…ธ๋“œ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•˜๊ณ  ์–‘์‹์˜ ์ง‘๊ณ„(์ƒ์  ์œ ํ˜•, ์ œํ’ˆ ์ฝ”๋“œ, ๋‚ ์งœ, ํŒ๋งค_ํฌ์ธํŠธ_์ˆ˜)๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  ์ด๋ฅผ ๋‹ค์‹œ DBMS์— ์—…๋กœ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

2. ๋ฌธํ•™ ์—ฐ๊ตฌ

์•„์ง ๊ฒฝํ—˜์ด ์—†์–ด์„œ ๋‚œ๋กœ ์œ„์—์„œ ์ถค์„ ์ถ”๊ธฐ ์‹œ์ž‘ํ–ˆ์–ด์š”. ์ฆ‰, ์ถœํŒ๋ฌผ ๊ฒ€ํ† ์—์„œ ๋‚˜์˜จ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ธฐ์‚ฌ 2016 Apache Ignite ์†Œ๊ฐœ: ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„ Apache Ignite ํ”„๋กœ์ ํŠธ ๋ฌธ์„œ์— ๋Œ€ํ•œ ๋งํฌ์™€ ๋™์‹œ์— ์ด ๋ฌธ์„œ์˜ ๋ชจํ˜ธํ•จ์— ๋Œ€ํ•œ ๋น„๋‚œ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ช‡ ๋ฒˆ ๋‹ค์‹œ ์ฝ์–ด๋„ ๋ช…ํ™•์„ฑ์ด ๋‚˜์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ณต์‹ ํŠœํ† ๋ฆฌ์–ผ์„ ์ฐธ๊ณ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค ์‹œ์ž‘ํ•˜๊ธฐ์–ด๋Š
๋‚™๊ด€์ ์œผ๋กœ ์•ฝ์†ํ•ฉ๋‹ˆ๋‹ค. โ€œ๊ณง ๋ฐ”๋กœ ์‹คํ–‰๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค!โ€ ๋‘ ๊ฐœ์˜ Apache Ignite Essentials ๋น„๋””์˜ค๋ฅผ ์‹œ์ฒญํ•˜๋ฉด์„œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •์„ ํŒŒ์•…ํ•˜๊ณ  ์žˆ์ง€๋งŒ ํŠน์ • ์ž‘์—…์—๋Š” ๊ทธ๋‹ค์ง€ ์œ ์šฉํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํ‘œ์ค€ ํŒŒ์ผ โ€œexample-ignite.xmlโ€์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ช…๋ น์ค„์—์„œ Ignite๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์‹คํ–‰ํ•˜์—ฌ ์ฒซ ๋ฒˆ์งธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ปดํ“จํŒ… ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฉ”์ด๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ. ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์ž‘๋™ํ•˜๊ณ  Zero ๋ฐฐํฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ •๋ง ์•„๋ฆ„๋‹ต์Šต๋‹ˆ๋‹ค!

๋” ์ž์„ธํžˆ ์ฝ์–ด๋ณด๋‹ˆ ์˜ˆ์ œ์—์„œ๋Š” ์ฆ‰์‹œ AffinityKey(์ด์ „์— SQL ์ฟผ๋ฆฌ๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋จ)๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ ๋น„ํ•œ BinaryObject๋„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

IgniteCache<BinaryObject, BinaryObject> people 
        = ignite.cache("Person").withKeepBinary(); 

์ฝ๋‹ค ์•ฝ๊ฐ„: ๋ฐ”์ด๋„ˆ๋ฆฌ ํ˜•์‹ - ๋ฆฌํ”Œ๋ ‰์…˜๊ณผ ๊ฐ™์€ ๊ฒƒ์œผ๋กœ, ์ด๋ฆ„์œผ๋กœ ๊ฐœ์ฒด์˜ ํ•„๋“œ์— ์•ก์„ธ์Šคํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์ฒด๋ฅผ ์™„์ „ํžˆ ์—ญ์ง๋ ฌํ™”ํ•˜์ง€ ์•Š๊ณ ๋„(๋ฉ”๋ชจ๋ฆฌ ์ ˆ์•ฝ) ํ•„๋“œ ๊ฐ’์„ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ œ๋กœ ๋ฐฐํฌ๊ฐ€ ์žˆ๋Š”๋ฐ ์™œ Person ๋Œ€์‹  BinaryObject๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ? IgniteCache๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  IgniteCache๋กœ ์ „์†ก๋จ ? ์•„์ง ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ œ ๊ฒฝ์šฐ์— ๋งž๊ฒŒ Compute ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋‹ค์‹œ ๋งŒ๋“ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. MSSQL์—์„œ POS ๋””๋ ‰ํ† ๋ฆฌ์˜ ๊ธฐ๋ณธ ํ‚ค๋Š” [id] [int] NOT NULL๋กœ ์ •์˜๋ฉ๋‹ˆ๋‹ค. ๋น„์œ ๋ฅผ ํ†ตํ•ด ์บ์‹œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

IgniteCache<Integer, SalesPoint> salesPointCache=ignite.cache("spCache")

XML ๊ตฌ์„ฑ์—์„œ ์บ์‹œ๊ฐ€ ๋ถ„ํ• ๋˜์—ˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

<bean class="org.apache.ignite.configuration.CacheConfiguration">
    <property name="name" value="spCache"/>
    <property name="cacheMode" value="PARTITIONED"/>
</bean>

ํŒ๋งค ์‹œ์ ๋ณ„ ๋ถ„ํ• ์—์„œ๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ salesPointCache ๋ ˆ์ฝ”๋“œ์— ๋Œ€ํ•ด ๊ฐ ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ์— ํ•„์š”ํ•œ ์ง‘๊ณ„๊ฐ€ ๊ตฌ์ถ•๋œ ํ›„ ํด๋ผ์ด์–ธํŠธ ๋…ธ๋“œ๊ฐ€ ์ตœ์ข… ํ•ฉ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

ํŠœํ† ๋ฆฌ์–ผ์„ ์ฝ๊ณ  ์žˆ์–ด์š” ์ตœ์ดˆ์˜ ์ปดํ“จํŒ… ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ ํ™”, ๋‚˜๋Š” ๋น„์œ ๋กœ ๊ทธ๊ฒƒ์„ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด IgniteRunnable()์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  @Override
  public void run() {
    SalesPoint sp=salesPointCache.get(spId);
    sp.calculateSalesPointCount();
    ..
  }

์ง‘๊ณ„ ๋ฐ ์—…๋กœ๋“œ ๋…ผ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ์„ธํŠธ์—์„œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ๊ฐœ๋ฐœ ์„œ๋ฒ„์—์„œ ๋กœ์ปฌ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋‘ ๊ฐœ์˜ CentOs ํ…Œ์ŠคํŠธ ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  default-config.xml์— IP ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•˜๊ณ  ๊ฐ๊ฐ์—์„œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

./bin/ignite.sh config/default-config.xml

๋‘ Ignite ๋…ธ๋“œ๊ฐ€ ๋ชจ๋‘ ์‹คํ–‰ ์ค‘์ด๋ฉฐ ์„œ๋กœ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ xml ๊ตฌ์„ฑ์— ํ•„์š”ํ•œ ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹œ์ž‘๋˜๊ณ  ์„ธ ๋ฒˆ์งธ ๋…ธ๋“œ๊ฐ€ ํ† ํด๋กœ์ง€์— ์ถ”๊ฐ€๋˜๋ฉฐ ์ฆ‰์‹œ ๋‘ ๊ฐœ์˜ ๋…ธ๋“œ๊ฐ€ ๋‹ค์‹œ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋กœ๊ทธ์—๋Š” "ClassNotFoundException: model.SalesPoint" ์ค„์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

SalesPoint sp=salesPointCache.get(spId);

StackOverflow์— ๋”ฐ๋ฅด๋ฉด ์˜ค๋ฅ˜์˜ ์›์ธ์€ CentOs ์„œ๋ฒ„์— ์‚ฌ์šฉ์ž ์ •์˜ SalesPoint ํด๋ž˜์Šค๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋„์ฐฉํ–ˆ์Šต๋‹ˆ๋‹ค. "๊ฐ ๋…ธ๋“œ์— Java ์ฝ”๋“œ๋ฅผ ์ˆ˜๋™์œผ๋กœ ๋ฐฐํฌํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค" ๋“ฑ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด "๊ท€ํ•˜์˜ Java ์ฝ”๋“œ"๊ฐ€ SalesPoint์— ๊ด€ํ•œ ๊ฒƒ์ด ์•„๋‹Œ๊ฐ€์š”?

์•„๋งˆ๋„ ๋ญ”๊ฐ€๋ฅผ ๋†“์ณค์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์‹œ ๊ฒ€์ƒ‰์„ ์‹œ์ž‘ํ•˜๊ณ , ์ฝ๊ณ , ๋‹ค์‹œ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. ์ž ์‹œ ํ›„, ๋‚˜๋Š” ๊ทธ ์ฃผ์ œ์— ๊ด€ํ•œ ๋ชจ๋“  ๊ฒƒ์„ ์ฝ์—ˆ๊ณ  ๋” ์ด์ƒ ์ƒˆ๋กœ์šด ๊ฒƒ์ด ์—†๋‹ค๋Š” ๋Š๋‚Œ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ๊ฒ€์ƒ‰์„ ํ•˜๋˜ ์ค‘ ํฅ๋ฏธ๋กœ์šด ๋Œ“๊ธ€์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฐœ๋ Œํ‹ด ์ฟจ๋ฆฌ์ฒธ์ฝ”, GridGain Systems์˜ ์ˆ˜์„ ์„ค๊ณ„์ž, ๋‹ต๋ณ€ StackOverflow, 2016๋…„ XNUMX์›”:

Model classes are not peer deployed, but you can use withKeepBinary() flag
on the cache and query BinaryObjects. This way you will avoid deserialization
on the server side and will not get ClassNotFoundException.

๋˜ ๋‹ค๋ฅธ ๊ถŒ์œ„ ์žˆ๋Š” ์˜๊ฒฌ: ๋ฐ๋‹ˆ์Šค ๋งˆ๊ทธ๋‹ค, GridGain Systems ์ œํ’ˆ ๊ด€๋ฆฌ ์ด์‚ฌ.

ํ•˜๋ธŒ๋ ˆ์— ๊ด€ํ•œ ๊ธฐ์‚ฌ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์— ๋Œ€ํ•ด Denis Magda์˜ ์„ธ ๊ฐ€์ง€ ๊ธฐ์‚ฌ๋ฅผ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค XNUMX๋ถ€, ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค XNUMX๋ถ€, ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค XNUMX๋ถ€ 2016-2017. ๋‘ ๋ฒˆ์งธ ๊ธฐ์‚ฌ์—์„œ Denis๋Š” MaintenanceServiceNodeStartup.jar์„ ํ†ตํ•ด ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ๋ฅผ ์‹œ์ž‘ํ•  ๊ฒƒ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. xml ๊ตฌ์„ฑ ๋ฐ ๋ช…๋ น์ค„์„ ํ†ตํ•ด ์‹คํ–‰์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๋ฐฐํฌ๋œ ๊ฐ ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ์— ์‚ฌ์šฉ์ž ์ง€์ • ํด๋ž˜์Šค๋ฅผ ์ˆ˜๋™์œผ๋กœ ๋ฐฐ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

That's it. Start (..)  node using MaintenanceServiceNodeStartup file or pass
maintenance-service-node-config.xml to Apache Ignite's ignite.sh/bat scripts.
If you prefer the latter then make sure to build a jar file that will contain
all the classes from java/app/common and java/services/maintenance directories.
The jar has to be added to the classpath of every node where the service
might be deployed.

์‹ค์ œ๋กœ ๊ทธ๊ฒŒ ๋‹ค์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์™œ ์ด ์‹ ๋น„ํ•œ ๋ฐ”์ด๋„ˆ๋ฆฌ ํ˜•์‹์ด ๋‚˜์˜ค๋Š”์ง€ ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค!

3.์‹ฑ๊ธ€๋ณ‘

Denis๋Š” ๋‚ด ๊ฐœ์ธ ํ‰๊ฐ€์—์„œ XNUMX์œ„๋ฅผ ์ฐจ์ง€ํ–ˆ์Šต๋‹ˆ๋‹ค. IMHO๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ํŠœํ† ๋ฆฌ์–ผ ์ค‘ ๊ฐ€์žฅ ์œ ์šฉํ•œ ํŠœํ† ๋ฆฌ์–ผ์ž…๋‹ˆ๋‹ค. ๊ทธ์˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ˆ Github์—๋Š” ์ถ”๊ฐ€ ๋ฌด๋‹จ ์ ๊ฑฐ ์—†์ด ์ปดํŒŒ์ผ๋˜๋Š” ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ ์„ค์ •์— ๋Œ€ํ•œ ์™„์ „ํžˆ ์ค€๋น„๋œ ์˜ˆ์ œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์ˆ˜ํ–‰ํ•˜์—ฌ ๋ช…๋ น์ค„ ์ธ์ˆ˜์— ๋”ฐ๋ผ "๋ฐ์ดํ„ฐ ๋…ธ๋“œ" ๋˜๋Š” "ํด๋ผ์ด์–ธํŠธ ๋…ธ๋“œ"๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๋‹จ์ผ jar ํŒŒ์ผ์„ ์–ป์Šต๋‹ˆ๋‹ค. ์–ด์…ˆ๋ธ”๋ฆฌ๊ฐ€ ์‹œ์ž‘๋˜๊ณ  ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ œ๋กœ ๋ฐฐํฌ๊ฐ€ ํŒจ๋ฐฐํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฉ”๊ฐ€๋ฐ”์ดํŠธ์˜ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ์—์„œ ์ˆ˜์‹ญ ๊ธฐ๊ฐ€๋ฐ”์ดํŠธ์˜ ์ „ํˆฌ ๋ฐ์ดํ„ฐ๋กœ์˜ ์ „ํ™˜์€ ๋ฐ”์ด๋„ˆ๋ฆฌ ํ˜•์‹์ด ์กด์žฌํ•˜๋Š” ์ด์œ ๊ฐ€ ์žˆ์Œ์„ ๋ณด์—ฌ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ๋…ธ๋“œ์˜ ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ–ˆ๊ณ , ์—ฌ๊ธฐ์„œ BinaryObject๊ฐ€ ๋งค์šฐ ์œ ์šฉํ•˜๋‹ค๋Š” ๊ฒƒ์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค.

4. ๊ฒฐ๋ก 

Apache Ignite ํ”„๋กœ์ ํŠธ ๋ฌธ์„œ์˜ ๋ชจํ˜ธํ•จ์— ๋Œ€ํ•œ ์ฒซ ๋ฒˆ์งธ ๋น„๋‚œ์€ ๊ณต์ •ํ•œ ๊ฒƒ์œผ๋กœ ํŒ๋ช…๋˜์—ˆ์œผ๋ฉฐ 2016๋…„ ์ดํ›„ ๊ฑฐ์˜ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ดˆ๋ณด์ž๊ฐ€ ์›น ์‚ฌ์ดํŠธ ๋ฐ/๋˜๋Š” ์ €์žฅ์†Œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ํ”„๋กœํ† ํƒ€์ž…์„ ์กฐ๋ฆฝํ•˜๋Š” ๊ฒƒ์€ ์‰ฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์™„๋ฃŒ๋œ ์ž‘์—… ๊ฒฐ๊ณผ์— ๋”ฐ๋ฅด๋ฉด Zero ๋ฐฐํฌ๊ฐ€ ์ž‘๋™ํ•˜์ง€๋งŒ ์‹œ์Šคํ…œ ์ˆ˜์ค€์—์„œ๋งŒ ์ž‘๋™ํ•œ๋‹ค๋Š” ์ธ์ƒ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. BinaryObject๋Š” ์›๊ฒฉ ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ๊ฐ€ ์‚ฌ์šฉ์ž ์ •์˜ ํด๋ž˜์Šค์™€ ์ž‘๋™ํ•˜๋„๋ก ๊ฐ€๋ฅด์น˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ œ๋กœ ๋ฐฐํฌ - ๋‚ด๋ถ€ ๋ฉ”์ปค๋‹ˆ์ฆ˜
Apache Ignite๋Š” ์ž์ฒด์ ์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ ์ „์ฒด์— ์‹œ์Šคํ…œ ๊ฐœ์ฒด๋ฅผ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ๊ฒฝํ—˜์ด ์ƒˆ๋กœ์šด Apache Ignite ์‚ฌ์šฉ์ž์—๊ฒŒ ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€