개발자 / 애플리케이션 / 클라우드

마이크로서비스를 위한 데이터베이스 선택 방법

Jeff Carpenter | InfoWorld 2017.11.13


- 키-값 : 카산드라의 아파치나 데이터스택스 배포판에서는 명시적인 키-값 API를 제공하지 않지만 서비스 B와 같은 서비스는 테이블 설계에서 키와 값 열만 지원하도록 강제함으로써 카산드라를 키-값 저장소로 이용할 수 있다. 예를 들면 다음과 같다.

CREATE TABLE hotel.hotels (
key uuid PRIMARY KEY,
value text); // or if you prefer, “blob”


- 문서 : 카산드라는 JSON 문서 측면에서 문서 스타일 상호 작용을 지원한다. 서비스 C와 같은 서비스에서 이를 사용할 수 있다. 카산드라는 테이블을 위한 스키마를 요구하므로 일반적으로 문서 데이터베이스의 특징인 새 컬럼을 즉석에서 정의하는 임의 JSON을 삽입할 수 없다.

- 그래프 : 서비스 D와 같이 고도로 상호 연결된 데이터를 지원하는 서비스에 적합한 DSE 그래프는 DSE 코어를 기반으로 구축된 확장 가능한 그래프 데이터베이스다. DSE 그래프는 아파치 팅커팝(TinkerPop) 프로젝트의 강력한 그렘린(Gremlin) API를 지원한다.

다중 모델 데이터베이스의 장점과 한계
다중 모델 데이터베이스에 투자할지(또는 이미 구축한 데이터베이스 다중 모델 기능을 사용할지) 여부를 고려한다면 위에 논의한 다언어코드 지속성 접근 방법과 관련된 개발 및 운영 비용을 감안해야 한다.

다중 모델 데이터베이스를 사용하면 운영의 간편함 측면에서 도움이 될 수 있다. 다양한 개발 팀이 서로 다른 API를 사용하고 서로 다른 백 엔드 데이터베이스 플랫폼과의 상호작용 모드를 사용해야 하지만 관리해야 할 플랫폼이 하나라는 측면에서 효율성을 얻게 된다.

다중 모델 데이터베이스를 선택할 때 고려해야 할 한 가지는 다양한 모델을 지원할 방법이다. 일반적인 접근 방법은 하나의 기반 네이티브 모델을 바탕으로 한 데이터베이스 엔진을 두고 그 위에 다른 모델 층을 두는 형태로 구성된다. 계층화된 데이터 모델에는 기반이 되는 주 모델의 특징이 나타나는 경향이 있다.

예를 들어 쏘우트웍스 테크놀로지 레이더 16호(ThoughtWorks Technology Radar Vol. 16)에서는 DSE 그래프가 카산드라 위에 계층화된 그래프 모델로서 나타내는 특징 및 이와 관련된 타협에 대해 다음과 같이 설명했다.

“카산드라를 기반으로 하는 DSE 그래프는 오랜 강자 Neo4j가 한계를 보이고 있는 부분인 대용량 데이터 집합에서 유용하다. 이 스케일에 따라 타협해야 하는 점도 있다. 예를 들어 런타임 스키마로부터 자유로운 Neo4j의 특징과 ACID 트랜잭션을 잃게 된다. 그러나 기반 카산드라 테이블, 분석 워크로드를 위한 스파크 통합, 강력한 팅커팝/그렘린 쿼리 언어를 감안하면 충분히 고려할 만한 옵션이다.”

웹스케일 애플리케이션에서 다양한 데이터 유형을 고려하다 보면 데이터 유형마다 일관성 요건이 다르며, 실제로 즉각적인 일관성을 요구하는 데이터 유형의 수는 비교적 적다는 사실을 발견하게 된다.

위 인용문을 보면 다중 모델에서는 다양한 모델 및 엔진 간의 통합과 상호작용, 그리고 데이터 접근을 위한 다양한 운영 및 분석 사용 사례가 중요한 고려 사항임을 알 수 있다. DSE는 분석 용도로 스파크를 통해 그래프 데이터에 접근하는 기능(DSE 애널리틱스(DSE Analytics))을 지원하며 DSE 서치(DSE Search)는 카산드라에 저장된 데이터에 대한 다양한 검색 인덱스 생성 기능을 제공한다.

4단계로 보는 마이크로서비스 데이터 모델
지금까지 다언어코드 및 다중 모델 접근 방법의 이점에 대해 살펴봤는데, 그렇다면 대규모 마이크로서비스 애플리케이션에 사용할 데이터 모델을 결정할 때는 어떻게 해야 할까? 다음 단계에 따르면 된다.

1. 애플리케이션의 주 데이터 유형을 파악하고 각각에 대한 서비스를 만들어 각 서비스에 서비스 자체의 지속성에 대한 통제력을 부여한다. 가능한 경우 모든 서비스에 다중 모델 데이터베이스를 활용하여 서비스에서 데이터와 상호작용할 때 다양한 모델을 선택할 수 있도록 한다.

2. 웹 수준 확장성과 가용성을 위해 테이블 형식 표현(DSE 코어)을 주 모델로 사용하고 키-값과 문서 구문을 필요에 따라 그 위에 계층으로 구성한다. 운영 및 분석 사용 사례에서 데이터에 접근하는 다양한 방법을 고려하여 분석 데이터 센터로의 복제 및 검색 인덱스와 같은 기능을 어떻게 사용할지 미리 계획한다.

3. 고도의 관계형 데이터, 특히 엔터티 간 관계의 특성 수가 엔터티 자체와 동일하거나 더 많은 경우, 또는 동일한 엔터티 간 여러 관계를 캡처해야 하는 경우 그래프 표현(DSE 그래프)을 사용한다

4. 변경할 필요가 없다면 관계형/SQL 기술에 대한 기존 투자를 보존한다. 예를 들어 사용 사례에서 큰 규모, 낮은 지연 및 고가용성이 필요 없는 경우가 해당된다.

애플리케이션에서 어떤 방법으로, 어느 부분에서 복수 모델을 지원할지, 그리고 언제 다중 모델 데이터베이스 사용을 고려해야 할지에 대해 생각할 때 이 글이 유용한 틀이 되기를 바란다.

*Jeff Carpenter는 데이터스택스(DataStax)의 기술 에반젤리스트로, 시스템 아키텍처, 마이크로서비스, 아파치 카산드라에서 쌓은 지식을 이용해 개발자와 운영 엔지니어가 분산 시스템을 구축하는 일을 돕고 있다. Cassandra: The Definitive Guide, 2nd Edition의 저자이다.   editor@itworld.co.kr

회사명 : 한국IDG | 제호: ITWorld | 주소 : 서울시 중구 세종대로 23, 4층 우)04512
| 등록번호 : 서울 아00743 등록발행일자 : 2009년 01월 19일

발행인 : 박형미 | 편집인 : 박재곤 | 청소년보호책임자 : 한정규
| 사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.