-
Notifications
You must be signed in to change notification settings - Fork 2
OpenSearch
JaewonLee edited this page Jul 29, 2024
·
20 revisions
OpenSearch JAVA USER_GUIDE 공식 링크
OpenSearch Docker Image Version 링크
OpenSearch docker-compose 공식 링크
Note
AWS OpenSearch Service를 Docker Image로 통해 local 환경에서 구현
보안 플러그가 비활성화 되어 있습니다. Product 환경에 적용 x
OpenSearch 2.15 이미지를 기본으로 사용하며, Nori 한국어 형태소 분석기 플러그인을 자동으로 설치합니다.
이 가이드는 Docker와 Docker Compose를 사용하여 OpenSearch 로컬 개발 환경을 설정하는 방법을 설명합니다. 이 설정은 OpenSearch와 OpenSearch Dashboards를 포함하며, 다양한 환경 변수와 플러그인 설정이 포함되어 있습니다. 또한 초기화 스크립트를 통해 데이터 인덱싱을 자동화합니다.
-
비용 절감
: 실제 OpenSearch 클라우드 서비스는 높은 비용이 발생합니다. 테스트 및 개발 과정에서는 로컬에서 구현하면 비용을 절감할수 있습니다. -
환경 일관성
: OpenSearch image를 활용하면 다른 개발자와 동일한 환경을 공유하기 좋습니다. -
단일 노드 클러스트 활용
: 간편하게 테스트 환경을 구축할 수 있습니다. -
빠른 피드백, 네트워크 지연 x
: 변경 사항을 즉시 확인할 수 있고, 네트워크 지연 없이 빠르게 작업이 가능합니다.
현재 프로젝트는 다음과 같은 구조로 설계되어 있습니다.
project-root/
├── docker-compose.dev.yml
├── docker/
│ └── Dockerfile-opensearch
└── opensearch-init/
├── init-opensearch.sh
├── setup-opensearch.sh
└── webtoon-mapping.json
-
docker-compose.dev.yml
: -opensearch-node1
서비스는OpenSearch
인스턴스를 설정합니다. 다양한 환경 변수를 통해 메모리 설정, 노드 이름, 클러스터 이름 등을 지정할 수 있습니다.-
opensearch-dashboards
서비스는OpenSearch Dashboards
를 설정합니다. 이는OpenSearch
데이터를 시각화하고 관리하는 데 사용됩니다. -
volumes
와networks
를 사용하여 데이터 지속성과 네트워크 연결을 관리합니다.
-
-
Dockerfile-opensearch
:- OpenSearch 2.15.0 이미지를 기본으로 사용하며, Nori 한국어 형태소 분석기 플러그인을 설치합니다.
- 초기화 스크립트를 컨테이너에 복사하고 실행 권한을 설정합니다.
-
init-opensearch.sh
:-
OpenSearch
가 준비될 때까지 대기한 후, 인덱스가 없으면 새로운 인덱스를 생성하고 매핑 설정을 적용합니다. -
setup-opensearch.sh
스크립트를 실행하여 데이터를 인덱싱합니다.
-
-
setup-opensearch.sh
:- 외부 API에서 웹툰 데이터를 가져와
OpenSearch
에인덱싱
합니다.
- 외부 API에서 웹툰 데이터를 가져와
-
webtoon-mapping.json
:- 인덱스 설정 및 매핑을 정의하여
OpenSearch
가 데이터를 올바르게 분석하고 저장할 수 있도록 합니다.
- 인덱스 설정 및 매핑을 정의하여
docker-compose -f docker-compose.dev.yml up --build
(or)
docker-compose -f docker-compose.dev.yml up -d
- 적절한 JVM 힙 메모리를 조정하여 최적화합니다.
- OPENSEARCH_JAVA_OPTS=-Xms4g -Xmx4g # JVM 힙 메모리를 최대 4GB로 설정
기존 8GB 설정 시
4GB 설정 시
프로젝트의 전체 디렉토리 구조는 다음 링크에서 확인할 수 있습니다: 프로젝트 디렉토리 구조
- 🤝 Collaboration
- 💬 Git Commit Convention
- 🌿 Branching Strategy
- 🔀 Pull Request (PR) Guidelines
- 🐋 Docker
- 🎡 Kubernetes
- 🔎 Metrics
- 💊 USE/RED
- 📝 Metrics Design
- 🔥 Prometheus
- 🦖 Grafana
- ⚒️ 실제 구현