๐ŸŽˆ Elasticsearch๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

Elasticsearch๋Š” ํ…์ŠคํŠธ, ์ˆซ์ž, ์œ„์น˜ ๊ธฐ๋ฐ˜ ์ •๋ณด, ์ •ํ˜• ๋ฐ ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ ๋“ฑ ๋ชจ๋“  ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์œ„ํ•œ ๋ฌด๋ฃŒ ๊ฒ€์ƒ‰ ๋ฐ ๋ถ„์„ ์—”์ง„์œผ๋กœ ๋ถ„์‚ฐํ˜• ๋ฐ ๊ฐœ๋ฐฉํ˜•์„ ํŠน์ง•์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. Elasticsearch๋Š” Apache Lucene์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋˜์—ˆ์œผ๋ฉฐ, Elasticsearch N.V.(ํ˜„์žฌ ๋ช…์นญ Elastic)๊ฐ€ 2010๋…„์— ์ตœ์ดˆ๋กœ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ REST API, ๋ถ„์‚ฐํ˜• ํŠน์ง•, ์†๋„, ํ™•์žฅ์„ฑ์œผ๋กœ ์œ ๋ช…ํ•œ Elasticsearch๋Š” ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘, ๋ณด๊ฐ•, ์ €์žฅ, ๋ถ„์„, ์‹œ๊ฐํ™”๋ฅผ ์œ„ํ•œ ๋ฌด๋ฃŒ ๊ฐœ๋ฐฉํ˜• ๋„๊ตฌ ๋ชจ์Œ์ธ Elastic Stack์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ์ž…๋‹ˆ๋‹ค. ๋ณดํ†ต ELK Stack(Elasticsearch, Logstash, Kibana์˜ ๋จธ๋ฆฌ๊ธ€์ž)์ด๋ผ๊ณ  ํ•˜๋Š” Elastic Stack์—๋Š” ์ด์ œ ๋ฐ์ดํ„ฐ๋ฅผ Elasticsearch๋กœ ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ๊ฒฝ๋Ÿ‰์˜ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ์—์ด์ „ํŠธ์ธ Beats๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿš€ Elasticsearch๋Š” ์–ด๋””์— ์‚ฌ์šฉ๋˜๋‚˜์š”?

Elasticsearch์˜ ์†๋„์™€ ํ™•์žฅ์„ฑ, ๊ทธ๋ฆฌ๊ณ  ์ˆ˜๋งŽ์€ ์ข…๋ฅ˜์˜ ์ฝ˜ํ…์ธ ๋ฅผ ์ƒ‰์ธํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ์ด์šฉ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค.

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฒ€์ƒ‰
  • ์›น์‚ฌ์ดํŠธ ๊ฒ€์ƒ‰
  • ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฒ€์ƒ‰
  • ๋กœ๊น…๊ณผ ๋กœ๊ทธ ๋ถ„์„
  • ์ธํ”„๋ผ ๋ฉ”ํŠธ๋ฆญ๊ณผ ์ปจํ…Œ์ด๋„ˆ ๋ชจ๋‹ˆํ„ฐ๋ง
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง
  • ์œ„์น˜ ๊ธฐ๋ฐ˜ ์ •๋ณด ๋ฐ์ดํ„ฐ ๋ถ„์„ ๋ฐ ์‹œ๊ฐํ™”
  • ๋ณด์•ˆ ๋ถ„์„
  • ๋น„์ฆˆ๋‹ˆ์Šค ๋ถ„์„

๐Ÿฆ– Elasticsearch๋Š” ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋‚˜์š”?

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

๐ŸŽƒ Elasticsearch ์ธ๋ฑ์Šค๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

Elasticsearch ์ธ๋ฑ์Šค๋Š” ์„œ๋กœ ๊ด€๋ จ๋˜์–ด ์žˆ๋Š” ๋ฌธ์„œ๋“ค์˜ ๋ชจ์Œ์ž…๋‹ˆ๋‹ค. Elasticsearch๋Š” JSON ๋ฌธ์„œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๋ฌธ์„œ๋Š” ์ผ๋ จ์˜ ํ‚ค(ํ•„๋“œ๋‚˜ ์†์„ฑ์˜ ์ด๋ฆ„)์™€ ๊ทธ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’(๋ฌธ์ž์—ด, ์ˆซ์ž, ๋ถ€์šธ, ๋‚ ์งœ, ๊ฐ’์˜ ๋ฐฐ์—ด, ์ง€๋ฆฌ์  ์œ„์น˜ ๋˜๋Š” ๊ธฐํƒ€ ๋ฐ์ดํ„ฐ ์œ ํ˜•)์„ ์„œ๋กœ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

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

์ƒ‰์ธ ํ”„๋กœ์„ธ์Šค ์ค‘์—, Elasticsearch๋Š” ๋ฌธ์„œ๋ฅผ ์ €์žฅํ•˜๊ณ  ์—ญ ์ธ๋ฑ์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜์—ฌ ๊ฑฐ์˜ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฌธ์„œ๋ฅผ ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค API๋ฅผ ์‚ฌ์šฉํ•ด ์ƒ‰์ธ์ด ์‹œ์ž‘๋˜๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋Š” ํŠน์ •ํ•œ ์ธ๋ฑ์Šค์—์„œ JSON ๋ฌธ์„œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐ŸŽŠLogstash๋Š” ์–ด๋””์— ์‚ฌ์šฉ๋˜๋‚˜์š”?

Elastic Stack์˜ ํ•ต์‹ฌ ์ œํ’ˆ ์ค‘ ํ•˜๋‚˜์ธ Logstash๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ง‘๊ณ„ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜์—ฌ Elasticsearch๋กœ ์ „์†กํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. Logstash๋Š” ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ์˜คํ”ˆ ์†Œ์Šค ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ํŒŒ์ดํ”„๋ผ์ธ์œผ๋กœ, ์‚ฌ์šฉ์ž๋Š” ์ด๋ฅผ ์ด์šฉํ•ด ๋‹ค์–‘ํ•œ ์†Œ์Šค์—์„œ ๋™์‹œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ , ์ด๋ฅผ ๊ฐ•ํ™”ํ•˜๊ณ  ๋ณ€ํ™˜ํ•œ ๋‹ค์Œ, Elasticsearch์—์„œ ์ƒ‰์ธ๋˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐ŸŽ† Kibana๋Š” ์–ด๋””์— ์‚ฌ์šฉ๋˜๋‚˜์š”?

Kibana๋Š” Elasticsearch๋ฅผ ์œ„ํ•œ ์‹œ๊ฐํ™” ๋ฐ ๊ด€๋ฆฌ ๋„๊ตฌ๋กœ์„œ, ์‹ค์‹œ๊ฐ„ ํžˆ์Šคํ† ๊ทธ๋žจ, ์„  ๊ทธ๋ž˜ํ”„, ํŒŒ์ด ์ฐจํŠธ, ์ง€๋„ ๋“ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Kibana์—๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์šฉ์ž ์ •์˜ํ•œ ๋™์  ์ธํฌ๊ทธ๋ž˜ํ”ฝ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” Canvas, ์œ„์น˜ ๊ธฐ๋ฐ˜ ์ •๋ณด ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๊ธฐ ์œ„ํ•œ Elastic Maps ๊ฐ™์€ ๊ณ ๊ธ‰ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋„ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๐ŸŽ‡ Elasticsearch๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

Elasticsearch๋Š” ๋น ๋ฆ…๋‹ˆ๋‹ค. Elasticsearch๋Š” Lucene์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋˜๊ธฐ ๋•Œ๋ฌธ์—, ํ’€ํ…์ŠคํŠธ ๊ฒ€์ƒ‰์— ๋›ฐ์–ด๋‚ฉ๋‹ˆ๋‹ค. Elasticsearch๋Š” ๋˜ํ•œ ๊ฑฐ์˜ ์‹ค์‹œ๊ฐ„ ๊ฒ€์ƒ‰ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ฌธ์„œ๊ฐ€ ์ƒ‰์ธ๋  ๋•Œ๋ถ€ํ„ฐ ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅํ•ด์งˆ ๋•Œ๊นŒ์ง€์˜ ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ์•„์ฃผ ์งง๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ์ด ๋Œ€๊ธฐ ์‹œ๊ฐ„์€ ๋ณดํ†ต 1์ดˆ์ž…๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ, Elasticsearch๋Š” ๋ณด์•ˆ ๋ถ„์„, ์ธํ”„๋ผ ๋ชจ๋‹ˆํ„ฐ๋ง ๊ฐ™์€ ์‹œ๊ฐ„์ด ์ค‘์š”ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ์ด์ƒ์ ์ž…๋‹ˆ๋‹ค.

Elasticsearch๋Š” ๋ณธ์งˆ์ƒ ๋ถ„์‚ฐ์ ์ž…๋‹ˆ๋‹ค. Elasticsearch์— ์ €์žฅ๋œ ๋ฌธ์„œ๋Š” ์ƒค๋“œ๋ผ๊ณ  ํ•˜๋Š” ์—ฌ๋Ÿฌ ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ์— ๊ฑธ์ณ ๋ถ„์‚ฐ๋˜๋ฉฐ, ์ด ์ƒค๋“œ๋Š” ๋ณต์ œ๋˜์–ด ํ•˜๋“œ์›จ์–ด ์žฅ์•  ์‹œ์— ์ค‘๋ณต๋˜๋Š” ๋ฐ์ดํ„ฐ ์‚ฌ๋ณธ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Elasticsearch์˜ ๋ถ„์‚ฐ์ ์ธ ํŠน์ง•์€ ์ˆ˜๋ฐฑ ๊ฐœ(์‹ฌ์ง€์–ด ์ˆ˜์ฒœ ๊ฐœ)์˜ ์„œ๋ฒ„๊นŒ์ง€ ํ™•์žฅํ•˜๊ณ  ํŽ˜ํƒ€๋ฐ”์ดํŠธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

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

Elastic Stack์€ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘, ์‹œ๊ฐํ™”, ๋ณด๊ณ ๋ฅผ ๊ฐ„์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค. Beats์™€ Logstash์˜ ํ†ตํ•ฉ์€ Elasticsearch๋กœ ์ƒ‰์ธํ•˜๊ธฐ ์ „์— ๋ฐ์ดํ„ฐ๋ฅผ ํ›จ์”ฌ ๋” ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. Kibana๋Š” Elasticsearch ๋ฐ์ดํ„ฐ์˜ ์‹ค์‹œ๊ฐ„ ์‹œ๊ฐํ™”๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, UI๋ฅผ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง(APM), ๋กœ๊ทธ, ์ธํ”„๋ผ ๋ฉ”ํŠธ๋ฆญ ๋ฐ์ดํ„ฐ์— ์‹ ์†ํ•˜๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.