본문으로 건너뛰기

OpenSearch

1 Amazon OpenSearch Service

  • Amazon OpenSearch는 Amazon ElasticSearch의 후속 서비스입니다.
  • DynamoDB에서는 기본 키 또는 인덱스로만 쿼리가 가능합니다.
  • OpenSearch를 사용하면 모든 필드를 검색할 수 있으며 부분 일치도 가능합니다.
  • OpenSearch는 다른 데이터베이스를 보완하여 사용하는 경우가 많습니다.
  • 두 가지 모드가 있습니다: 관리형 클러스터와 서버리스 클러스터.
  • SQL을 기본적으로 지원하지 않으나, 플러그인을 통해 활성화할 수 있습니다.
  • Kinesis Data Firehose, AWS IoT, CloudWatch Logs로부터 데이터를 수집할 수 있습니다.
  • Cognito 및 IAM, KMS 암호화, TLS를 통한 보안을 제공합니다.
  • OpenSearch Dashboards를 통해 시각화를 지원합니다.

2 주요 기능

2.1 다양한 필드 검색 기능

  • OpenSearch를 사용하면 모든 필드를 검색할 수 있습니다.
  • 부분 일치 검색도 가능합니다.
  • 이를 통해 데이터 검색의 유연성이 높아집니다.

2.2 보완 데이터베이스로의 사용

  • OpenSearch는 다른 데이터베이스를 보완하여 사용할 수 있습니다.
  • DynamoDB와 같은 NoSQL 데이터베이스의 제한을 극복할 수 있습니다.

2.3 관리형 클러스터와 서버리스 클러스터

  • OpenSearch는 두 가지 모드를 제공합니다.
  • 관리형 클러스터 모드에서는 사용자가 클러스터를 직접 관리합니다.
  • 서버리스 클러스터 모드는 AWS에서 자동으로 클러스터를 관리합니다.

2.4 SQL 지원

  • OpenSearch는 기본적으로 SQL을 지원하지 않습니다.
  • 플러그인을 통해 SQL 쿼리를 사용할 수 있습니다.

2.5 데이터 수집

  • OpenSearch는 다양한 데이터 소스에서 데이터를 수집할 수 있습니다.
  • Kinesis Data Firehose, AWS IoT, CloudWatch Logs를 통한 데이터 수집이 가능합니다.

2.6 보안 기능

  • OpenSearch는 강력한 보안 기능을 제공합니다.
  • Cognito 및 IAM을 통한 인증 및 권한 관리를 지원합니다.
  • KMS 암호화와 TLS를 통해 데이터 보안을 강화합니다.

2.7 OpenSearch Dashboards

  • OpenSearch Dashboards를 통해 데이터를 시각화할 수 있습니다.
  • 다양한 데이터 시각화 도구를 제공합니다.

3 OpenSearch와 DynamoDB 연동 패턴

![[Pasted image 20240702171429.png]]

  • 이 패턴은 DynamoDB와 OpenSearch를 함께 사용하는 방식입니다.
  • CRUD 작업은 DynamoDB 테이블에서 수행됩니다.

3.1 DynamoDB Stream

  • DynamoDB Stream은 테이블의 변경 사항을 캡처합니다.
  • 변경 사항이 발생하면 이를 Lambda 함수로 전달합니다.

3.2 Lambda Function

  • Lambda 함수는 DynamoDB Stream에서 전달된 데이터를 처리합니다.
  • 처리된 데이터를 Amazon OpenSearch로 전송합니다.

3.3 Amazon OpenSearch

  • Amazon OpenSearch는 Lambda 함수로부터 받은 데이터를 인덱싱합니다.
  • 이렇게 인덱싱된 데이터는 다양한 검색 쿼리에 사용될 수 있습니다.

3.4 API 연동

  • API를 통해 DynamoDB에서 항목을 검색할 수 있습니다.
  • OpenSearch를 통해 인덱싱된 항목을 검색할 수 있습니다.
  • 두 가지 API를 사용하여 데이터의 검색 및 관리를 유연하게 할 수 있습니다.

4 OpenSearch와 CloudWatch Logs 연동 패턴

![[Pasted image 20240702171637.png]]

  • 이 패턴은 CloudWatch Logs와 OpenSearch를 함께 사용하는 방식입니다.
  • CloudWatch Logs에서 생성된 로그 데이터를 OpenSearch로 전송합니다.

4.1 실시간 로그 데이터 처리

  • CloudWatch Logs는 로그 데이터를 Subscription Filter를 통해 필터링합니다.
  • 필터링된 로그 데이터는 Lambda 함수로 전송됩니다.
  • Lambda 함수는 실시간으로 로그 데이터를 처리하여 OpenSearch로 전송합니다.

4.2 근실시간 로그 데이터 처리

  • CloudWatch Logs는 로그 데이터를 Subscription Filter를 통해 필터링합니다.
  • 필터링된 로그 데이터는 Kinesis Data Firehose로 전송됩니다.
  • Kinesis Data Firehose는 근실시간으로 로그 데이터를 OpenSearch로 전송합니다.

4.3 Amazon OpenSearch

  • Amazon OpenSearch는 Lambda 함수 및 Kinesis Data Firehose로부터 받은 로그 데이터를 인덱싱합니다.
  • 인덱싱된 로그 데이터는 다양한 검색 및 분석 쿼리에 사용될 수 있습니다.

참고 자료