[AWS] DataBase — Amazon OpenSearch

birdgang
4 min readDec 29, 2023

--

이번에 다룰 내용은 Amazon OpenSearch로 ElasticSearch 서비스의 새로운 이름입니다. 그리고 Kibana의 새 이름은 OpenSearch Dashboards예요.

Amazon OpenSearch 는 관리형 OpenSearch 이자 오픈 소스 프로젝트이며 ElasticSearch 의 파생인데 ElasticSearch 가 라이선스 유형을 변경하자 AWS는 Amazon 에서 프로젝트를 호스팅 할 수 있도록 자체적으로 오픈 소스 프로젝트를 진행해야 했고 새 이름을 얻은 겁니다.

서버에서 실행해야 하므로 서버리스 제품은 아닙니다. 사용 사례는 로그 분석과 실시간 애플리케이션 모니터링 보안 분석, 전체 텍스트 검색 및 클릭 스트림 분석과 인덱싱 등이죠

OpenSearch + OS Dashboards + Logstash

OpenSearch에서 사용 가능한 제품군은 OpenSearch 와 OS Dashboards Logstash가 있습니다.

OpenSearch 는 검색과 인덱싱 기능을 제공하는데 다중 AZ일 경우 등에는 인스턴스 유형을 지정해야 해요. OpenSearch Dashboards 는 과거 Kibana로 불렸으며 OpenSearch 데이터 외에도 실시간 대시보드를 제공합니다. CloudWatch 대시보드 대신 사용해 대시보드 에서 더 고급 수준의 기능을 쓸 수 있습니다.

Logstash 는 로그 수집 메커니즘인데 Logstash Agent 가 필요하고 CloudWatch 로그를 대신해 사용할 수 있으며 보존과 분할 정도를 결정합니다.

OpenSearch patterns DynamoDB

DynamoDB와 OpenSearch를 사용한 아키텍처 예시를 살펴볼게요.

DynamoDB에서 검색하면 DynamoDB의 생성 및 업데이트 제거 사항 전부 다 DynamoDB Stream에 기록되고 Lambda 함수를 생성해 모든 데이터를 Amazon OpenSearch로 보냅니다.

하지만 강의에서 앞서 확인 했다시피 흐름은 바뀔 수 있어요. DynamoDB 테이블에서 Kinesis Data Stream 으로 그리고 Kinesis Data Firehose 에서 Amazon OpenSearch 로요. 이제 DynamoDB 내에서 Kinesis Data Streams로 데이터를 전송할 수 있으니까요.

Amazon OpenSearch에 데이터를 넣으면 자체 API를 만들 수 있어요. 예를 들어 항목 검색용 자체 애플리케이션이 있겠죠. 이는 로드 밸런서에 연결된 EC2 인스턴스 에서 호스팅 됩니다. 그리고 항목이 검색되면 DynamoDB 테이블에서 항목을 직접 검색할 수 있습니다. DynamoDB 테이블은 간단한 역할에서 작업까지 유용하고 OpenSearch는 검색이 되니까 두 가지를 함께 쓰면 항목 검색용 API 를 생성하고 DynamoDB 테이블에서 검색할 수 있는 겁니다.

OpenSearch patterns CloudWatch Logs

CloudWatch 로그를 쓰는 패턴도 있어요. CloudWatch 에서 구독 필터로 로그를 전송하고 AWS 에서 관리하는 Lambda 함수로 보내면 Amazon OpenSearch에 실시간으로 데이터를 보냅니다.

또 다른 방법은 CloudWatch 로그에서 구독 필터로 전송한 후 Kinesis Data Firehose에서 Amazon OpenSearch에 거의 실시간으로 보내는 겁니다. Kinesis Data Firehose에 배치 기능이 있으니까요

--

--