์ข ๋ ๋ค์ํ ๊ฒ์ ํ๊ฒฝ์ ์ ๊ณตํ๊ณ ์ถ์ด์
Elasticsearch๋ฅผ ๋ฃ์ด๋ณด๊ธฐ๋ก ํ๋ค.
๊ทธ๋ฐ๋ฐ ์ ํํ Elasticsearch๊ฐ ์ด๋ค ๊ฒ์ด๋ฉฐ, ๋ฌด์จ ๊ธฐ๋ฅ์ด ์์๊น?
1. Elasticsearch
- Elasticsearch๋ ๋ถ์ฐํ RESTful ๊ฒ์ ๋ฐ ๋ถ์ ์์ง์ด๋ค.
→ ์ฌ๊ธฐ์ ๋ถ์ฐํ RESTful ์ด๋ ๋ง์ด ์ดํดํ๊ธฐ ์ด๋ ค์ธ ๊ฒ ๊ฐ๋ค. ๋ถ์ฐํ์ ์ฌ๋ฌ ๋์ ์ปดํจํฐ๋ฅผ ํ๋๋ก ๋ฌถ์ด ๋ฐ์ดํฐ๋ฅผ ๋๋์ด ์ ์ฅํ๋ค๋ ๋ป์ด๋ค. ๋ฐ์ดํฐ๊ฐ ๋์ด๋๋ฉด ์ปดํจํฐ๋ง ๋ ์ถ๊ฐํ๊ฑฐ๋, ์ปดํจํฐ๊ฐ ํ ๋๊ฐ ๊ณ ์ฅ์ด ๋๋ ๋ค๋ฅธ ์ปดํจํฐ์ ๋ณต์ฌ๋ณธ์ด ์์ด ๋ฐ์ดํฐ๊ฐ ์์ ํ๋ค๋ ์ฅ์ ์ ๊ฐ์ง๊ณ ์๋ค. ๊ทธ๋ฆฌ๊ณ RESTful ํต์ ๋ฐฉ์์ GET, POST, DELET๋ฅผ ์จ์ ์์ฒญ์ ๋ณด๋ด๋ฏ Elasticsearch๋ ์ฐ๋ฆฌ๊ฐ ์ฐ๋ ์น ๊ธฐ์ ๋ฐฉ์์ผ๋ก ์ฃผ๊ณ ๋ฐ์ ์ ์๋ค๋ ์๋ฏธ์ด๋ค.
โถ ์งง๋งํ๊ฒ ์ค๋ช ํ์๋ฉด Elasticsearch๋ ์ฌ๋ฌ ๋์ ์ปดํจํฐ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋๋ ๋ด๊ณ ์น ๋ฐฉ์์ผ๋ก ์ํตํ๋ ๊ฒ์ ๋ฐ ๋ถ์(ํต๊ณ) ์์ง์ด๋ผ๋ ๊ฒ์ด๋ค. - ๋ชจ๋ ํํ์ ํฌ๊ธฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์, ์์ธ, ๋ถ์ํ ์ ์๋๋ก ๋ฐ์ดํฐ๋ฅผ ์ค์ ์ง์ค์์ผ๋ก ์ ์ฅํ๋ค.
→ ๋ชจ๋ ํํ์ ํฌ๊ธฐ์ ๋ฐ์ดํฐ์ ์๋ฏธ๋ ๋ฐ์ดํฐ์ ์ข ๋ฅ๊ฐ ์ ํ ๋ฐ์ดํฐ(์ด๋ฆ, ๋์ด, ๋ ์ง ๊ฐ์) ํน์ ๋น์ ํ๋ฐ์ดํฐ(ํ์์ด ์ ๊ฐ๊ฐ์ธ ๋ฐ์ดํฐ)๋์ง, ๋ฐ์ดํฐ ํฌ๊ธฐ๊ฐ ์๊ฑฐ๋ ํฌ๋์ง ์๊ด์์ด ์ง์ด ๋ฃ์ ์ ์๋ค๋ ๋ป์ด๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฒ์, ์์ธ, ๋ถ์์ด ๋์๋ค. ์ฌ๊ธฐ์ ์์ธ์ index๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฌด์์ ์์๋๋ ๊ฒ์ด ์๋, ๋์ค์ ์ฐพ๊ธฐ ์ฝ๊ฒ ํค์๋๋ฅผ ๋ง๋๋ ๊ณผ์ ์ ๋งํ๋ค. ๊ทธ๋์ ์ด ๋ฐ์ดํฐ๋ค์ ๋ชจ๋ ์ค์ ์ง์ค์(Elasticsearch๋ผ๋ ํ๋์ ํฐ ์ ์ฅ์)์ผ๋ก ์ ์ฅํ๋ค. - ์๋ ๋งํฌ๋ฅผ ๋ค์ด๊ฐ๋ฉด Elasticsearch๊ฐ ์ ๊ณตํ๋ ๊ด๋ฆฌ ๋ฐ ์์ ์ ๋ํด ๋ ๊ตฌ์ฒด์ ์ผ๋ก ์ ์ ์๋ค.
Elasticsearch ๊ธฐ๋ฅ ๋ชฉ๋ก
Elasticsearch๋ ํ์ฌ ์ด์ฉ ๊ฐ๋ฅํ ๊ฐ์ฅ ๊ฐ๋ ฅํ ๋ฌด๋ฃ ์คํ ์์ค ๊ฒ์ ์์ง์ ๋๋ค. ๋ฐฉ๋ํ๊ณ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ ๋ชฉ๋ก์ ์ดํด๋ณด๋ฉด ๊ทธ ์ด์ ๋ฅผ ์ ์ ์์ต๋๋ค. ํํ ์คํธ ๊ฒ์, ๊ณ ๊ธ ๋ถ์, ์์น ๊ธฐ๋ฐ ์ ๋ณด ๊ฒ์,
www.elastic.co
2. Elasticsearch์ ๊ด๋ฆฌ ๋ฐ ์์
- ๊ณ ๊ฐ์ฉ์ฑ๊ณผ ์ฅ์ ๋ณต๊ตฌ(Clustering & Replication)
: ElasticSearch๋ ์ฌ๋ฌ ๋์ ์๋ฒ๋ฅผ ํ๋์ ํด๋ฌ์คํฐ๋ก ๋ฌถ์ด ๊ด๋ฆฌํ๋ค. ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ ์๋ณธ๋ฟ๋ง ์๋๋ผ ๋ณต์ ๋ณธ์ ๋ค๋ฅธ ๋ ธ๋์ ์๋์ผ๋ก ๋ถ์ฐ ์ ์ฅํ๋ค. ๊ทธ๋์ ์๋ฒ ํ ๋๊ฐ ๊ณ ์ฅ๋๋๋ผ๋ ๋ฐ์ดํฐ ์์ค ์์ด ์๋น์ค๊ฐ ๊ณ์ ์ ์ง๋๋ ๊ณ ๊ฐ์ฉ์ฑ(์ฅ์ ๋ ์๋ฒ ๋ค์ด ๋ฑ ์๊ธฐ์น ์์ ์ํฉ์์๋ ์ ๋ณด ์์คํ ์ด ์ค๋จ ์์ด ์ ์์ ์ผ๋ก ์ง์ ์ด์๋๋ ๋ฅ๋ ฅ)์ ๋ณด์ฅํ๋ค. - ์๋ ๋
ธ๋ ๋ณต๊ตฌ ๋ฐ ๋ฐ์ดํฐ ์ฌ๋ฐธ๋ฐ์ฑ
: ํด๋ฌ์คํฐ์ ์๋ก์ด ์๋ฒ(๋ ธ๋)๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ๊ธฐ์กด ๋ ธ๋๊ฐ ์ดํํ๋ฉด, Elasticsearch์ ๋ง์คํฐ ๋ ธ๋๊ฐ ์ด๋ฅผ ์ฆ์ ๊ฐ์งํ๋ค. ๊ทธ ํ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ๊ณจ๊ณ ๋ฃจ ๋๋๋ ์ฌ๋ฐธ๋ฐ์ฑ(Rebalancing) ์์ ์ ์๋์ผ๋ก ์ํํ๋ค. ๊ด๋ฆฌ์๊ฐ ์ผ์ผ์ด ๋ฐ์ดํฐ๋ฅผ ์ฎ๊ธธ ํ์ ์์ด ์์คํ ์ด ์์์ ์ต์ ์ ์ํ๋ฅผ ์ ์งํ๋ค. - ์ํ์ ํ์ฅ์ฑ(HoriziontalScalability)
: ๋ฐ์ดํฐ ์์ด ๊ธ๊ฒฉํ๊ฒ ๋์ด๋๊ฑฐ๋ ์ฌ์ฉ์๊ฐ ๋์ด ๊ฒ์ ์์ฒญ์ด ๋ง์์ง๋ฉด Elasticsearch๋ ํจ๊ป ํ์ฅํ ์ ์๋ค. ๋ฆฌ์์ค๊ฐ ๋ถ์กฑํด์ง๊ธฐ ์์ํ๋ฉด, ํด๋ฌ์คํฐ์ ๋ ๋ค๋ฅธ ๋ ธ๋๋ฅผ ์ถ๊ฐํ๊ธฐ๋ง ํ๋ฉด ๋๋ค. ํด๋ฌ์คํฐ์ ๋ ๋ง์ ๋ ธ๋๋ฅผ ์ถ๊ฐํ ๋, ์๋์ผ๋ก ๋ณต์ ๋ณธ์ ํ ๋นํ๊ธฐ ๋๋ฌธ์ ์ฅ์ ์ ๋๋นํ ์ ์๋ค. - ๋ณด์๊ด๋ฆฌ(RBAC & ABAC)
: ์ค์ํ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋๋งํผ ๋ณด์ ๊ธฐ๋ฅ์ด ๊ฐ๋ ฅํ๋ค. RBAC๋ Role-Based Access Control๋ก ์ญํ ์ ๊ธฐ๋ฐ์ผ๋ก ์์คํ ๋ฐ ๋ฐ์ดํฐ ์ ๊ทผ ๊ถํ์ ๊ด๋ฆฌํ๋ ๋ณด์ ๋ฐฉ์์ ๋ปํ๋ค. Elasticsearch๋ ์ญํ ์ ๊ถํ์ ํ ๋นํ๊ณ ์ฌ์ฉ์๋ ๊ทธ๋ฃน์๊ฒ ์ญํ ์ ํ ๋นํจ์ผ๋ก์จ ์ฌ์ฉ์๋ง๋ค ์ฝ๊ธฐ, ์ฐ๊ธฐ ๊ถํ์ ๋ค๋ฅด๊ฒ ๋ถ์ฌํ ์ ์๋ค. ABAC๋ Attribute-Based Access Control๋ก ์ฌ์ฉ์, ๋ฆฌ์์ค, ํ๊ฒฝ ์์ฑ์ ํ๊ฐํด ๋์ ์ผ๋ก ๊ถํ์ ๋ถ์ฌํ๋ ์ ์ฐํ ๋ณด์ ๋ชจ๋ธ์ด๋ค. RBAC๋ ์ฌ์ฉ์๊ฐ ๊ด๋ฆฌ์์ ์ํ๋์ง, ์ฌ์์ธ์ง, ์ธํด์ธ์ง์ ๋ฐ๋ผ ๊ถํ์ ๋ถ์ฌํ๋ค. ๋จ์ํ ์ญํ ๋ง ๋ณด๋ ๋ฐฉ์์ด๋ค. ABAC๋ ๋ฐ์ดํฐ์ ์ ๊ทผํ๋ ค๋ ์๊ฐ ๋๊ตฌ์ด๊ณ ์ง๊ธ ์ํฉ์ด ์ด๋ค์ง, ์ด๋ค ๋ฌธ์๋ฅผ ๋ณด๋ ค๊ณ ํ๋์ง ๋ชจ๋ ๋ฐ์ง๋ ๋ฐฉ์์ด๋ค. RBAC๋ ์ ๊ทผํ๋ ์์ ์ญํ ๋ง ๋ดค์ผ๋ฉด, ABAC๋ [์ฌ์ + ํ์ผ ๋ฎ + ๋ณธ์ธ ๋ถ์์ ๊ธฐ๋ฐ๋ถ์]๋ฅผ ๋ชจ๋ ํ์ธํ์ฌ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ค. - ์ด์ธ์๋ ๋ค์ํ ๊ด๋ฆฌ์ ์์ ์ ์ ๊ณตํ๋ค. Elasticsearch๋ฅผ ์ดํดํ๊ธฐ ์ํด ๋์ ๋๋ ๋ช๊ฐ์ง๋ง ์ดํด๋ณด์๋ค. ์๋ ์ ๊ณต๋ ๋งํฌ๋ฅผ ๋๋ฅด๊ณ ์คํฌ๋กค์ ํ๋ค๋ณด๋ฉด ์ด๋ค ๊ธฐ๋ฅ์ด ์๋์ง ์ ๋ฆฌ๋์ด์๋ค.
Elasticsearch ๊ธฐ๋ฅ ๋ชฉ๋ก
Elasticsearch๋ ํ์ฌ ์ด์ฉ ๊ฐ๋ฅํ ๊ฐ์ฅ ๊ฐ๋ ฅํ ๋ฌด๋ฃ ์คํ ์์ค ๊ฒ์ ์์ง์ ๋๋ค. ๋ฐฉ๋ํ๊ณ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ ๋ชฉ๋ก์ ์ดํด๋ณด๋ฉด ๊ทธ ์ด์ ๋ฅผ ์ ์ ์์ต๋๋ค. ํํ ์คํธ ๊ฒ์, ๊ณ ๊ธ ๋ถ์, ์์น ๊ธฐ๋ฐ ์ ๋ณด ๊ฒ์,
www.elastic.co
3. Elasticsearch ์ค์น ๋ฐฉ๋ฒ
- Elasticsearch๋ฅผ ์ค์นํ๋ ๋ฐฉ๋ฒ์ ๋ณดํต ์ง์ ๋ด ์ปดํจํฐ์ ์ค์นํ๋ ๋ฐฉ๋ฒ๊ณผ Docker๋ฅผ ํตํด ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
- ์์ถ ํ์ผ ๋ฐฉ์_ ์ค์นํ๋ ๊ณณ์ด Window๋ผ๋ฉด .zip, Linux/macOS๋ผ๋ฉด tar.gz๋ก ์ค์นํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์์ถ์ ํ๊ณ ์คํํ๋ ๊ตฌ์กฐ๋ผ์ ๊ฐ์ฅ ๋จ์ํ๊ณ , ์์คํ ์ ํจํค์ง ๋งค๋์ ์ค์ ์ ๋จ๊ธฐ์ง ์์ ์ฐ์ต์ฉ์ผ๋ก ๋ง์ด ์ค์นํ๋ค. ๋์ Linux๋ macOS์ tar.gz ํจํค์ง๋ systemd ๋ชจ๋์ด ํฌํจ๋์ง ์์์ ์๋น์ค์ฒ๋ผ ๊ด๋ฆฌํ๋ ค๋ฉด ๋ถํธํ ์ ์์ผ๋ฉฐ ์ฌ์ฉ์๊ฐ ์ผ์ผ์ด ์๋์ผ๋ก ์ธํ ํด์ผํ๋ ๋ถ๋ถ์ด ์๋ค.
- ํจ์ง์ง ๋ฐฉ์_ ์ค์นํ๋ ๊ณณ์ด Ubuntu ๊ณ์ด์ด๋ฉด DEB, RHEL/CentOS ๊ณ์ด์ด๋ฉด RPM์ผ๋ก ์ค์นํ๋ ๋ฐฉ์์ด๋ค. ์ด์์ฒด์ ์ ํจํค์ง ๊ด๋ฆฌ ํ๋ฆ์ ๋ง์ถฐ ์ค์น๋๊ธฐ ๋๋ฌธ์ ์๋น์ค ๋ฑ๋ก, ์์/์ค์ง, ์ด์๊ด๋ฆฌํ๊ธฐ ์ข๊ณ ์๋ฒ ํ๊ฒฝ์ ์ ์ด์ธ๋ฆฐ๋ค. ํนํ ์ด ๋ฐฉ์์ด Linux์์ Elasticsearch๋ฅผ ์ฅ๊ธฐ์ ์ผ๋ก ๊ตด๋ฆด ๋ ๋ง์ด ์ฐ๋ ๋ฐฉ์์ด๋ค. ๋์ ํ ์๋ฒ์ ์ฌ๋ฌ ๋ฒ์ ์ Elasticsearch๋ฅผ ๋์ฐ๊ธฐ ์ด๋ ต๊ณ , ์ญ์ ํ์๋ ์ฐ๊บผ๊ธฐ ํ์ผ์ด ๋จ์์ ๊ด๋ฆฌ๊ฐ ๋ค์ ๋ฒ๊ฑฐ๋กญ๋ค.
- Docker ์ปจํ ์ด๋ ๋ฐฉ์_ Docker๋ก Elasticsearch๋ฅผ ์ค์นํ๋ค. ์ปจํ ์ด๋๋ก ๋ฐ๋ก ๋์ธ ์ ์์ด์ ์ค์น๊ฐ ๋น ๋ฅด๊ณ , ๋ฒ์ ๊ณ ์ ๋ ์ฝ๊ณ ์ญ์ ๋ ๊น๋ํ๋ค. ๋ค๋ง ์ปจํ ์ด๋ ๊ฐ๋ , ๋ณผ๋ฅจ, ํฌํธ ๋งคํ ๋ฑ Docker์ ๋ํ ๊ธฐ์ด ์ง์์ด ํ์ํ๋ค. ๊ทธ๋ฌ๋ ๋ด ๊ธฐ์ค ์ด์ฐจํผ ๋ญ ์ ํํ๋ ๊ณต๋ถํด์ผํด์ ์ญ์ ์ ๊น๋ํ Docker ๋ฐฉ์์ ์ ํํ๋ค.
- Managed Service ๋ฐฉ์(Elastic Cloud)_ ์๋ฒ๋ฅผ ์ง์ ๊ด๋ฆฌํ์ง ์๊ณ ์๋น์ค ํํ๋ก ๋น๋ ค ์ฐ๋ ๋ฐฉ์์ด๋ค. Elastic ๊ณต์ ํํ์ด์ง๋ AWS/GCP/Azure์ ๋ง์ผํ๋ ์ด์ค์์ ํด๋ฆญ ๋ช ๋ฒ์ผ๋ก ํด๋ฌ์คํฐ๋ฅผ ์์ฑํ๋ค. ์ค์น, ๋ณด์, ๋ฐฑ์ , ์ ๋ฐ์ดํธ๋ฅผ Elastic ๋ณธ์ฌ์์ ๋์ ํด์ฃผ๋ฉฐ ์ ๋ฌธ๊ฐ๊ฐ ์์ด๋ ์ค์ ์ด์์ด ๊ฐ๋ฅํ๋ค. ๋์ ์๋ฌด๋๋ ์ง์ ์๋ฒ๋ฅผ ์ด์ํ๋ ๊ฒ๋ณด๋ค ๋น์ฉ์ด ๋ ๋น์ธ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ด๋ถ ๋คํธ์ํฌ ์ ์ฉ๋ง ๊ตฌ์ฑ ์ ์ค์ ์ด ๊น๋ฐ๋กญ๋ค
4. Elasticsearch๋ก ํ๊ณ ์ ํ๋ ๊ฒ.
- ์ผ๋จ ๋ถ๋ถ ๊ฒ์์ด ๋๋๋ก ํ๊ณ ์ถ๋ค. ์๋ฅผ ๋ค์ด 'ํฐ์คํ ๋ฆฌ'์ 'ํฐ์ค'๋ง ์ณ๋ ๋์ค๋๋ก ํ๊ณ ์ถ๋ค.
- ์ถ๊ฐ๋ก ์ค์ ํ์ฌ ์ด์ฑ ๊ฒ์๋ ํ๊ณ ์ถ๋ค. 'ํฐ์คํ ๋ฆฌ'์ ์ด์ฑ 'ใ ใ ใ ใน'๋ง ์ณ๋ ์ ๋ณด๊ฐ ๋์ค๋๋ก ํ๊ณ ์ถ๋ค.
- ๋ง์ฝ ์๊ฐ์ด ๋๋ค๋ฉด, ๊ฒ์์ฐฝ์ ๋์ค๋ ์๋์์ฑ๋ ํด๋ณด๊ณ ์ถ๋ค.(์๋ง ์ด๊ฑด ๋ชปํ ๊ฐ๋ฅ์ฑ์ด...)