[AWS] Opensearch

AWS Opensearch๋Š” AWS์—์„œ ์ œ๊ณตํ•˜๋Š” ์ž์ฒด์ ์ธ Elasticsearch ์ง€์› ์„œ๋น„์Šค๋‹ค.

Opensearch์—๋Š” ํ˜„์žฌ 2๊ฐ€์ง€ ์‹คํ–‰ ์˜ต์…˜์ด ์žˆ๋‹ค.

  1. AWS์˜ elasticsearch ํฌํฌ์ธ opensearch.
  2. ์›๋ณธ ์˜คํ”ˆ์†Œ์Šค์ธ elasticsearch ์—”์ง„.

Elasticsearch์—์„œ ๋ผ์ด์„ผ์Šค๋ฅผ ๋ฐ”๊พธ๋ฉด์„œ ์˜คํ”ˆ์†Œ์Šค ์ „์Ÿ์„ ์‹œ์ž‘ํ•˜์ž, 7.11(2021๋…„ 2์›”)์˜ ์ด์ „ ๋ฒ„์ „์„ ๊ธฐ์ค€์œผ๋กœ ํฌํฌํ•ด์„œ ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ณ  ์žˆ๋Š”๊ฒŒ opensearch ์—”์ง„์ด๋‹ค.
Elasticsearch๊ฐ€ ๊ทผ๋ž˜์— ๋‹ค์‹œ ์˜คํ”ˆ์†Œ์Šคํ™”๋˜๊ธด ํ–ˆ๋Š”๋ฐ, ์ด๋ฏธ ๊ฐ์ž ๋จผ ๊ธธ์„ ๋– ๋‚˜์„œ์ธ์ง€ ๋‹ค์‹œ ๋ณ‘ํ•ฉํ•  ์ƒ๊ฐ์€ ์—†์„ ๊ฒƒ ๊ฐ™๋‹ค. ๋งŽ์€ ๋ถ€๋ถ„์„ ๊ณต์œ ํ•˜๊ธด ํ•˜์ง€๋งŒ ๋…์ž์ ์œผ๋กœ ๋ฐœ์ „ํ•˜๊ณ  ์žˆ๋‹ค.

elasticsearch ์›๋ณธ ์—”์ง„์€ ๊ตฌ ๋ฒ„์ „์ธ 7.10๊นŒ์ง€๋งŒ ์ง€์›๋œ๋‹ค. ํ˜„ ์‹œ์ ์—์„œ elasticsearch ๋ฒ„์ „์ด 8.*๋Œ€์ด๋‹ˆ, ์ข€ ๋’ค์ณ์ง„ ์…ˆ์ด๋‹ค. ๋ผ์ด์„ผ์Šค๋„ ๋Œ์•„์™”์œผ๋‹ˆ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋  ์ˆ˜๋„ ์žˆ์ง€ ์•Š์„๊นŒ?




๋น„์šฉ

https://aws.amazon.com/ko/opensearch-service/pricing/

์ด๊ฒƒ๋„ ์˜จ๋””๋งจ๋“œ(ํ”„๋กœ๋น„์ €๋‹ ๋ชจ๋“œ)์™€ ์„œ๋ฒ„๋ฆฌ์Šค ๋ชจ๋“œ๊ฐ€ ๋”ฐ๋กœ ์žˆ๋‹ค.

๊ทผ๋ฐ ์„œ๋ฒ„๋ฆฌ์Šค๊ฐ€ ๋”ฑํžˆ ์‹ผ๊ฑด ์•„๋‹ˆ๊ณ , ์ž๋™์œผ๋กœ ์Šค์ผ€์ผ๋ง๋œ๋‹ค๋Š”๊ฒŒ ๋‹ค๋ฅธ๊ฑฐ๋‹ค.

๊ฒŒ๋‹ค๊ฐ€ ๋ง์ด ์„œ๋ฒ„๋ฆฌ์Šค์ง€, ์‚ฌ์šฉ๋Ÿ‰์— ๋”ฐ๋ผ์„œ OCU ๋จธ์‹ ์„ ์ž๋™์œผ๋กœ ํ”„๋กœ๋น„์ €๋‹ํ•ด์ฃผ๋Š” ์ •๋„๊ฐ€ ๋‹ค๋‹ค.
ํ•˜๋‚˜์˜ OCU ๋จธ์‹ ์€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ 6gb ์ •๋„๊ณ , ๋น„์šฉ๋„ ๋น„์‹ธ๋‹ค.

์˜จ๋””๋งจ๋“œ๋Š” ์›ํ•˜๋Š” ์ŠคํŽ™์œผ๋กœ ๊ณ ์ •์œผ๋กœ ํ• ๋‹นํ•ด์„œ ์“ธ ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ๋‹ค. ec2์™€ ๊ฑฐ์˜ ๋น„์Šทํ•˜๋‹ค.

์ปดํ“จํŒ… ๋ ˆ๋ฒจ๋ณ„๋กœ ์‹œ๊ฐ„๋‹น ์š”๊ธˆ์ด ๋‚˜์˜ค๊ณ 


์Šคํ† ๋ฆฌ์ง€์™€ ๋ฐ์ดํ„ฐ ์ „์†ก ๋“ฑ์˜ ์žก๋น„์šฉ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ถ€๊ณผ๋œ๋‹ค.
EC2์— ๋น„๊ตํ•˜๋ฉด ๋” ๋น„์‹ธ๊ธด ๋น„์‹ธ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, t3.small ๋ ˆ๋ฒจ์€ EC2์—์„  0.026 ๋‹ฌ๋Ÿฌ ์ •๋„์ธ ๋ฐ˜๋ฉด, t3.small.search๋Š” 0.056 ๋‹ฌ๋Ÿฌ๋‹ค.
EBS ๋ฒ”์šฉ SSD gp3 ์Šคํ† ๋ฆฌ์ง€๊ฐ€ 0.0912๋‹ฌ๋Ÿฌ์ธ๋ฐ, Opensearch ๋ณผ๋ฅจ์€ 0.1391๋‹ฌ๋Ÿฌ๋‹ค.

์ธ์Šคํ„ด์Šค ํƒ€์ž… ๋น„์šฉ์€ ์ข€ ๋น„์‹ธ๊ธด ํ•œ๋ฐ, ๋‹ค๋ฅธ DB ์„œ๋น„์Šค ๋Œ€๋น„ํ•ด์„œ ํŠน๋ณ„ํžˆ ๋น„์‹ผ๊ฑด ์•„๋‹ˆ๋‹ค.
RDS PostgreSQL์˜ ๋™์ผ ํƒ€์ž…์ธ db.t3.small์™€ ๋น„๊ตํ•˜๋ฉด, ๋˜‘๊ฐ™์ด 0.056๋‹ฌ๋Ÿฌ๋‹ค. ๋™๋“ฑํ•˜๊ฒŒ ๋น„์‹ธ๋‹ค.

ํ˜„๋ช…ํ•˜๊ฒŒ ์ž˜ ์„ ํƒํ•˜๊ธธ ๋ฐ”๋ž€๋‹ค.




ํด๋Ÿฌ์Šคํ„ฐ ์ƒ์„ฑํ•ด๋ณด๊ธฐ (Elasticsearch)

๋จผ์ € elasticsearch ์—”์ง„์„ ํ†ตํ•ด์„œ ๋งŒ๋“ค์–ด๋ณด๊ฒ ๋‹ค.

์ด๋ฆ„ ๊ณ ๋ฅด๊ณ , ์ปค์Šคํ…€ ๋ชจ๋“œ๋กœ ์„ค์ •ํ•˜๋„๋ก ํ•˜์ž.
์†์‰ฌ์šด ์ƒ์„ฑ์œผ๋กœ ํ•˜๋ฉด ๊ฒ๋‚˜ ๋น„์‹ผ ์ŠคํŽ™์œผ๋กœ ๋งž์ถฐ์ค€๋‹ค.


๊ณ ๊ฐ€์šฉ์„ฑ์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ์ผœ์ค€๋‹ค. ์ผœ๋ฉด ๋‹น์—ฐํžˆ ๋น„์šฉ์ด ๋” ๋Š˜์–ด๋‚œ๋‹ค.


์ด๊ฒŒ ์—”์ง„์ด๋‹ค.
๊ตฌ๋ฒ„์ „์ผ์ง€๋ผ๋„ Elasticsearch์™€์˜ ์™„๋ฒฝํ•œ ํ˜ธํ™˜์ด ํ•„์š”ํ•˜๋‹ค๋ฉด Elasticsearch๋ฅผ, ๋” ๋›ฐ์–ด๋‚œ ์„ฑ๋Šฅ์ด ํ•„์š”ํ•˜๋‹ค๋ฉด opensearch๋ฅผ ์„ ํƒํ•˜๋ฉด ๋œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋…ธ๋“œ ๊ฐฏ์ˆ˜๋ฅผ ์ •ํ•œ๋‹ค.

๋‚œ ๊ทธ๋ƒฅ 2๊ฐœ๋กœ ํ–ˆ๋‹ค.


์ด๊ฑด ์ผ ์•ˆํ•˜๊ณ  ๊ด€๋ฆฌ๋งŒ ํ•˜๋Š” ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ถ€๋ถ„์ด๋‹ค.
๊ฐ€์šฉ์„ฑ์ด ์ค‘์š”ํ•˜๋‹ค๋ฉด ์ด๊ฑธ ํ™€์ˆ˜๋กœ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ์‚ฌํ•ญ์ด๋‹ค. ๋‚œ ๋ฌด์‹œํ•˜๊ฒ ๋‹ค.


๋„คํŠธ์›Œํฌ๋Š” ๊ทธ๋ƒฅ ํผ๋ธ”๋ฆญ์œผ๋กœ ์—ด์—ˆ๋‹ค.
๋‚œ ๊ท€์ฐฎ์•„์„œ ๊ทธ๋ƒฅ ํ•œ๊ฑฐ๊ณ , ํ”„๋กœ๋•์…˜ ๋ ˆ๋ฒจ์—์„œ๋Š” VPC ๊ฑธ๊ณ  ๋‚ด๋ถ€ํ†ต์‹ ๋งŒ ํ•˜๋„๋ก ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค.



๊ทธ๋ž˜์„œ ์ด๋ ‡๊ฒŒ ์˜ต์…˜์ด ๋‚˜์™”๋‹ค.


์ด๊ฒƒ๋„ ์นดํ”„์นด์ฒ˜๋Ÿผ ํ”„๋กœ๋น„์ €๋‹์— ํ•œ์„ธ์›” ๊ฑธ๋ฆฐ๋‹ค.
30๋ถ„ ์ •๋„๋Š” ๊ฑธ๋ฆฐ๊ฑฐ๊ฐ™๋‹ค.






ํ‚ค๋ฐ”๋‚˜ ์ ‘์†ํ•˜๊ธฐ

๋ณดํ†ต Elasticsearch ์ž์ฒด์˜ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ฑฐ๋‚˜, ์šด์˜์„ ํ• ๋•Œ๋Š” ํ‚ค๋ฐ”๋‚˜ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ํ†ตํ•ด ์ œ์–ดํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋Œ€๋ถ€๋ถ„์ด๋‹ค. ๊ทธ๋ž˜์„œ ํ‚ค๋ฐ”๋‚˜๋„ ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณตํ•œ๋‹ค.

ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ๋‹ค๋ฉด ์ด๋ ‡๊ฒŒ URL์ด ์ƒ๊ธธํ…๋ฐ

์•„๋ฌด ์„ค์ • ์—†์ด ๊ทธ๋ƒฅ ๋“ค์–ด๊ฐ€๋ฉด ๊ถŒํ•œ๋•Œ๋ฌธ์— ์•„๋ฌด๊ฒƒ๋„ ์•ˆ๋  ๊ฒƒ์ด๋‹ค.

๋ณด์•ˆ ๊ตฌ์„ฑ์„ ํŽธ์ง‘ํ•ด์„œ ์ธ๋ฐ”์šด๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ๋“  ํ—ˆ์šฉํ•ด์ค˜์•ผ ํ•œ๋‹ค.
์ด๊ฑด ๋„คํฌ์›Œํฌ ๊ตฌ์„ฑ์— ๋”ฐ๋ผ์„œ ์กฐ๊ธˆ ๋‹ค๋ฅด์ง€๋งŒ, ์ง€๊ธˆ ๋‚˜์ฒ˜๋Ÿผ ํผ๋ธ”๋ฆญ ์•ก์„ธ์Šค ์—ด๊ณ  ๋Œ€์ถฉ ์“ฐ๋Š” ๊ฒฝ์šฐ์—๋Š” IP ๊ธฐ๋ฐ˜์œผ๋กœ ํ—ˆ์šฉ์„ ์—ฌ๋Š”๊ฒŒ ํŽธํ•˜๋‹ค.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:ap-northeast-2:๊ณ„์ •ID:domain/ํด๋Ÿฌ์Šคํ„ฐ๋ช…/*",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": [
            "์•„์ดํ”ผ"
          ]
        }
      }
    }
  ]
}

์ด๋ ‡๊ฒŒ ์ˆ˜์ •ํ•˜๊ณ  ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.

๋Œ€์‹œ๋ณด๋“œ ์ ‘๊ทผ์„ ์—ฌ๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.
https://docs.aws.amazon.com/ko_kr/opensearch-service/latest/developerguide/dashboards.html#dashboards-access

๋ณด์•ˆ ์„ค์ •์„ ์ˆ˜์ •ํ•ด์„œ ์ธ๋ฐ”์šด๋“œ๋ฅผ ์—ด์–ด์ฃผ๊ณ , ๋“ค์–ด๊ฐ€๋ฉด ์ ‘์†์ด ๋  ๊ฒƒ์ด๋‹ค.

๊ธฐ๋ณธ ๋Œ€์‹œ๋ณด๋“œ ๊ตฌ์„ฑ์€ ๋”ฐ๋กœ ์—†๋‹ค.
์• ์ดˆ์— ํ‚ค๋ฐ”๋‚˜์—์„œ ๋ณด์—ฌ์ค˜์•ผ ํ•  ๋ฉ”ํŠธ๋ฆญ๋“ค์€ AWS ์ฝ˜์†” ์ž์ฒด์—์„œ ์ด๋ฏธ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ตณ์ด ๋งŒ๋“ค์–ด์„œ ์“ธ ๋‹น์œ„์„ฑ์€ ๋”ฑํžˆ ์—†๋Š”๊ฑฐ๊ฐ™๋‹ค.

๊ทธ ์™ธ์—๋Š” dev tool ๊ฐ™์€๊ฑธ ์“ธ ์ˆ˜๋„ ์žˆ๋‹ค.

์ž˜ ๋™์ž‘ํ•œ๋‹ค.




Elasticsearch API ์‚ฌ์šฉํ•˜๊ธฐ

์•„๊นŒ ์œ„์—์„œ ๋ณด์•ˆ์„ค์ •์„ ํ†ตํ•ด ์ธ๋ฐ”์šด๋“œ๋ฅผ ์ ์ ˆํžˆ ์—ด์–ด์คฌ๋‹ค๋ฉด, ๋„๋ฉ”์ธ ์—”๋“œํฌ์ธํŠธ๋ฅผ ํ†ตํ•ด์„œ ๋ฐ”๋กœ Elasticsearch API๋“ค์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋กœ ํŠน๋ณ„ํ•œ๊ฒŒ ์žˆ์ง„ ์•Š๋‹ค.
๊ทธ๋ƒฅ Elasticsearch HTTP API๋ฅผ ์ฐŒ๋ฅด๋ฉด

์ผ๋ฐ˜ Elasticsearch์™€ ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.




ํด๋Ÿฌ์Šคํ„ฐ ์ƒ์„ฑ (Opensearch)

opensearch๋กœ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ๋„ elasticsearch์™€ ํฌ๊ฒŒ ๋‹ค๋ฅด์ง„ ์•Š๋‹ค.

์—”์ง„๋งŒ ๋‹ค๋ฅด๊ณ  ํฐ ํ‹€์—์„œ์˜ ์ƒ์„ฑ ์˜ต์…˜์€ ๊ฑฐ์˜ ๋™๋“ฑํ•˜๋‹ค.


๋งŒ๋“ค์–ด์ง€๋ฉด ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฉ”ํŠธ๋ฆญ์ด๋‚˜ ์ด๊ฒƒ์ €๊ฒƒ ๋œจ๊ณ 

๋Œ€์‹œ๋ณด๋“œ๋„ ๋œจ๊ณ 

์—”๋“œํฌ์ธํŠธ๋„ ๋œฌ๋‹ค.

์ด๊ฒƒ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์—”๋“œํฌ์ธํŠธ์— HTTP API๋กœ ์ฐŒ๋ฅด๊ธฐ๋งŒ ํ•˜๋ฉด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

API๋Š” ์ƒ๋‹น์ˆ˜๊ฐ€ elasticsearch์™€ ํ˜ธํ™˜๋œ๋‹ค๋งŒ, ์—ญ์‹œ ๋‹ค๋ฅธ ๋ถ€๋ถ„๋„ ์ข€ ์žˆ๋‹ค.
์ƒ์„ธํ•œ API ๋ช…์„ธ๋Š” ๋ณ„๋„ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜๋ฉด ๋œ๋‹ค.
https://opensearch.org/docs/latest/api-reference/



์ฐธ์กฐ
https://docs.aws.amazon.com/opensearch-service/latest/developerguide/release-notes.html
https://docs.aws.amazon.com/ko_kr/opensearch-service/latest/developerguide/what-is.html
https://www.elastic.co/elasticsearch/opensearch
https://aws.amazon.com/ko/blogs/opensource/introducing-opensearch/
https://bigdataboutique.com/blog/elasticsearch-vs-opensearch-2025-update-5b5c81
https://docs.aws.amazon.com/ko_kr/opensearch-service/latest/developerguide/ac.html#ac-types-ip