imok
article thumbnail
728x90

AWS에서 진행하는 Amazon OpenSearch BootCamp for Partners 세션에 참여하면서 공부한 내용들을 정리하려 합니다.

 

고객이 직면한 과제


데이터의 폭발적 증가

아래와 같은 다양한 소스에서 굉장히 많은 데이터들이 쏟아져나오고 있습니다. 이런 데이터들이 TB 이상으로 데이터 양이 증가하게 된다면, 사람이 봤을 때 가시적이지 않고, 내가 원하는 정보도 쉽게 찾기 어려워집니다.

 

애플리케이션과 인프라스트럭처 IT와 데브옵스(DevOps) IoT와 무선 연결
서비스/마이크로 서비스
웹 애플리케이션
비즈니스 애플리케이션
API
데이터베이스
로드 밸런서
네트워킹
서버
오토모티브
홈 디바이스
제조업
모바일 애플리케이션

 

데이터에서 얻으려는 것

보통 데이터에서 얻고자하는 것들은 아래와 같이 3가지 측면으로 나눠볼 수 있습니다.

 

1. 애플리케이션

  • 인프라스트럭처가 잘 동작하고 있는지
  • 지연 시간과 에러율은 얼마나 되는지
  • 어떤 부분이 애플리케이션에 문제를 유발하는지

2. 보안

  • 로그의 인증 활동에서 수상한 점은 없는지
  • 특정 IP에서 어떤 데이터를 접근했는지
  • 범죄에 관련된 부분은 없는지

3. 비지니스 인사이트

  • 고객은 어떤 컨텐츠/상품에 관심이 있는지
  • 어떤 기능이 가장 많이/적게 사용되는지
  • 어떤 고객이 가장 활발하게 활동하는지, 이유는 무엇인지

 

대규모 실시간 검색 니즈의 발생

고객들은 가능한 빨리 정확한 상품, 서비스, 문서나 그들의 문제에 대한 해답을 얻고자 합니다.

검색 결과가 정확하기도 해야하고, 실시간으로 이뤄져야 합니다. 하지만 비용 효율적이고 안전하게, 규모를 갖춘 시스템을 구축하고 유지하는 것은 어렵습니다.

 

 

대규모 실시간 검색이 필요한 영역

 

전자 상거래 플랫폼 문서 포털 운영 개인화 추천 제공 사용하기 쉽고 빠른 검색 경험
원하는 제품을 빠르게 찾기 투자 분석, 건강 기록 검색 등 사용자에서 빠른 검색 환경 제공 음악 재생목록, 요리 레시피 등  

Amazon OpenSearch Service란?


대화형 로그 분석, 실시간 애플리케이션 모니터링, 웹 사이트 검색 등을 쉽게 수행할 수 있습니다.

Amazon OpenSearch 는 오픈소스이며, Elasticsearch 7.10.2 버전에서 파생된 분산 검색 및 분석 서비스 입니다.

현재 최신 버전의 OpenSearch와 19가지 버전의 Elasticsearch(1.5 ~ 7.10 버전)에 대한 지원을하고, OpenSearch Dashboards 및 kibana 기반 시각화 기능(1.5 ~ 7.10 버전)을 제공합니다.

 

OpenSearch 프로젝트는 Apache LuceneOpenSearch로 구동되는 분산 검색 엔진, 그리고 데이터 시작화 및 사용자 인터페이스인 OpenSearch Dashboards로 구성됩니다.

 

 

강력한 분석 엔진

텍스트 검색 데이터 스트리밍 분석
자연어, Boolean queries,Relevance(유사도) 대용량 수집, 준 실시간 분산 스토리지 시간 기반 시각화, 시계열 도구(log)

 

 

작동 방식

1. 서버, 애플리케이션, 네트워크, 기타 log들을 REST API를 통해 json 형식으로 데이터를 전송합니다.

2. 중첩된 json을 포함해 모든 필드를 검색할 수 있도록 데이터를 색인합니다.

3. 분석가, 보안 담당자, 애플리케이션 유저가 원하는 조건을 입력해서 get 명령어로 데이터를 확인할 수 있습니다.

 

 

왜빠른가? Inverted index(역 인덱스)

Document의 문장들이 Analyzer를 통과하면서 토큰화 되어 필요한 단어들만 가지고 일종의 단어장 생성이 생성됩니다.

마치 책 뒷 부분에 있는 색인과 비슷하다고 생각하시면 됩니다. 따라서 원하는 단어를 빠르게 찾을 수 있습니다.

 

 

Document

{
    "name": "John Smith",
    "age": 42,
    "confirmed": true,
    "join_date": "2014-06-01",
    "home": { "lat": 51.5, "lon": 0.1 },
    "accounts": [
        { "type": "facebook", "id": "johnsmith" },
        { "type": "twitter", "id": "johnsmith" }
    ]
}

OpenSearch에서는 사용자가 입력하는 데이터의 최소 단위document라고 부릅니다.

document는 key : value 로 되어있는 json형태이고, 관계형 데이터베이스로 비교를 해보면 특정 테이블 안의 개별 레코드와 유사하다고 생각하면 됩니다. 데이터베이스의 컬럼처럼 Field라는 의미의 단위가 있고, 이 Field는 여러 타입을 가질 수 있습니다.

 

 

Index

위의 document가 하나하나 합쳐진 논리적인 집합을 OpenSearch에서는 index라고 부릅니다.

개발자는 가장 먼저 index를 생성하고, 이 index에 개별 document를 집어 넣는 형태로 사용하게 됩니다.

개별 document는 unique한 id 값을 가지고 있고, 이 id로 데이터를 찾거나 여러곳에 데이터를 물리적으로 분산시키는 용도로 사용합니다.

 

 

OpenSearch 구조

OpenSearch에서 하나의 index는 여러개의 shard를 물리적으로 가지고 있습니다. 

개발자가 index로 document를 집어 넣으면 아래 그림에 있는 여러 shard 중 한 곳에 들어가게 됩니다. 그리고 이 shard는 물리적으로 여러 node에 분산됩니다.

index에서 검색해야하는 소스의 양이 많아질 경우 머신 하나에서 처리하는 것은 어렵습니다. 따라서 shard를 물리적으로 나누면 검색을 병렬적으로 할 수 있게됩니다. OpenSearch를 분산형 검색 엔진이라고 부르는 이유가 이 때문입니다.

Lucene은 검색 엔진의 원조 라이브러리이고, 이 Lucene을 가지고 만든 여러가지 검색 엔진이 있는데, 그 중 하나가 OpenSearch입니다. 

Lucene에서는 segment 단위로 데이터를 관리하고, 우리가 입력한 개별 document는 실제도 이곳에 존재합니다.

트러블슈팅 과정과 최적화 과정에서 여러가지 문제를 직면했을 때, 이 Lucene 구조를 참고해야하는 경우가 많이 있습니다.

 

 

OpenSearch Dashboard

OpenSearch Dashboard는 OpenSearch 데이터를 시각화하고 OpenSearch 클러스터를 실행 및 확장할 수 있는 사용자 인터페이스입니다.


The navigation panel (A) on the left contains the OpenSearch Dashboards applications.
The search bar (B) lets you search for documents and other objects and add filters.
The filter (C) lets you narrow a dashboard’s results.
The toolbar (D) contains frequently used commands and shortcuts.
The time filter (E) lets you customize the time and date.
The panel (F) allows you to add existing visualizations to the dashboard or create new ones for the dashboard.

왜 Amazon OpenSearch Service인가?


직접 관리형 오픈소스 솔루션에서 Amazon OpenSearch로 이전

1. 관리와 확장에는 해당 분야의 전문 지식이 필요하므로 총 소유 비용(TCO)이 증가합니다.

  • 트러블슈팅이 쉽지 않고, 쿼리가 바뀔 경우 옵티마이저 해야하는 경우도 많습니다.

2. 고객이 직접 고급 보안, 경고 등 여러 기능을 구축하거나 비용을 지불해야 합니다.

  • 엔터프라이즈 급에서 필요한 보안, 경고, SQL Plugin 등은 라이센스 버전을 구매해야합니다.

3. 고객이 자체 인프라를 구매하고 관리해야 해야합니다.

 

 

직접 관리형 vs. Amazon OpenSearch

Amazon OpenSearch Service는 앱 개발과 최적화 외에 고객이 고민해야할 부분을 모두 관리해줍니다.

또한 SQL 쿼리, 실시간 경보, 인덱스 상태 관리, 이상감지, 머신러닝 와 같은 플러그인들을 모두 무료로 사용할 수 있습니다.

 

라이선스 솔루션에서 Amazon OpenSearch로 이전

1. 다양하고 많은 패키지 솔루션은 데이터 볼륨이 증가함에 따라 과도한 비용을 초래할 수 있습니다.

2. 데이터베이스 솔루션 및 일부 패키지 솔루션은 낮은 용량 제한과 높은 지연시간 문제가 있습니다.

3. Amazon OpenSearch Service는 애플리케이션 데이터 뿐만 아니라 로깅 데이터 검색을 지원하는 매우 유연한 도구입니다. 그래서 많은 고객은 이슈 디버깅과 해결을 위해 Amazon OpenSearch Service를 사용합니다.

 

 

OpenSearch의 장점

1. 커뮤니티가 주도하는 오픈 소스 소프트웨어의 선도적 기여자 (Leading contributor)와 함께 OpenSearch를 운영할 수 있습니다.

2. 비정형과 반정형 데이터를 빠르게 검색하고 분석하여 필요한 것을 쉽게 찾을 수 있습니다.

3. 머신러닝을 사용하여 실시간으로 이상징후를 감지하고 클러스터를 자동 조정하며 검색결과를 개인화 할 수 있습니다.

4. 자동화된 프로비저닝, 소프트웨어 설치, 패치 적용, 스토리지 계층화 등으로 운영 오버헤드를 제거하고 비용을 절감할 수 있습니다

 

 

 

Amazon OpenSearch Service의 운영 모범 사례


Amazon OpenSearch Service의 운영 모범 사례

 


Quiz


1. Amazon OpenSearch Service로 할 수 있는 작업 3 가지는 ?

2. 완전관리형인 Amazon OpenSearch Service의 이점이 아닌것은?

  1. 엔터프라이즈 급에 필요한 플러그인이 무료
  2. AZ간 데이터 전송비용 무료
  3. 모니터링, 교체, 업그레이드, 패치 등 운영 효율성이 증가
  4. 앱 최적화가 쉬움

3. 가장 저렴한 비용으로 오래된 데이터를 검색할 수 있는 방식은?

  1. Cold storage
  2. UltraWarm
  3. Hot
  4. 모두

4. 고객에게 비용 최적화를 위한 제안으로 올바른 것은? (맞는 것을 모두 고르시오)

  1. 최신타입의 인스턴스 사용
  2. GP3 볼륨타입 선택
  3. 성능테스트와 최적화 이후 RI 구매 고려
  4. 최신버전의 OpenSearch 로 마이그레이션

5. 운영환경에서 고려해야 될 사항으로 적절하지 않은 것은?

  1. 늘어나는 데이터 사이즈를 잘 고려하여 스토리지 티어를 적절히 사용한다
  2. 운영의 효율성을 위해 Master 노드는 Data 노드와 함께 동작하도록 설정한다.
  3. OpenSearch의 로그 분석을 하기 위해 cloud watch등을 활용한다
  4. 고가용성과 성능 최적화를 위해 샤드 구성을 적절하게 테스트 하고 정의한다.
728x90
profile

imok

@imok2

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!