[2SeC] Terraform? OpenSearch?
December 04, 2025
Terraform
- IaC ๋๊ตฌ๋ก, ์ฝ๋๋ฅผ ์ฌ์ฉํด ์ธํ๋ผ๋ฅผ ์ ์ํ๊ณ ํ๋ก๋น์ ๋ํ ์ ์๊ฒ ํ๋ค.
1. ์ฃผ์ ๊ฐ๋
- Provider: Terraform์ด ํด๋ผ์ฐ๋(AWS, Azure ๋ฑ) ๋๋ ์๋น์ค API์ ํต์ ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ํ๋ฌ๊ทธ์ธ. ์๋ฅผ ๋ค์ด AWS ๋ฆฌ์์ค๋ฅผ ๋ง๋ค๋ ค๋ฉด aws Provider๋ฅผ ์ค์ ํด์ผ ํจ.
- Resource: ์ค์ ๋ก ์์ฑํ ์ธํ๋ผ ์ง์ (์: aws_instance, aws_vpc, opensearch_domain ๋ฑ)
- State: Terraform์ด ๊ด๋ฆฌํ๋ ์ค์ ์ธํ๋ผ์ ์ต์ ์ํ๋ฅผ ๊ธฐ๋กํ๋ ํ์ผ (๊ธฐ๋ณธ์ ์ผ๋ก terraform.tfstate)
- Remote State: ํ์ ๊ณผ ์์ ์ ์ธ ๊ด๋ฆฌ๋ฅผ ์ํด S3์ ๊ฐ์ ์ธ๋ถ ์คํ ๋ฆฌ์ง์ ์ํ ํ์ผ์ ์ ์ฅํ๋ ๋ฐฉ์(Backend ์ค์ )์ ์ฌ์ฉํจ. Terraform์ด ์ธํ๋ผ๋ฅผ ์์ฑ/๋ณ๊ฒฝํ ๋ ์ด ์ํ ํ์ผ์ ์ฐธ์กฐํ์ฌ ํ์ฌ ์ฝ๋์ ์ค์ ์ธํ๋ผ์ ์ฐจ์ด์ ํ์ ํจ.
- Module: ๊ณตํต์ผ๋ก ์ฌ์ฉํ๊ฑฐ๋ ์ฌ์ฌ์ฉํ ์ธํ๋ผ ์ฝ๋๋ฅผ ํ ๊ณณ์ ๋ชจ์์ ์ ์ํ ๋จ์. ์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ์ ์งํ๊ณ ํ์คํํ๋๋ฐ ์ ์ฉํจ.
- HCL (HashiCorp Configuration Language): Terraform ๊ตฌ์ฑ์ ์์ฑํ๋ ์ ์ธ์ ์ธ์ด
2. ํต์ฌ ๋ช ๋ น์ด
Terraform์ ์์ ํ๋ฆ์ ์ผ๋ฐ์ ์ผ๋ก init -> plan -> apply ์์์ด๋ค.
(1) terraform init: ์์ ๋๋ ํ ๋ฆฌ ์ด๊ธฐํ - ํ์ํ Provider๋ฅผ ๋ค์ด๋ก๋ํ๊ณ Backend ์ค์ ์ค๋น (2) terraform plan: ์คํ ๊ณํ ํ์ธ - ์์ฑํ ์ฝ๋์ ํ์ฌ State๋ฅผ ๋น๊ตํ์ฌ ์ด๋ค ๋ณ๊ฒฝ ์ฌํญ์ด ์๊ธธ์ง ๋ฏธ๋ฆฌ ์์ธก ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค. ์ค์ ๋ฆฌ์์ค ๋ณ๊ฒฝ์ ์ผ์ด๋์ง ์์. (3) terraform apply: ์ธํ๋ผ ์ ์ฉ - Plan์์ ์์ฑ๋ ์คํ ๊ณํ์ ๋ฐ๋ผ ์ค์ ์ธํ๋ผ๋ฅผ ์์ฑ/๋ณ๊ฒฝํจ (4) terraform destroy: ์ธํ๋ผ ์ญ์ - Terraform์ด ๊ด๋ฆฌํ๋ ๋ชจ๋ ๋ฆฌ์์ค๋ฅผ ์ญ์ ํจ (5) terraform validate: ๋ฌธ๋ฒ ๊ฒ์ฌ - ๊ตฌ์ฑ ํ์ผ์ ๊ตฌ๋ฌธ์ด ์ ํจํ์ง ๊ฒ์ฌ.
OpenSearch
1. ์ฃผ์ ๊ฐ๋
- Cluster: OpenSearch ์ธ์คํด์ค๋ค์ ์งํฉ
-
Node: ํด๋ฌ์คํฐ ๋ด์์ ๊ฒ์, ์ธ๋ฑ์ฑ, ๋ฐ์ดํฐ ์ ์ฅ์ ๋ด๋นํ๋ ์๋ฒ
- Master Node: ํด๋ฌ์คํฐ ๊ด๋ฆฌ(๋ ธ๋ ์ถ๊ฐ/์ ๊ฑฐ, ์ธ๋ฑ์ค ์์ฑ/์ญ์ ๋ฑ) ๋ด๋น
- Data Node: ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ฒ์ ๋ฐ ์ง๊ณ ์์ฒญ์ ์ฒ๋ฆฌํจ
- Index: ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ๊ณผ ์ ์ฌํ๊ฒ, ๊ด๋ จ๋ ๋ฌธ์๋ค์ ๋ชจ์๋ ๋ ผ๋ฆฌ์ ์ธ ์ปจํ ์ด๋. ๋ฐ์ดํฐ๋ฅผ ์ฟผ๋ฆฌํ๋ ๊ธฐ๋ณธ ๋จ์.
- Document: ์ธ๋ฑ์ค์ ์ ์ฅ๋๋ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ๋จ์๋ก JSON ํ์์ผ๋ก ์ ์ฅ๋จ
-
Shard: ์ธ๋ฑ์ค๋ฅผ ์ํ ๋ถํ ํ ๋จ์
- Primary Shard: ๋ฌธ์๊ฐ ์ ์ฅ๋๋ ์๋ณธ ์ค๋
- Replica Shard: ํ๋ผ์ด๋จธ๋ฆฌ ์ค๋์ ๋ณต์ ๋ณธ์ผ๋ก, ๊ฒ์ ์ฒ๋ฆฌ๋์ ๋๋ฆฌ๊ณ ์ฅ์ ๋ฐ์ ์ ๋ฐ์ดํฐ ์์ค์ ๋ฐฉ์งํจ
- OpenSearch Dashboards: OpenSearch์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์๊ฐํํ๊ณ ํ์ํ ์ ์๋ ์น ์ธํฐํ์ด์ค (Kibana)
2. ๊ฒ์ ๋ฐ ๋ถ์ ๊ธฐ๋ฅ
- ํ ํ ์คํธ ๊ฒ์
- ์ญ ์ธ๋ฑ์ค: ๊ฒ์ ์ฑ๋ฅ์ ๋์ด๊ธฐ ์ํด ๋ฌธ์์ ํฌํจ๋ ๋ชจ๋ ๋จ์ด๋ฅผ ์ธ๋ฑ์ฑํ๋ ๊ตฌ์กฐ
- ์ง๊ณ (Aggregation): ๋ฐ์ดํฐ์์ ํต๊ณ ๋ฐ ๋ฉํธ๋ฆญ์ ๊ณ์ฐํ๋ ๊ธฐ๋ฅ
- ๋ฒกํฐ ๊ฒ์ (Vector Search/KNN): ๋ฐ์ดํฐ๋ฅผ ๋ฒกํฐ๋ก ๋ณํํด ์๋ฏธ๋ก ์ ์ ์ฌ์ฑ์ ๊ธฐ๋ฐ์ผ๋ก ๊ฒ์ํ๋ ๊ธฐ๋ฅ (RAG์ ์ฌ์ฉ๋จ)
3. ๋ฐ์ดํฐ ๊ด๋ฆฌ ๋ฐ ์ด์
- ISM (Index State Management): ์ธ๋ฑ์ค์ ์๋ช ์ฃผ๊ธฐ(Hot/Warm/Cold ์คํ ๋ฆฌ์ง๋ก ์ด๋, ์ญ์ ๋ฑ)๋ฅผ ์๋์ผ๋ก ๊ด๋ฆฌํ๋ ๊ธฐ๋ฅ
- Hot/UltraWarm/Cold Storage: ๋ฐ์ดํฐ ์ก์ธ์ค ๋น๋์ ๋ฐ๋ผ ๋ ธ๋ ์ ํ์ ๋ถ๋ฆฌํ์ฌ ๋น์ฉ ํจ์จ์ฑ์ ๋์. (์์ฃผ ์ฌ์ฉ - Hot, ๊ฐ๋ ์ฌ์ฉ - UltraWarm)
- ๋ณด์: OpenSearch๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ธ์ฆ, ๊ถํ ๊ด๋ฆฌ, ์ ์ก ๊ณ์ธต ๋ณด์ (TLS) ๋ฑ์ ์ํ ๊ฐ๋ ฅํ ๋ณด์ ํ๋ฌ๊ทธ์ธ์ ์ ๊ณตํจ.
Terraform์ ํ์ฉํ ์ธํ๋ผ ๊ตฌ์ถ ๋จ๊ณ๋ณ ์ ๋ฆฌ
์ฐ๋ฆฌ ํ์ ์ธํ๋ผ ๊ตฌ์ฑ๋

1. ๋คํธ์ํฌ ๋ฐ ๊ธฐ๋ฐ ํ๊ฒฝ ๊ตฌ์ถ (VPC)
- ๋คํธ์ํฌ (VPC, Subnet) ์์ฑ
- ๋ณด์๊ทธ๋ฃน ์์ฑ: ๋ฐฉํ๋ฒฝ ์ญํ
- EC2 ์์ฑ: Public/Private Subnet ๋ฐ ๋ณด์ ๊ทธ๋ฃน ์ฐ๊ฒฐ
2. ๋ก๊ทธ ์์ง ๋ฐ ์ ์ก ํ์ดํ๋ผ์ธ ๊ตฌ์ถ
- Kinesis Stream ์์ฑ: ๋ฐ์ดํฐ์ ๋ฒํผ๋ง ๋ฐ ๋ด๊ตฌ์ฑ์ ๋ด๋นํ๋ ํต์ฌ ์คํธ๋ฆผ
- ๊ถํ ์ค์ (IAM): CloudWatch Logs๊ฐ Kinesis Stream์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ ์ ์๋๋ก, ๊ทธ๋ฆฌ๊ณ ECS Fargate๊ฐ Kinesis์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์๋๋ก ๊ถํ ์ ์
- CloudWatch Logs: EC2์์ CloudWatch Agent๋ฅผ ํตํด ๋ก๊ทธ๊ฐ ์์ง๋๋ ์ ์ฅ์
- Logs Subscription: CloudWatch Logs ๊ทธ๋ฃน๊ณผ Kinesis Data Stream์ ์ฐ๊ฒฐํ๋ ์ญํ
3. ๋ก๊ทธ ์ฒ๋ฆฌ ๋ฐ ๋ณํ
Kinesis์์ ๋ก๊ทธ๋ฅผ ์ฝ์ด์ ๊ตฌ์กฐํํ๊ณ (grok), ์์น ์ ๋ณด(geoip)๋ฅผ ์ถ๊ฐํ๋ ๋ฑ์ ๊ฐ๊ณต ์์ ์ ์ํํ๊ณ OpenSearch๋ก ์ ์ก
- Logstash ํ๊ฒฝ (ECS Cluster): ์ปจํ ์ด๋(Logstash)๊ฐ ์คํ๋ ํ๊ฒฝ
- Logstash ์ ์ (ECS Task Definition): Logstash ์ปจํ ์ด๋ ์ด๋ฏธ์ง, CPU/๋ฉ๋ชจ๋ฆฌ, ํ๊ฒฝ ๋ณ์, Kinesis์์ ์ฝ๊ณ OpenSearch์ ์ฐ๋ ๊ถํ ๊ฐ์ง IAM ์ญํ ํ์
- Logstash ์คํ (ECS Service): ์ ์๋ Logstash TAsk๋ฅผ Fargate ํ๊ฒฝ์์ ์คํํ๊ณ ๊ด๋ฆฌ. Logstash์ Input/Filter/Output ์ค์ ์ ๋ณดํต ์ปจํ ์ด๋ ์ด๋ฏธ์ง์ ํฌํจํ๊ฑฐ๋ Task Definition์ ํตํด ์ ๋ฌ
4. ๊ฒ์ ์์ง ๋ฐ ์ฅ๊ธฐ ๋ณด๊ด
- OpenSearch Domain(OpenSearch Service): ๊ฒ์ ์์ง ํด๋ฌ์คํฐ ์์ฒด. VPC, Subnet, ๋ณด์ ๊ทธ๋ฃน ์ค์ ๋ฐ ๋ ธ๋ ์ ํ(Hot/Ultra Warm/Cold)๋ฅผ ์ ์
- OpenSearch Index(OpenSearch API): ์ธ๋ฑ์ค ํ ํ๋ฆฟ ๋ฑ์ ์ ์ํ ์ ์์. OpenSearch ๋๋ฉ์ธ์ด ์ค๋น๋๋ฉด Logstash๊ฐ ์๋์ผ๋ก ์ธ๋ฑ์ค๋ฅผ ์์ฑํ๋๋ก ๊ตฌ์ฑํ ์๋ ์์
- ์ธ๋ฑ์ค ๊ด๋ฆฌ: ISM ์ ์
- ์ค๋ ์ท S3: ์ฅ๊ธฐ ๋ณด๊ด ์ํ ๋ฐฑ์ ์ ์ฅ์
- ์ค๋ ์ท ์ ์ฑ (OpenSearch API): OpenSearch๊ฐ S3 ๋ฒํท์ ์ค๋ ์ท ์ ์ฅํ ์ ์๋๋ก ๊ถํ ๋ถ์ฌ + ์ ์ฑ ์ค์