Posts Elasticsearch 0
Post
Cancel

Elasticsearch 0

Elasticsearch 0


๐Ÿ’ฟ ๊ฐœ๋…

์•„ํŒŒ์น˜ ๋ฃจ์”ฌ(Lucene) ๊ธฐ๋ฐ˜์˜ ์˜คํ”ˆ์†Œ์Šค ์‹ค์‹œ๊ฐ„ ๋ถ„์‚ฐ ๊ฒ€์ƒ‰ ์—”์ง„์œผ๋กœ JSON ๊ธฐ๋ฐ˜์˜ ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ ๋ถ„์‚ฐ ๊ฒ€์ƒ‰ ๋ฐ ๋ถ„์„์„ ์ง€์›ํ•œ๋‹ค.

  • ์„ค์น˜์™€ ์„œ๋ฒ„ ํ™•์žฅ์ด ๋งค์šฐ ํŽธ๋ฆฌ
  • ์‹ค์‹œ๊ฐ„ ๊ฒ€์ƒ‰ ์„œ๋น„์Šค ์ง€์›, ๋ถ„์‚ฐ ๋ฐ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ, ๊ทธ๋ฆฌ๊ณ  ๋ฉ€ํ‹ฐํ…Œ๋„Œ์‹œ ๊ธฐ๋Šฅ ์ œ๊ณต
  • ํ˜„์žฌ ์›น ๋ฌธ์„œ ๊ฒ€์ƒ‰, ์†Œ์…œ ๋ฐ์ดํ„ฐ ๋ถ„์„, ์‡ผํ•‘๋ชฐ ๋“ฑ์— ํ™œ์šฉ๋˜๊ณ  ์žˆ์Œ
  • ๋น…๋ฐ์ดํ„ฐ ๋ถ„์„/์ฒ˜๋ฆฌ MSA ํ™˜๊ฒฝ์˜ ๋กœ๊ทธ ๋ชจ๋‹ˆํ„ฐ๋ง๋“ฑ์— ํ™œ์šฉ

๐Ÿ’ฟ ํŠน์ง•

๋ถ„์‚ฐ/ํ™•์žฅ์„ฑ/๋ณ‘๋ ฌ์ฒ˜๋ฆฌ

Elasticsearch ๊ตฌ์„ฑ ์‹œ ๋ณดํ†ต 3๊ฐœ ์ด์ƒ์˜ ๋…ธ๋“œ(Elasticsearch ์„œ๋ฒ„)๋ฅผ ํด๋Ÿฌ์Šคํ„ฐ๋กœ ๊ตฌ์„ฑํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฅผ ์ƒค๋“œ(shard)๋กœ ์ €์žฅ ์‹œ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด ๋‹ค๋ฅธ ํ˜ธ์ŠคํŠธ์— ๋ณต์‚ฌ๋ณธ(replica)์„ ์ €์žฅํ•ด ๋†“๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋‚˜์˜ ๋…ธ๋“œ๊ฐ€ ์ฃฝ๊ฑฐ๋‚˜ ์ƒค๋“œ๊ฐ€ ๊นจ์ ธ๋„ ๋ณต์ œ๋˜์–ด ์žˆ๋Š” ๋‹ค๋ฅธ ์ƒค๋“œ๋ฅผ ํ™œ์šฉ

๋ฐ์ดํ„ฐ์˜ ๋ถ„์‚ฐ๊ณผ ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ๊ฐ€ ๋˜๋ฏ€๋กœ ์‹ค์‹œ๊ฐ„ ๊ฒ€์ƒ‰ ๋ฐ ๋ถ„์„์„ ํ•  ์ˆ˜ ์žˆ๊ณ , ๋…ธ๋“œ๋ฅผ ์ˆ˜ํ‰์ ์œผ๋กœ ๋Š˜๋ฆด ์ˆ˜ ์žˆ๊ฒŒ ์„ค๊ณ„๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋งŽ์€ ์šฉ๋Ÿ‰์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋…ธ๋“œ๋ฅผ ํด๋Ÿฌ์Šคํ„ฐ์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ณ ๊ฐ€์šฉ์„ฑ

Elasticsearch๋Š” ๋™์ž‘ ์ค‘์— ์ฃฝ์€ ๋…ธ๋“œ๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ์‚ญ์ œํ•˜๋ฉฐ ์‚ฌ์šฉ์ž์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ณ  ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋„๋ก ์œ ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋™์ž‘ ์ค‘์— ์ผ๋ถ€ ๋…ธ๋“œ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋”๋ผ๋„ ๋ฌธ์ œ๊ฐ€ ์—†์Œ

๋ฉ€ํ‹ฐ ํ…Œ๋„Œ์‹œ

ํด๋Ÿฌ์Šคํ„ฐ๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ธ๋ฑ์Šค(RDBMS์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๋น„์Šท)๋“ค์„ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋ฉฐ, ํ•˜๋‚˜์˜ ์ฟผ๋ฆฌ๊ฐ€ ๊ทธ๋ฃน ์ฟผ๋ฆฌ๋กœ ์—ฌ๋Ÿฌ ์ธ๋ฑ์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฌธ์„œ ์ค‘์‹ฌ & ์Šคํ‚ค๋งˆ ๋ฏธ์กด์žฌ

๋ณต์žกํ•œ ํ˜„์‹ค ์„ธ๊ณ„์˜ ์š”์†Œ๋“ค์„ ๊ตฌ์กฐํ™”๋œ JSON ๋ฌธ์„œ ํ˜•์‹์œผ๋กœ ์ €์žฅํ•œ๋‹ค. ๋ชจ๋“  ํ•„๋“œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ธ๋ฑ์‹ฑ๋˜๋ฉฐ, ๋ชจ๋“  ์ธ๋ฑ์Šค๋“ค์€ ๋‹จ์ผ ์ฟผ๋ฆฌ๋กœ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰ ๋ฐ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๋˜ํ•œ NoSQL์ด๋‚˜ RDBMS์™€ ๊ฐ™์€ ์Šคํ‚ค๋งˆ ๊ฐœ๋…์ด ์—†์œผ๋ฉฐ, ์‚ฌ์šฉ์ž์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ธ๋ฑ์‹ฑ ๋ ์ง€๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ”Œ๋Ÿฌ๊ทธ์ธ ํ˜•ํƒœ๋กœ ๊ตฌํ˜„

๊ฒ€์ƒ‰์—”์ง„์„ ์ง์ ‘ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ , ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ ์šฉํ•˜์—ฌ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ์™ธ๋ถ€์—์„œ ์ œ๊ณตํ•˜๋Š” ํ˜•ํƒœ์†Œ ๋ถ„์„๊ธฐ๋‚˜ REST API๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.


๐Ÿ’ฟ ๊ตฌ์กฐ

๋…ผ๋ฆฌ์  ๊ตฌ์กฐ

image

๋„ํ๋จผํŠธ(Document)

ํ•˜๋‚˜์˜ Doc์€ ๋‹ค์–‘ํ•œ ํ•„๋“œ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ ์ด ํ•„๋“œ์—๋Š” ๋ฐ์ดํ„ฐ ํ•„๋“œ์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ๋“ค์–ด๊ฐ.

  • Elasticsearch์˜ ์ตœ์†Œ๋‹จ์œ„(RDBMS์˜ Row์™€ ๋น„์Šท) Json ์˜ค๋ธŒ์ ํŠธ ํ•˜๋‚˜
  • ์ค‘์ฒฉ๊ตฌ์กฐ๋ฅผ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Document ๋‚ด๋ถ€์— Document๊ฐ€ ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•จ

ํƒ€์ž…

์—ฌ๋Ÿฌ๊ฐœ์˜ Document๊ฐ€ ๋ชจ์—ฌ์„œ ํ•œ๊ฐœ์˜ Type์„ ์ด๋ฃธ.

  • 7.0 ๋ถ€ํ„ฐ Type์ด ์‚ฌ๋ผ์กŒ์œผ๋ฉฐ Index๊ฐ€ ๊ทธ ์—ญํ• ์„ ๋Œ€์‹ 

ํ•„๋“œ

Document์— ๋“ค์–ด๊ฐ€๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…์œผ๋กœ RDBMS์˜ ์—ด(Column)๊ณผ ๋น„์Šทํ•˜๋‹ค. ํ•˜์ง€๋งŒ ํ•„๋“œ๋Š” ๋™์ ์ž„

  • RDBMS๋Š” ํ•˜๋‚˜์˜ ์—ด์ด ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…๋งŒ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์ง€๋งŒ Elasticsearch์—์„œ๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ํƒ€์ž…์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

๋งคํ•‘

ํ•„๋“œ์™€ ํ•„๋“œ์˜ ์†์„ฑ์„ ์ •์˜ํ•˜๊ณ  ์ƒ‰์ธ ๋ฐฉ๋ฒ•์„ ์ •์˜

  • ๋งคํ•‘ ์ •๋ณด์— ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐ์ดํ„ฐ ํƒ€์ž… ์ง€์ •์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ํ•„๋“œ๋ฉด ์ž์ฒด๋Š” ์ค‘๋ณต์ด ๋ถˆ๊ฐ€๋Šฅ

์ธ๋ฑ์Šค

RDBMS์˜ Table + Schema ์—ญํ• 

  • RDBMS๋Š” ์ฟผ๋ฆฌํ•˜๋‚˜๋กœ ์—ฌ๋Ÿฌ Schema๋ฅผ ๋™์‹œ์— ์กฐํšŒํ•  ์ˆ˜ ์—†์ง€๋งŒ, Elasticsearch๋Š” ๊ฐ€๋Šฅํ•จ
  • Elasticsearch๋ฅผ ํด๋Ÿฌ์Šคํ„ฐ๋กœ ๊ตฌ์„ฑํ–ˆ์„ ๊ฒฝ์šฐ Index๋Š” ์—ฌ๋Ÿฌ ๋…ธ๋“œ์— ๋ถ„์‚ฐ ์ €์žฅ/๊ด€๋ฆฌ ๋จ
    • ๊ธฐ๋ณธ์„ค์ •์€ 5๊ฐœ์˜ Priamry shard ์™€ 1๊ฐœ์˜ Replica shar๋ฅผ ์ƒ์„ฑํ•จ

๋ฌผ์งˆ์  ๊ตฌ์กฐ

๋…ธ๋“œ

Elasticsearch ํด๋Ÿฌ์Šคํ„ฐ์— ํฌํ•จ๋œ ๋‹จ์ผ ์„œ๋ฒ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ƒ‰ํ™” ๋ฐ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์— ์ฐธ์—ฌ

  • RDBMS์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋…ธ๋“œ๋กœ ๊ตฌ์„ฑ๋œ ํด๋Ÿฌ์Šคํ„ฐ๋Š” ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฑฐ์ ธ๋„ ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€์‹œ์ผœ์„œ ๋Œ€์šฉ๋Ÿ‰ ์ฒ˜๋ฆฌ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์คŒ
  • ๊ตฌ์„ฑ
    • ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ(Master Node): ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ ๋…ธ๋“œ. ๋…ธ๋“œ ์ถ”๊ฐ€/์ œ๊ฑฐ, ์ธ๋ฑ์Šค ์ƒ์„ฑ/์‚ญ์ œ ๋“ฑ ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ „๋ฐ˜์  ๊ด€๋ฆฌ ๋‹ด๋‹น. ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ๋ฅผ ์„ค์ •ํ•˜๋ฉด ํ•˜๋‚˜์˜ ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ๋กœ ์ž‘๋™๋จ
    • ๋ฐ์ดํ„ฐ ๋…ธ๋“œ(Data Node): ๋ฐ์ดํ„ฐ(Document)๊ฐ€ ์ €์žฅ๋˜๋Š” ๋…ธ๋“œ. ๋ฐ์ดํ„ฐ๊ฐ€ ๋ถ„์‚ฐ ์ €์žฅ ๋˜๋Š” ๋ฌผ๋ฆฌ์ ์ธ ๊ณต๊ฐ„์ธ ์ƒค๋“œ๊ฐ€ ๋ฐฐ์น˜๋˜๋Š” ๋…ธ๋“œ. ์ƒ‰์ธ/๊ฒ€์ƒ‰/ํ†ต๊ณ„ ๋“ฑ ๋ฐ์ดํ„ฐ ์ž‘์—…์„ ์ˆ˜ํ–‰
    • ์ฝ”๋””๋„ค์ดํŒ… ๋…ธ๋“œ(Coordinating Node): ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ๋ฐ›๊ณ  Round Robin ๋ฐฉ์‹์œผ๋กœ ๋ถ„์‚ฐ์‹œ์ผœ์ฃผ๋Š” ๋…ธ๋“œ. ํด๋Ÿฌ์Šคํ„ฐ์— ๊ด€๋ จ๋œ ๊ฒƒ์€ ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ๋กœ, ๋ฐ์ดํ„ฐ๋Š” ๋ฐ์ดํ„ฐ ๋…ธ๋“œ๋กœ ๋„˜๊น€
    • ์ธ์ œ์ŠคํŠธ ๋…ธ๋“œ(Ingest Node): ๋ฌธ์„œ ์ „์ฒ˜๋ฆฌ ์ž‘์—… ์ˆ˜ํ–‰. ์ธ๋ฑ์Šค ์ƒ์„ฑ ์ „ ๋ฌธ์„œ ํ˜•์‹ ๋ณ€๊ฒฝ์„ ๋‹ค์–‘ํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Œ(์Šคํฌ๋ฆฝํŠธ๋กœ ์ „์ฒ˜๋ฆฌ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์„ฑ๋“ฑ)

์ƒค๋“œ(Shard)

์ธ๋ฑ์Šค ๋‚ด๋ถ€์—๋Š” ์ƒ‰์ธ๋œ ๋ฐ์ดํ„ฐ๋“ค์ด ์กด์žฌํ•˜๋Š”๋ฐ ์ด ๋ฐ์ดํ„ฐ๋“ค์€ ํ•˜๋‚˜๋กœ ๋ญ‰์ณ์„œ ์กด์žฌํ•˜์ง€ ์•Š๊ณ  ๋ฌผ๋ฆฌ์  ๊ณต๊ฐ„์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ถ€๋ถ„๋“ค๋กœ ๋‚˜๋‰˜์–ด์„œ ์กด์žฌํ•จ.(์ด๋Ÿฌํ•œ ๊ณต๊ฐ„์„ ์ƒค๋“œ๋ผ ํ•จ)

  • Primary Shard: ๋ฐ์ดํ„ฐ์˜ ์›๋ณธ. Elasticsearch์—์„œ ๋ฐ์ดํ„ฐ ์—…๋ฐ์ดํŠธ ์š”์ฒญ์„ ๋‚ ๋ฆฌ๋ฉด ๋ฐ˜๋“œ์‹œ Primary Shard์— ์š”์ฒญ์„ ํ•˜๊ฒŒ ๋˜๊ณ  ํ•ด๋‹น ๋‚ด์šฉ์€ ๋ ˆํ”Œ๋ฆฌ์นด์— ๋ณต์ œ๋จ.
    • ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ์„ ์œ„ํ•ด ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ƒค๋“œ ๊ฐฏ์ˆ˜๋ฅผ ์กฐ์ •ํ•˜๋Š” ํŠœ๋‹์„ ํ•จ
  • Replica Shard: ๊ธฐ์กด ์›๋ณธ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฌด๋„ˆ์กŒ์„ ๋•Œ ๊ทธ ๋Œ€์‹  ์“ฐ๋ฉด์„œ ์žฅ์•  ๊ทน๋ณต ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•จ.

์„ธ๊ทธ๋จผํŠธ(Segment)

๋ฌธ์„œ์˜ ๋น ๋ฅธ ๊ฒ€์ƒ‰์„ ์œ„ํ•ด ์„ค๊ณ„๋œ ์ž๋ฃŒ๊ตฌ์กฐ. ๊ฐ ์ƒค๋“œ๋Š” ๋‹ค์ˆ˜์˜ ์„ธ๊ทธ๋จผํŠธ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ์Œ

  • Document ์ €์žฅ ์‹œ Elasticsearch๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์ด๊ฒƒ๋“ค์„ ๋ชจ์•„๋‘๊ณ  ์ƒˆ๋กœ์šด ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋””์Šคํฌ์— ๊ธฐ๋กํ•˜์—ฌ ๊ฒ€์ƒ‰์„ ๋ฆฌํ”„๋ ˆ์‰ฌ(refresh)ํ•œ๋‹ค.
    • ์ƒค๋“œ์—์„œ ๊ฒ€์ƒ‰ ์‹œ, ๋จผ์ € ๊ฐ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ์กฐํ•ฉํ•œ ํ›„ ์ตœ์ข… ๊ฒฐ๊ณผ๋ฅผ ํ•ด๋‹น ์ƒค๋“œ์˜ ๊ฒฐ๊ณผ๋กœ ๋ฆฌํ„ด
    • ์„ธ๊ทธ๋จผํŠธ๋Š” ๋ถˆ๋ณ€์„ฑ. ์‚ญ์ œ ์‹œ ์ƒˆ๋กœ์šด ๊ฒƒ์„ ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํŠน์ • ์ž„๊ณ„์น˜๋ฅผ ๋„˜๊ธฐ๋ฉด ๋”์ด์ƒ ํ•„์š”์—†์–ด์ง„ ๋ฐ์ดํ„ฐ๋“ค์„ ์ •๋ฆฌํ•˜๊ณ  ์ƒˆ๋กœ์šด ์„ธ๊ทธ๋จผํŠธ๋กœ ๋ณ‘ํ•ฉ ํ•œ ํ›„ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์‚ญ์ œํ•˜๋ฉฐ, ์ด ๋•Œ ๋น„๋กœ์†Œ ๋””์Šคํฌ์—์„œ ์™„์ „ํžˆ ์‚ญ์ œ

๐Ÿ’ฟ **

This post is licensed under CC BY 4.0 by the author.

Kubernetes network 2

Elasticsearch 1