๐ ๊ฐ์
OpenSearch(Elasticsearch ํฌํจ)๋ ๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ค์ํ ์ต์ ํ ์ ๋ต์ด ํ์ํฉ๋๋ค. ํนํ ์ค๋(shard) ๊ตฌ์ฑ๊ณผ JVM ํ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ ์ฑ๋ฅ์ ์ง์ ์ ์ผ๋ก ์ํฅ์ ๋ฏธ์น๋ ์ค์ํ ์์์ ๋๋ค.
๋ณธ ๊ธ์์๋ OpenSearch์ ์ค๋ ์ค์ ๊ณผ JVM ํ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์ฑ ๋ฐฉ๋ฒ์ ๋ํ ์ค์ง์ ์ธ ๊ฐ์ด๋๋ฅผ ์ ์ํฉ๋๋ค.
๐ ์ฉ์ด ์ ๋ฆฌ
๋จผ์ ๊ธฐ๋ณธ์ ์ธ ์ฉ์ด๋ถํฐ ์ ๋ฆฌํ๊ฒ ์ต๋๋ค.
- Index (์ธ๋ฑ์ค): ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ ๋ ผ๋ฆฌ์ ๊ณต๊ฐ์ ๋๋ค.
- Shard (์ค๋): ์ธ๋ฑ์ค๋ฅผ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋๋ ๋ฐ์ดํฐ ๋จ์๋ก, ๋ณต์ ๋ณธ(replica)์ด ์๋ ์ค์ ๋ฐ์ดํฐ์ ๋๋ค.
- Primary Shard (ํ๋ผ์ด๋จธ๋ฆฌ ์ค๋): CRUD(Create, Read, Update, Delete)๋ฅผ ์ฒ๋ฆฌํ๋ ์ค์ ์ค๋์ ๋๋ค.
- Replica Shard (๋ ํ๋ฆฌ์นด ์ค๋): ์ฅ์ ๋ณต๊ตฌ ๋ฐ ์ฝ๊ธฐ ๋ถํ ๋ถ์ฐ์ ์ํด ํ๋ผ์ด๋จธ๋ฆฌ ์ค๋์ ๋ณต์ ๋ณธ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
- ํซ๋ ธ๋(Hot Node): ํน์ ๋ ธ๋์ ๋ง์ ์ค๋๊ฐ ๋ชฐ๋ ค ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ด ๋ฐ์ํ๋ ๋ ธ๋์ ๋๋ค.
๐ OpenSearch ๋ฐ Elasticsearch ์ค๋ ๊ถ์ฅ์ฌํญ
๐น ์ค๋ ํฌ๊ธฐ ๋ฐ ๊ฐ์ ๊ถ์ฅ์ฌํญ
- ์ผ๋ฐ์ ์ผ๋ก ์ค๋๋น ํฌ๊ธฐ๋ 10~50GB๊ฐ ์ ์ ํฉ๋๋ค.
- ๊ฒ์ ์ง์ฐ์๊ฐ ๊ฐ์๊ฐ ์ค์ํ๋ค๋ฉด ์ค๋๋น 10~30GB
- ์ฐ๊ธฐ ์์ ์ค์ฌ(๋ก๊ทธ ๋ถ์ ๋ฑ)์ด๋ผ๋ฉด ์ค๋๋น 30~50GB
- ๋จ์ผ ์ธ๋ฑ์ค๋ ์ต๋ 1024๊ฐ์ ์ค๋๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค.
- ํ ์ค๋์ ๋ฌธ์ ์๋ 2์ต ๊ฐ ์ดํ๋ก ์ ์งํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
- ์ ์ฒด ์ค๋๋น ๋ฌธ์ ์๋ ์ฝ 20์ต ๊ฐ๋ฅผ ์ด๊ณผํ์ง ์๋๋ก ๊ด๋ฆฌํด์ผ ํฉ๋๋ค.
๐น ์ค๋ ๊ฐ์ ์ค์ ๊ณต์
์ค๋ ๊ฐ์๋ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ๋ฉ๋๋ค.
- Primary ์ค๋ ๊ฐ์ × (Replica ๊ฐ์ + 1)
์๋ฅผ ๋ค์ด, Primary ์ค๋๊ฐ 3๊ฐ, Replica๊ฐ 2๊ฐ์ธ ๊ฒฝ์ฐ ์ด ์ค๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
(Primary 3) × (Replica 2 + 1) = ์ด 9๊ฐ์ ์ค๋
๐น ์ค๋ ๊ฐ์์ ๋ฐ๋ฅธ ์ฑ๋ฅ ์ํฅ
- Primary ์ค๋๊ฐ ๋ง์์๋ก ์ฝ๊ธฐ ์ฑ๋ฅ์ ํฅ์๋์ง๋ง, ์์ ์๋ชจ์ ๋ง์คํฐ ๋ ธ๋ ๋ถํ๊ฐ ์ฆ๊ฐํฉ๋๋ค.
- ๋ง์ ์ค๋๋ ๋ง์คํฐ ๋ ธ๋์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ฆ๊ฐ์์ผ ์ ๋ฐ์ ์ธ ๊ฒ์ ๋ฐ ์์ธ ์ฑ๋ฅ ์ ํ๋ฅผ ์ ๋ฐํฉ๋๋ค.
- ๋ฐ๋ผ์, ์ค๋ ์๋ฅผ ๋ฐ์ดํฐ ๋ ธ๋ ์์ ์ง์ ๋ฐฐ์๋ก ์ค์ ํ์ฌ ํซ๋ ธ๋ ํ์์ ์๋ฐฉํ๋ ๊ฒ์ด ๊ถ์ฅ๋ฉ๋๋ค.
๐น ๋ง์คํฐ ๋ ธ๋ ํ ์ค์
- ๋ง์คํฐ ๋ ธ๋๋ 3000๊ฐ ์ธ๋ฑ์ค๋น ์ต์ 1GB ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค.
๐ JVM ํ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๊ถ์ฅ์ฌํญ
๐น JVM ํ ์ฌ์ด์ฆ ์ค์
OpenSearch๋ JVM ํ์ ์ธ์คํด์ค RAM์ 50%๋ก ์ ํํ์ฌ ์ค์ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, c6g.large.search
์ธ์คํด์ค์ ๊ฒฝ์ฐ:
- ์ธ์คํด์ค ๋ฉ๋ชจ๋ฆฌ: 8GB
- JVM ํ ํฌ๊ธฐ: 4GB(50%)
๐น JVM ํ ์ฌ์ด์ฆ๋ฅผ 50%๋ก ์ ํํ๋ ์ด์
๋ค์์ ์ด์ ๋ก JVM ํ ์ฌ์ด์ฆ๋ฅผ ์ธ์คํด์ค ๋ฉ๋ชจ๋ฆฌ์ 50%๋ก ์ค์ ํฉ๋๋ค.
- OS Page Cache ํ๋ณด: Lucene ๊ฒ์ ์ฑ๋ฅ์ ๋ณด์ฅํ๊ธฐ ์ํจ
- GC ์์ ์ฑ ํ๋ณด: ๊ฐ๋น์ง ์ปฌ๋ ์ (Garbage Collection)์ ํจ์จ์ฑ ์ฆ๊ฐ
- CompressedOops ์ต์ ํ ์ ์ง: JVM์ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ ํ์ฉ
- ์์คํ ์์ ์ฑ ํ๋ณด: ์์คํ ์ ์ฒด ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์์ ์ฑ ํฅ์
๐ OpenSearch ์ฑ๋ฅ ์ต์ ํ ํ
- ํ ๋
ธ๋์ JVM ํ ๋ฉ๋ชจ๋ฆฌ 1GiB๋น ๊ถ์ฅ ์ค๋ ๊ฐ์:
- OpenSearch 2.17 ์ด์: 2.15๊ฐ/GB (์ต๋ 4000๊ฐ)
- ์ผ๋ฐ์ ์ธ ํ๊ฒฝ์์๋ ์ต๋ 25๊ฐ ์ดํ๋ก ์ค์ ๊ถ์ฅ
- ์ค๋๊ฐ ๋ง์ ๊ฒฝ์ฐ ๋ง์คํฐ ๋ ธ๋์ ๋ฉ๋ชจ๋ฆฌ ๋ถํ๊ฐ ๋์์ง๊ณ , ์ด๋ ์ ์ฒด ํด๋ฌ์คํฐ ์ฑ๋ฅ์ ๋ถ์ ์ ์ธ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค.
- ๋ฐ๋ผ์ ๋ถํ์ํ ์ค๋๋ฅผ ์ค์ด๊ณ , ์ค๋ ํฌ๊ธฐ๋ฅผ ์ ์ ํ ์ ์งํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
๐ ๊ธฐ์กด ํด๋ฌ์คํฐ ์ฌ๋ก ๋ถ์
๊ธฐ์กด์ ์ด์์ค์ธ OpenSearch Data Node๋ ํ์ฌ ์๋์ ๊ฐ์ ์ค์ ์ํ์ ๋๋ค.
- ๋ ธ๋ ํ์ : c6g.large.search (JVM ํ ๋ฉ๋ชจ๋ฆฌ 4GB)
- ์ต๋ ์ค๋ ์ ์ค์ (max_shards_per_node): 1000๊ฐ
๐น ๊ธฐ์กด ํด๋ฌ์คํฐ ๋ถ์ ๊ฒฐ๋ก
- ํ์ฌ ๊ธฐ์กด ํด๋ฌ์คํฐ์ ๋ฐ์ดํฐ ๋ ธ๋์ ์ธ๋ฑ์ค ๋๋น ์ค๋ ์๊ฐ ๋ง์ ์์ ์๋ชจ๊ฐ ํฐ ํธ์ ๋๋ค.
- ์ธ์คํด์ค ํ์
(
c6g.large
)์ ๊ณ ๋ คํ ๋, ํ๋ผ์ด๋จธ๋ฆฌ ์ค๋๋ฅผ 3๊ฐ ์ด์ ์ ์งํ์ง ์๋ ๊ฒ์ด ๋ฐ๋์งํฉ๋๋ค. - ์ค๋ ์๋ฅผ ํ์ฌ ์ํ์์ ์ ์งํ๋ค๋ฉด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ต์ 12GB ์ด์์ ์ธ์คํด์ค๋ก ์ ๊ทธ๋ ์ด๋ํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
- ๋ค๋ง ํ์ฌ ์ํ์์ JVM Pressure ํ์์ ๊ด์ฐฐ๋์ง ์์์ต๋๋ค.
๐ ์ถ๊ฐ ์ ๋ณด ๋ฐ API ์์
๐น ํด๋ฌ์คํฐ ํ ๋น ์ ๋ณด ํ์ธ
GET /_cat/allocation
GET /_cat/allocation/{node_id}
๐น ์ค๋ ๋ฐ ๋ ํ๋ฆฌ์นด ๊ฐ์ ์ค์ ์์
PUT /movie
{
"settings": {
"index": {
"number_of_shards": 4, // Primary ์ค๋ ์ (์ผ๋ฐ์ ์ผ๋ก Node ์ * n)
"number_of_replicas": 1 // Replica ์ค๋ ์
}
}
}
๐ ๊ฒฐ๋ก
ํจ์จ์ ์ธ OpenSearch ๊ด๋ฆฌ์ ํต์ฌ์ ์ค๋ ์ ๊ด๋ฆฌ์ JVM ํ ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ์ ๋ฌ๋ ค ์์ต๋๋ค. ๊ถ์ฅ ๊ฐ์ด๋๋ผ์ธ์ ์ฐธ๊ณ ํ์ฌ ํด๋ฌ์คํฐ์ ์ฑ๋ฅ๊ณผ ์์ ์ฑ์ ํ๋ณดํ์๊ธฐ ๋ฐ๋๋๋ค.
๐ ์ฐธ๊ณ ์๋ฃ
- ElasticSearch ์ค๋ ํฌ๊ธฐ ๊ถ์ฅ์ฌํญ
- NAVER ElasticSearch ์ฑ๋ฅ ์ต์ ํ ์ฌ๋ก
- AWS OpenSearch ์ฑ๋ฅ ์ต์ ํ ๊ฐ์ด๋
- Toss ๋ฐ์ดํฐ ์ค๋ ์ต์ ํ ์ฌ๋ก
- OpenSearch ์ค๋ ์ต์ ํ ๋ธ๋ก๊ทธ
- AWS JVM ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ ๊ฐ์ด๋
- AWS OpenSearch ์๋ฌ ์ฒ๋ฆฌ ๊ฐ์ด๋
- OpenSearch Circuit Breaker ํธ๋ฌ๋ธ์ํ
- ๋์ ๋ฐฉ์๊ณผ ํจ๊ป ์์๋ณด๋ ์ต์ ์ Amazon OpenSearch Service ์ฌ์ด์ง
'AWS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
AWS ๊ณ์ ๊ฐ S3 ๋ฐ์ดํฐ ๋๊ธฐํ (Cross-Account S3 Sync) (0) | 2025.05.01 |
---|---|
AWS MSK ๊ณ ๊ฐ์ฉ์ฑ ์ค์ (0) | 2024.08.16 |
AWS Instance ์ฌ์ฉ์ ์ด๋ฏธ์ง ์์ฑ ๋ฐ ENA ๋ฌธ์ (0) | 2020.04.14 |