Elasticsearch에서 OpenSearch로의 원활한 전환

Elasticsearch와 OpenSearch는 검색 및 분석 워크로드를 처리하는 강력한 도구로, 확장성, 실시간 기능, 풍부한 플러그인 및 통합 기능을 제공합니다. Elasticsearch는 성숙한 생태계로 인해 각 산업에서 전체 텍스트 검색, 로그 모니터링 및 데이터 시각화에 널리 사용됩니다. Elasticsearch의 커뮤니티 기반 포크인 OpenSearch는 많은 유사한 기능을 제공하는 완전 오픈 소스 대안을 제공하여 오픈 소스 원칙과 비용 효율성을 우선시하는 기관에게 탁월한 선택지가 됩니다.

OpenSearch로의 이전은 Elasticsearch 버전 7.10까지 사용하고 있고 Elasticsearch의 SSPL 라이센스로 인해 도입된 라이센스 제한을 피하고자 하는 경우 고려해야 합니다. 또한 기존 Elasticsearch API 및 도구와의 호환성을 유지하면서 계속해서 오픈 소스 생태계에 대한 액세스를 유지하려는 경우에도 이상적입니다. 커뮤니티 기반 혁신, 투명한 거버넌스 또는 비용 통제에 중점을 둔 기관은 OpenSearch를 매력적인 옵션으로 여길 것입니다.

역사

엘라스틱서치는 초기에 2010년에 Shay Banon에 의해 개발되었으며, 아파치 루씬을 기반으로 한 강력한 오픈 소스 검색 및 분석 엔진으로 부상했습니다. 이는 확장성, 분산 구조, 풀 텍스트 검색, 로그 분석 및 실시간 데이터 처리에 대한 강력한 기능으로 빠르게 인기를 얻었습니다. 몇 년 동안 엘라스틱서치는 엘라스틱 스택(이전에는 ELK 스택)의 일부가 되어, 키바나, 로그스태시 및 비츠와 통합하여 끝에서 끝으로 데이터 관리 솔루션을 제공했습니다.

그러나 2021년에 엘라스틱이 엘라스틱서치와 키바나를 더 제한적인 SSPL 라이선스로 전환하면서 중요한 변화가 일어났습니다. 이에 대응하여 AWS와 오픈 소스 커뮤니티는 엘라스틱서치 7.10과 키바나를 포크하여 아파치 2.0 라이선스를 준수하는 OpenSearch를 만들었습니다. OpenSearch는 이후 커뮤니티 주도의 프로젝트로 발전하여, 검색, 가시화 및 분석 사용 사례에 맞는 기능과 계속되는 개발을 보장하는 진정한 오픈 소스 대안으로 성장했습니다.

OpenSearch로 마이그레이션하는 이유?

1. 오픈 소스 약속

OpenSearch는 아파치 2.0 라이선스를 준수하여 진정한 오픈 소스 접근성을 보장합니다. 반면, 엘라스틱서치의 더 제한적인 SSPL 라이선스로의 전환은 벤더 락인과 커뮤니티 주도 기여의 감소에 대한 우려를 일으켰습니다.

2. 비용 효율성

OpenSearch은 Elasticsearch의 최신 버전과 관련된 잠재적인 라이선스 요금을 제거하여, 능력을 희생하지 않고 비용 효율적인 솔루션을 찾는 조직에 매력적인 선택지가 됩니다.

3. 호환성

OpenSearch는 Elasticsearch 버전 7.10까지의 호환성을 유지하며, 동일한 API 및 도구 중 많은 부분을 포함합니다. 이는 기존 응용 프로그램 및 워크플로에 최소한의 방해로운 변화로 원활한 이전을 보장합니다.

4. 적극적인 개발 및 지원

AWS와 적극적인 커뮤니티의 지원을 받는 OpenSearch는 일관된 업데이트, 기능 향상 및 보안 패치를 받습니다. 오픈 거버넌스 모델은 혁신과 협업을 촉진하여, 플랫폼이 사용자 요구를 충족하도록 진화하는 것을 보장합니다.

5. 사용자 정의 및 유연성

OpenSearch는 소유권 시스템과 비교하여 더 많은 사용자 정의 및 유연성을 제공하여, 라이선스 조건에 의해 제한되지 않고 특정 사용 사례에 맞게 배포를 맞춤화할 수 있습니다.

6. 진화하는 생태계

OpenSearch는 OpenSearch 대시보드(키바나 대안) 및 감시, 로그 분석 및 전체 텍스트 검색용 플러그인을 제공합니다. 이러한 도구들은 다양한 영역에서의 사용성을 확장하면서 사용자 요구와 지속적으로 일치하도록 보장합니다.

이전 시기

  • 라이선스 관련 문제: Elastic이 7.10 버전 이후에 도입한 SSPL 라이선스 제한을 피하려면.
  • 예산 제약: 강력한 검색 및 분석 엔진을 유지하면서 상업적 라이선스에 관련된 비용을 최소화합니다.
  • 미래를 준비: 투명한 개발 로드맵과 강력한 커뮤니티 지원을 갖춘 플랫폼을 채택합니다.
  • 기능 동등: Elasticsearch 7.10 이전에 지원되는 기능을 사용할 때, 이러한 기능은 OpenSearch와 완전히 호환됩니다.
  • 맞춤화 요구 사항: 조직의 목표에 중요한 유연성, 개방형 거버넌스 또는 커뮤니티 주도형 혁신이 필요한 경우.

OpenSearch로 이전함으로써 Elasticsearch의 라이선스 모델에 따른 잠재적인 제약과 비용을 피하면서 견고한 오픈 소스 기반 플랫폼을 유지할 수 있습니다.

마이그레이션 전 체크리스트

Elasticsearch에서 OpenSearch로 마이그레이션하기 전에 이 체크리스트를 따라 원활하고 성공적인 전환을 보장하세요:

1. 버전 호환성 평가

  • 귀하의 Elasticsearch 버전이 OpenSearch와 호환되는지 확인하세요. OpenSearch는 Elasticsearch 버전 7.10까지 지원합니다.
  • OpenSearch에서 지원되는지 확인하기 위해 모든 API 또는 플러그인 종속성을 검토하세요.

2. 독점적인 기능 사용 평가

  • OpenSearch에 해당 기능이 없을 수 있는 독점적인 기능이나 플러그인(예: Elastic의 머신 러닝 기능)을 식별하세요.
  • Elasticsearch 클러스터에서 사용 중인 타사 도구나 확장 기능이 영향을 받을지 여부를 평가하세요.

3. 데이터 백업

  • Elasticsearch 인덱스의 전체 백업을 만들려면 잠재적인 데이터 손실을 피하기 위해 스냅샷 API를 사용하십시오:
    Shell

     

  • 백업이 안전하고 접근 가능한 위치에 저장되어 있어야 합니다.

4. 클러스터 구성 검토

  • 현재 Elasticsearch 클러스터 설정을 문서화하십시오. 노드 구성, 샤드 할당 및 인덱스 템플릿을 포함합니다.
  • 이러한 설정을 OpenSearch와 비교하여 필요한 조정 사항을 식별하십시오.

5. 스테이징 환경에서 테스트

  • 마이그레이션 프로세스를 시뮬레이션하기 위한 스테이징 환경을 설정하십시오.
  • OpenSearch 스테이징 클러스터에 데이터 스냅샷을 복원하여 호환성 및 기능성을 확인하십시오.
  • 문제를 조기에 감지하기 위해 스테이징 환경에서 애플리케이션, 쿼리 및 워크플로를 테스트하십시오.

6. API 및 쿼리 호환성 확인

  • 애플리케이션에서 사용되는 Elasticsearch API 및 쿼리 구문을 검토하십시오. OpenSearch는 대부분의 API 호환성을 유지하지만 약간의 차이가 있을 수 있습니다.
  • 더 부드러운 전환을 위해 OpenSearch의 API 호환성 모드를 사용하십시오.

7. 애플리케이션 및 클라이언트 업데이트

  • OpenSearch 호환 라이브러리로 Elasticsearch 클라이언트 라이브러리를 교체하십시오 (예: Python의 opensearch-py 또는 OpenSearch Java Client).
  • 애플리케이션이 OpenSearch 클러스터와 올바르게 상호 작용하는지 확인하기 위해 클라이언트 통합을 테스트하십시오.

8. 플러그인 지원 확인

  • Elasticsearch에서 사용된 플러그인(예: 분석, 보안 또는 모니터링 플러그인)이 OpenSearch에서 사용 가능하거나 대체품이 있는지 확인하십시오.
  • 클러스터 기능을 향상시킬 수 있는 OpenSearch 특정 플러그인을 식별하십시오.

9. 이해 관계자에게 통보

  • 마이그레이션 계획, 일정 및 예상 다운타임(있는 경우)을 모든 관련 이해 관계자에게 전달하십시오.
  • 애플리케이션, 인프라 및 데이터를 담당하는 팀이 마이그레이션에 대비할 수 있도록 보장하십시오.

10. 롤백 계획 수립

  • 마이그레이션 중 문제가 발생할 경우 롤백 계획을 개발하십시오. 이 계획은 원래의 Elasticsearch 클러스터와 데이터를 백업에서 복원하기 위한 단계를 포함해야 합니다.

11. 자원 모니터링

  • 스냅샷용 디스크 공간 및 복원을 위한 충분한 클러스터 용량을 포함하여 인프라가 마이그레이션 프로세스를 지원할 수 있는지 확인하십시오.

Elasticsearch에서 OpenSearch로의 성공적인 마이그레이션을 보장하려면이 체크리스트를 완료하여 리스크를 최소화하고 잠재적인 문제를 식별하십시오.

단계별 마이그레이션 가이드

1. OpenSearch 설치

  • opensearch.org에서 적절한 버전의 OpenSearch를 다운로드하십시오.
  • 기존의 Elasticsearch 설정과 유사한 클러스터 구성을 보장하도록 공식 문서를 참고하여 OpenSearch 노드를 설정하십시오.

Elasticsearch에서 데이터 내보내기

  • 스냅샷 API을 사용하여 Elasticsearch 인덱스를 백업하세요:

     

  • 스냅샷이 OpenSearch에서 접근할 수 있는 저장소에 저장되도록 확인하십시오.

3. OpenSearch로 데이터 가져오기

  • OpenSearch에서 스냅샷 저장소를 등록합니다:

     

  • OpenSearch로 스냅샷을 복원하십시오:

4. 응용 프로그램 및 클라이언트 업데이트

  • 응용 프로그램의 Elasticsearch 클라이언트 라이브러리를 호환되는 OpenSearch 클라이언트로 업데이트하십시오. 예를 들어 OpenSearch Python 클라이언트(opensearch-py)나 Java 클라이언트 등이 있습니다.
  • 응용 프로그램 구성에서 Elasticsearch 엔드포인트를 OpenSearch 엔드포인트로 교체하십시오.

5. 데이터 및 쿼리 유효성 검사

  • 모든 데이터가 성공적으로 복원되었는지 확인하십시오.
  • 쿼리, 인덱스 작업 및 응용 프로그램 워크플로우를 테스트하여 모든 것이 예상대로 작동하는지 확인하십시오.

6. 모니터링 및 최적화

  • OpenSearch 대시보드(이전에는 Kibana)를 사용하여 클러스터 상태 및 성능을 모니터링하십시오.
  • 필요한 경우 암호화, 인증 및 역할 기반 액세스 제어와 같은 보안 기능을 활성화하십시오.

마이그레이션 이후 고려 사항

1. 플러그인 및 기능

  • Elasticsearch 플러그인에 의존하는 경우, 사용 가능 여부를 확인하거나 OpenSearch 대체품을 찾으십시오.

2. 성능 튜닝

  • 작업 부하 요구 사항과 일치하도록 OpenSearch 클러스터 설정을 최적화하십시오.
  • 비용 효율적인 데이터 보존을 위해 초고온 스토리지와 같은 OpenSearch 특수 기능을 활용하십시오.

3. 커뮤니티 참여

  • 지원 및 업데이트를 위해 OpenSearch 커뮤니티에 가입하십시오.
  • 새로운 기능 및 개선 사항에 대해 알려진 리리스 노트를 모니터링하십시오.

Elasticsearch에서 OpenSearch로의 이주에 대한 도전과 팁들

1. 플러그인 호환성

도전

일부 Elasticsearch 플러그인은 특허 플러그인을 포함하여 OpenSearch에서 직접적인 동등물이 없을 수 있습니다.

  • 현재 Elasticsearch 플러그인을 심사하고 의존성을 식별하십시오.
  • OpenSearch의 플러그인 생태계를 조사하거나 누락된 기능을 대체할 대체 오픈소스 도구를 찾으십시오.
  • OpenSearch 대시보드와 같은 OpenSearch의 내장 기능이 요구 사항을 충족하는지 고려하십시오.

2. API 차이점

도전

OpenSearch는 Elasticsearch API와 호환성을 유지하지만 7.10 버전까지의 마이너 차이나 폐기된 엔드포인트가 기능에 영향을 줄 수 있습니다.

  • OpenSearch의 API 호환 모드를 사용하여 API를 점진적으로 테스트하고 적응시키십시오.
  • API 문서를 검토하고 폐기된 엔드포인트를 권장하는 대안으로 대체하십시오.

3. 데이터 마이그레이션

도전

대용량 데이터 집합의 마이그레이션은 형식이나 스키마의 차이가 있는 경우 시간이 많이 소요되고 오류가 발생할 수 있습니다.

  • 효율적인 데이터 전송을 위해 스냅샷 및 복원 방식을 사용하십시오.
  • 스테이징 환경에서 복원 프로세스를 테스트하여 데이터 무결성을 보장하십시오.
  • 주요 쿼리를 실행하여 데이터 이관 후 일관성을 확인하여 데이터를 유효화하십시오.

4. 성능 튜닝

도전

OpenSearch와 Elasticsearch는 클러스터 구성 및 성능 튜닝에 차이가 있을 수 있으며, 이는 이관 후 성능이 최적이 되지 않을 수 있습니다.

  • OpenSearch 대시보드나 기타 모니터링 도구를 사용하여 클러스터 성능을 모니터링하십시오.
  • 샤드 크기, 인덱싱 전략 및 리소스 할당을 조정하여 클러스터 성능을 최적화하십시오.

5. 클라이언트 및 애플리케이션 통합

도전

Elasticsearch 클라이언트 라이브러리를 사용하는 애플리케이션은 OpenSearch와 호환되도록 업데이트가 필요할 수 있습니다.

  • opensearch-py(파이썬)나 OpenSearch Java Client와 호환되는 버전으로 Elasticsearch 클라이언트를 대체하십시오.
  • 애플리케이션 워크플로 및 쿼리 실행을 테스트하여 원활한 통합을 보장하십시오.

6. OpenSearch의 제한된 기능

도전

특정 소유권 Elasticsearch 기능(예: 머신 러닝 작업, Elastic Security)은 OpenSearch에서 사용할 수 없습니다.

  • OpenSearch에서 누락된 중요한 기능을 식별하고 사용 사례에 대한 중요성을 결정하십시오.
  • 사용할 수없는 기능을 대체하기 위한 타사 또는 오픈 소스 대안 탐색.

7. 교육 및 익숙함

도전

Elasticsearch에 익숙한 팀들은 OpenSearch로 전환할 때 특히 클러스터 관리와 새로운 기능에 대해 학습 곡선에 직면할 수 있습니다.

  • 팀이 OpenSearch의 도구와 워크플로우에 익숙해질 수 있도록 교육 및 문서 제공.
  • 추가 지원을 위해 OpenSearch의 활발한 커뮤니티와 포럼 활용.

8. 실시간 데이터 및 다운타임

도전

실시간 시스템에서 이주 중 최소 다운타임을 보장하는 것은 어려울 수 있습니다.

  • 저 트래픽 기간에 이주 계획 수립.
  • 클러스터간 신속하게 전환하기 위해 블루-그린 배포 전략 사용.
  • 이주 창에서 Logstash 또는 Beats와 같은 도구를 사용하여 OpenSearch로 새 데이터 동기화.

9. 확장성 및 미래 성장

도전

새로운 OpenSearch 클러스터가 미래 성장 및 확장 요구 사항을 처리할 수 있는지 확인.

  • 수평 확장을 지원하는 클러스터 아키텍처를 설계하여 확장성 계획 수립.
  • OpenSearch의 분산 아키텍처를 활용하여 리소스 사용량 최적화.

10. 지원 커뮤니티

Challenge

OpenSearch는 성장하는 커뮤니티를 갖고 있지만, 일부 고급 문제에 대한 상세한 문서나 제3자 솔루션이 부족할 수 있습니다.

Tips

  • 문제 해결을 위해 OpenSearch 커뮤니티와 GitHub를 통해 참여하세요.
  • OpenSearch 업데이트를 정기적으로 모니터링하고 더 나은 통찰을 위해 커뮤니티에 기여하세요.

이러한 도전에 대비하고 이들 팁을 따르면, 조직은 이주 프로세스를 효과적으로 탐색하여 검색 및 분석 성능을 유지하면서 원활한 전환을 보장할 수 있습니다.

결론

Elasticsearch에서 OpenSearch로 이주하는 것은 오픈 소스 원칙을 준수하고 비용을 절감하며 확립된 검색 및 분석 워크플로와의 호환성을 유지하려는 조직에게 전략적인 결정입니다. 이주 과정은 플러그인 호환성, API 차이 및 데이터 이주의 복잡성과 같은 도전을 제시하지만, 신중한 계획, 철저한 테스트, 그리고 활기찬 OpenSearch 커뮤니티를 활용하여 효과적으로 관리할 수 있습니다.

Source:
https://dzone.com/articles/transition-from-elasticsearch-to-opensearch