시스템 요구사항 및 사전 점검
OpenMetadata를 안정적으로 운영하기 위해서는 배포 전 하드웨어 및 소프트웨어 환경이 적절히 구성되었는지 확인해야 합니다. 최소 권장 사양과 필수 도구는 다음과 같습니다.
- 엔진 버전: Docker Engine 20.10 이상, Docker Compose 2.0 이상
- 최소 리소스: 2 vCPU, 4GB RAM (개발 환경 기준)
- 권장 리소스: 4 vCPU, 8GB RAM 이상 (운영 환경 기준)
- 네트워크 포트: 8585(UI), 8080(API), 9200(검색 엔진)
환경 설정의 적합성을 판단하기 위해 다음 검증 스크립트를 실행할 수 있습니다.
# 환경 구성 유효성 검사
sh scripts/check_prerequisites.sh
Docker Compose 기반 배포 전략
OpenMetadata는 데이터 저장소 선택에 따라 다양한 배포 구성을 지원합니다. 주요 설정 파일은 프로젝트의 docker 디렉토리 내에 위치합니다.
- 표준 스택:
docker/development/docker-compose.yml(기본 MySQL 사용) - PostgreSQL 스택:
docker/development/docker-compose-postgres.yml
운영 환경의 특성에 따라 실행 스크립트의 옵션을 조정하여 배포할 수 있습니다.
# PostgreSQL 환경에서 백엔드만 실행 (UI 제외)
bash docker/run_local_docker.sh -d postgresql -m no-ui
# 도움말 확인을 통한 옵션 탐색
bash docker/run_local_docker.sh -h
리소스 제한 및 환경 설정 최적화
컨테이너의 안정성을 확보하기 위해 CPU와 메모리 제한(Limits)을 명확히 설정하는 것이 중요합니다. 다음은 개발 환경을 위한 서비스 정의 예시입니다.
# openmetadata-server 설정 예시
services:
om-app-server:
image: openmetadata/server:latest
environment:
- SERVER_THREAD_MAX=200
- SERVER_THREAD_MIN=120
deploy:
resources:
limits:
cpus: '2.0'
memory: 4096M
reservations:
cpus: '1.0'
memory: 2048M
운영 환경으로 확장할 경우, 각 컴포넌트별 권장 설정 값은 다음과 같습니다.
| 컴포넌트 | CPU 제한 | 메모리 제한 | 주요 튜닝 파라미터 |
|---|---|---|---|
| API Server | 4 Core | 8GB | SERVER_MAX_THREADS=400 |
| Search Engine | 2 Core | 4GB | ES_JAVA_OPTS="-Xms2g -Xmx2g" |
| Database | 2 Core | 4GB | max_connections=150 |
성능 극대화를 위한 세부 튜닝
1. 데이터베이스 커넥션 풀링
API 서버와 데이터베이스 간의 통신 효율을 높이기 위해 커넥션 풀 설정을 openmetadata.yaml 파일에서 조정합니다.
database:
driverClass: org.postgresql.Driver
maxSize: 64 # 최대 연결 개수 확장
minSize: 16 # 유휴 상태 유지 연결
checkConnectionOnBorrow: true
idleWaitTime: 10 minutes # 유휴 연결 유지 시간
2. 검색 엔진(Elasticsearch) 최적화
메타데이터 검색 성능은 검색 엔진의 힙 메모리와 버퍼 설정에 의존합니다. Docker 구성 파일에서 다음 환경 변수를 적용합니다.
# Elasticsearch 성능 튜닝
elasticsearch:
environment:
- "indices.memory.index_buffer_size=25%"
- "thread_pool.search.queue_size=2000"
- "ES_JAVA_OPTS=-Xms2g -Xmx2g"
3. Java 가상 스레드 활용 (JDK 19 이상)
최신 OpenMetadata 버전은 가상 스레드를 지원하여 동시 요청 처리량을 획기적으로 개선할 수 있습니다.
# openmetadata.yaml 설정
server:
enableVirtualThreads: true
maxThreads: 1000
applicationContextPath: /api
장애 조치 및 모니터링
메모리 부족(OOM) 문제 해결
컨테이너가 예기치 않게 종료되는 경우 로그를 통해 메모리 할당 상태를 확인해야 합니다.
# 컨테이너 로그에서 OOM 확인
docker logs openmetadata_server | grep -i "Memory"
메모리 부족 시 docker-compose.yml의 memory 제한 수치를 상향 조정하고 컨테이너를 재시작합니다.
데이터 동기화 지연 처리
메타데이터 수집 속도가 느린 경우 Airflow 워커의 병렬 처리 능력을 높여야 합니다.
# airflow-worker 환경 변수 수정
environment:
- AIRFLOW__CORE__PARALLELISM=12
- AIRFLOW__CORE__MAX_ACTIVE_RUNS_PER_DAG=6
성공적인 배포를 위해서는 정기적으로 로그 로테이션 설정을 확인하고, Prometheus와 같은 모니터링 도구를 연동하여 시스템 자원 사용률을 추적하는 것을 권장합니다.