콘텐츠로 이동하기
데이터베이스

NoSQL이 필요한 경우: 대규모 맞춤설정을 지원하는 Bigtable

2021년 7월 26일
Amit Patel

Director of Product Management, Databases

Google Cloud 사용해 보기

$300의 무료 크레딧과 20개 이상의 항상 무료인 제품으로 Google Cloud 사용을 시작해보세요.

무료 체험

 * 본 아티클의 원문은 2021년 4월 24일 Google Cloud 블로그(영문)에 게재되었습니다.  

고객 니즈의 변화에 따라 고객의 기대치도 계속 바뀌어 왔습니다. 업종을 불문하고 고객은 기업이 자신을 한 개인으로 대하고 고유한 니즈를 정확하게 이해하여 그에 부응하는 서비스를 제공해 주기를 기대합니다. 맞춤설정이라고 하는 이 개념은 각 고객의 니즈와 선호도에 따라 맞춤 경험을 제공하며 고객의 경험을 향상시키는 개별적인 상호작용을 구현할 수 있는 프로세스를 마련하는 것입니다. Salesforce에 따르면 고객의 84%는 고객을 번호가 아닌 한 명의 사람으로 대하는 것이 비즈니스 성공에 매우 중요하다고 말합니다. 

모든 업종에서 맞춤설정 경험을 통해 고객에게 더 나은 서비스를 제공하기 위한 디지털 혁신이 진행되고 있습니다. 예를 들어 소매업체는 맞춤설정 콘텐츠, 혜택, 제품 추천으로 고객 참여와 전환을 높이고 있습니다. 광고 기술 조직은 구체적인 관심분야, 구매 의도, 구매 행동과 같은 고객 통계를 사용하여 광고의 관련성과 효과를 개선하고 있습니다. 디지털 음악 서비스는 고객의 음악 감상 행동과 관심분야를 바탕으로 고객이 새로운 음악, 재생목록, 팟캐스트를 탐색하고 즐길 수 있도록 돕습니다. 

고객이 원하는 맞춤설정 수준이 높아지는 가운데 더 많은 기업이 최신 기술을 이용하여 고객 기대에 부응하는 맞춤설정을 구현하고 있습니다. 이 게시물에서는 맞춤설정 기능을 구현할 때의 몇 가지 일반적인 과제와 Google Cloud Bigtable 같은 혁신적인 데이터베이스 기술로 문제를 해결하는 방법을 알아봅니다. Bigtable은 10억 명이 넘는 사용자를 지원하는 Google 지도를 비롯한 주요 Google 서비스의 기반입니다.  페타바이트급 확장, 고가용성, 높은 처리량, 우수한 가격 대비 성능과 같은 Bigtable의 이점은 대규모 맞춤설정을 실현하는 데 도움이 됩니다.  

맞춤설정을 위해 해결해야 할 과제 

맞춤설정의 중심에는 데이터가 있습니다. 대규모 맞춤설정을 구현하기 위해서는 각 고객의 행동, 니즈, 선호도에 대한 이해를 높일 수 있도록 애플리케이션에서 고객별 데이터와 익명 처리된 전체 고객 집계 데이터를 조합한 방대한 양의 데이터를 저장, 관리, 액세스해야 합니다. 모든 활성 사용자와 관련된 대량의 데이터가 동시에 매우 빠른 속도로 데이터베이스에 기록되어야 합니다. 장바구니에 특정 제품을 추가하는 행동을 바탕으로 관련 제품 또는 보완 제품을 보여주는 새로운 추천을 트리거하듯 각 단계가 다음 단계와 관련된 정보를 제공할 가능성이 높으므로 고객 행동에 대한 데이터를 지속적으로 캡처해야 합니다. 맞춤설정에 필요한 데이터는 대부분 반구조화된 희소 데이터이므로 유연한 데이터 모델을 갖춘 데이터베이스가 필요합니다. 

대규모 맞춤설정을 구현하기 위해서는 대체로 전체 애플리케이션 지연 시간을 100밀리초 미만으로 유지하면서 원활한 사용자 경험을 제공할 수 있도록 중요한 서비스 경로에서 대규모 데이터를 거의 실시간으로 읽을 수 있어야 합니다. 즉, 데이터베이스에 요청을 보내면 한 자릿수 밀리초 미만의 지연 시간으로 결과가 반환되어야 합니다. 온보딩하는 고객 수가 증가하더라도 애플리케이션 지연 시간이 길어져서는 안 됩니다. 데이터가 효율적으로 구성되고 다른 도구와 통합되어 있어야 심층적인 분석 쿼리를 실행하고 머신러닝(ML) 모델을 사용하여 맞춤 추천을 생성할 수 있으며 고객 서비스에 필요한 집계 데이터를 운영 데이터베이스에 저장할 수 있습니다. 또한 애플리케이션 처리 성능에 영향을 미치지 않으면서 분석에 필요한 대규모 일괄 읽기를 실행할 수 있어야 합니다. 

또한 애플리케이션 사용량이 늘어나더라도 데이터베이스 비용이 크게 증가하지 않아야 합니다. 데이터 볼륨과 처리량 요구사항이 증가하더라도 데이터베이스가 총 소유 비용(TCO)을 계속 낮게 유지하고 우수한 가격 대비 성능을 제공해야 합니다. 전 세계 모든 사용자에게 일관되고 예측 가능한 성능을 제공할 수 있도록 데이터베이스가 원활하게 선형적으로 확장되어야 합니다. 그뿐만 아니라 사용자가 복잡한 데이터베이스 관리에서 벗어나 애플리케이션에 집중할 수 있도록 데이터베이스 관리가 쉬워야 합니다.

NoSQL 데이터베이스가 맞춤설정에 최적인 이유 

모든 데이터베이스에는 여러 엔지니어링 단점이 반영되어 있습니다. 관계형 데이터베이스가 설계되었던 40년 전에는 스토리지, 컴퓨팅, 메모리 비용이 지금보다 수천 배 더 많이 들었습니다. 데이터베이스는 동시 실행 사용자 수가 비교적 적은 단일 서버에 배포되었고 사용자는 네트워크 접속이 가능한 일반 영업시간에 시스템에 액세스하는 경향이 있었습니다. 관계형 데이터베이스는 이와 같은 리소스, 비용, 사용 패턴을 염두에 두고 설계되었기 때문에 스토리지 및 메모리 효율성을 유지하기 위한 작업 부하가 높으며 하나의 서버를 사용한 여러 곳의 배포를 가정합니다. 

스토리지, 메모리, 컴퓨팅 비용이 저렴해지고 데이터와 워크로드가 상용 하드웨어의 용량을 넘어서는 수준으로 증가함에 따라 엔지니어는 다양한 목표를 염두에 두고 단점을 재고하기 시작했습니다. 이후 등장한 새로운 유형의 데이터베이스는 특히 클라우드 인프라에서 손쉽게 확장할 수 있는 분산 아키텍처를 가정하고 설계되었습니다. 이 접근 방식에는 SQL의 정교한 기능과 관계형 시스템에서 개발된 데이터 무결성 및 트랜잭션 기능의 상당 부분을 포기해야 한다는 단점이 있었습니다. 이러한 시스템을 일반적으로 NoSQL 데이터베이스라고 합니다.

기존의 관계형 데이터베이스는 시간이 지나도 자주 변경되지 않는 고정 스키마를 사용합니다. 이 같은 데이터 구조의 예측 가능성 덕분에 최적화의 범위가 확대된 반면 애플리케이션에서 다양한 새 데이터 요소를 추가하기가 어렵고 번거로워졌습니다. 키 값 저장소, 문서 데이터베이스와 같은 NoSQL 데이터베이스는 스키마의 유연성을 향상하므로 시간이 지남에 따라 데이터 구조를 한층 더 쉽게 변경할 수 있습니다. 데이터 모델이 유연하면 애플리케이션의 혁신 속도가 빨라지고 ML 모델에서 반복하는 기능이 개선되는데, 이는 맞춤설정에 반드시 필요한 요소입니다. 또한 Cloud Bigtable과 같은 시스템의 확장성을 기반으로 수백 만 명의 동시 실행 사용자에게 맞춤설정을 제공하는 한편 고객 경험을 맞춤설정하는 방식을 지속적으로 발전시킬 수 있습니다.

Cloud Bigtable이 대규모 맞춤설정을 지원하는 방법 

Cloud Bigtable은 초당 수백만 건의 요청을 처리하고 페타바이트급 용량의 데이터[1]를 비용 효율적으로 저장하며 한 자릿수 밀리초의 지연 시간으로 읽기 및 쓰기를 일관되게 실행하는 기능을 기반으로 대규모 맞춤설정을 지원합니다. Bigtable은 높은 성능과 낮은 운영 비용을 고유하게 조합하여 TCO를 절감합니다. 

Spotify, Segment, Algolia로부터 Bigtable을 통해 맞춤설정된 고객 경험을 구축한 사례를 들을 수 있었습니다. Spotify의 피터 소봇이 설명하는 Bigtable을 사용한 맞춤설정 구현 사례를 들으려면 이 프레젠테이션을 확인하세요.

애플리케이션이 로켓선처럼 빠른 속도로 인기를 얻어 사용자 수가 2억 5,000만 명으로 급증하는 시나리오를 생각해 보겠습니다. 애플리케이션 동시 시행 사용자 수가 최대 175만 명[2]이고 각 사용자가 1분마다 2개의 요청을 데이터베이스에 전송한다고 가정해 보겠습니다. 이 경우 분당 350만 개(초당 약 58,300개)의 요청이 데이터베이스에 전송됩니다. 이 워크로드를 실행하기 위한 Bigtable 가격은 하루당 400달러 미만에서 시작합니다.[3]

노드가 추가되면 Bigtable 처리량이 이에 비례하여 확장됩니다. 컴퓨팅과 스토리지가 분리된 상태에서 Bigtable은 일관된 성능을 제공하도록 노드와 데이터의 연결을 조정하여 처리량을 자동으로 구성합니다. 노드에 과부하가 발생하면 Bigtable에서 일부 트래픽을 부하가 낮은 노드로 자동으로 이동시켜 전체 성능을 개선합니다. 또한 Bigtable은 리전별 로컬 쓰기와 함께 리전 간 복제도 지원합니다. 이를 통해 지리적으로 고객과 가까운 위치에서 데이터를 관리할 수 있으므로 네트워크 지연 시간이 단축되고 전 세계 여러 리전의 고객에게 짧은 지연 시간으로 예측 가능한 읽기 및 쓰기를 제공할 수 있게 됩니다. 

Bigtable은 Google Cloud에서 개발 및 운영하는 NoSQL 데이터베이스입니다. Bigtable에서 제공되는 column family 데이터 모델을 사용하면 고객 행동 및 선호도와 관련된 다양한 데이터 요소를 유연하게 저장하고, 방대한 양의 고객 데이터 요소를 저장하고, 애플리케이션에서 빠르게 반복할 수 있습니다. Bigtable에서는 수백만 개의 열과 수조 개의 행이 지원됩니다. Bigtable의 각 행이 최대 256MB의 데이터를 지원하므로 고객의 모든 맞춤설정 데이터를 단일 행에 손쉽게 저장할 수 있습니다. Bigtable 테이블은 희소하며 행에서 사용되지 않은 열에 대한 스토리지 페널티가 없어 값이 저장된 열에 대해서만 요금을 지불하면 됩니다.

BigQuery ML을 사용하면 BigQuery에서 직접 ML 모델을 만들고 실행함으로써 다시 Bigtable로 가져올 수 있는 맞춤 추천을 생성할 수 있습니다. Bigtable 데이터를 BigQuery에 손쉽게 파이핑하여 심층적인 분석 쿼리를 실행하고 추천을 생성할 수 있습니다. 계산된 추천과 같은 집계(예: 시스템에서 생성된 추천)는 Bigtable로 다시 전송되어 애플리케이션에서 해당 추천을 짧은 지연 시간에 대규모로 사용자에게 제공할 수 있습니다. 

Bigtable은 Apache Beam 생태계 및 Dataflow와 통합되어 손쉽게 데이터를 처리하고 분석할 수 있도록 해줍니다. 애플리케이션 프로필과 Bigtable의 복제 기능을 사용하면 일괄 읽기 시 읽기와 쓰기가 혼합된 워크로드의 처리 속도가 느려지지 않도록 워크로드를 격리할 수 있습니다. 이렇게 하면 애플리케이션에서 대규모 읽기를 실시간에 가깝게 수행하여 TensorFlow에서 맞춤설정을 위한 머신러닝 모델을 개발하고 학습시킬 수 있습니다. Bigtable은 오프라인으로 또는 실시간으로 맞춤 추천을 생성하고 고객에게 제공할 수 있는 최적의 운영 데이터 플랫폼입니다.
https://storage.googleapis.com/gweb-cloudblog-publish/images/regionall_setups.max-1400x1400.jpg

다음은 전자상거래 분야의 맞춤설정과 관련된 스키마의 개념 예시입니다.

https://storage.googleapis.com/gweb-cloudblog-publish/images/conceptual_schema_examples.max-2000x2000.jpg

다음은 맞춤설정 사용 사례에 필요한 요소와 Bigtable의 해결 방식에 대한 간단한 설명입니다.

 

맞춤설정 사용 사례 요구사항 

Bigtable에서 이 요구사항을 해결하는 방법 

모든 활성 사용자에 대한 대량의 데이터를 빠르게 읽고 쓰기

매우 높은 처리량(초당 수백만 개 작업), 노드 추가에 비례하여 처리량 확장

일관되고 빠른 성능, 많은 경우 100밀리초 미만의 애플리케이션 지연 시간

10밀리초 미만의 일관된 지연 시간으로 읽기 및 쓰기, 노드와 데이터의 연결을 조정하여 자동으로 처리량 구성

대량의 고객별 데이터를 고객 행동 및 선호도와 연결하여 저장

Bigtable의 각 행에 최대 256MB의 데이터 저장 가능, 수조 개의 행과 수백 개의 열

 

낮은 TCO

처리량이 높은 워크로드의 TCO 감소, 비용과 복잡성을 줄여주는 완전 관리형 서비스, TCO를 더욱 절감하는 단일 클러스터 설정 옵션(99.9% 가용성 SLA) 

a) 사용자별 다양한 데이터 요소를 저장하고 b) 애플리케이션 반복을 보다 빠르게 실행할 수 있는 유연한 데이터 모델

유연한 column family 데이터 모델 

무제한 확장

GB 단위에서 PB 단위까지 무제한 확장, 수조 개의 행과 수백만 개의 열, 선형 확장성, 별도로 확장 가능한 컴퓨팅 및 스토리지 

 

비즈니스에 중요한 안정성 

여러 영역 간 복제를 통한 99.99% 가용성 SLA, 영역 장애 발생 시 자동 장애 조치, 주요 Google 서비스 지원에서 검증된 성과

전 세계에서 일관된 성능 유지

리전 간 복제를 통해 사용자에게 더 가까운 위치로 데이터를 이동시키고 전 세계에 지연 시간이 짧은 읽기 및 쓰기를 제공할 수 있도록 지원

애플리케이션 읽기/쓰기에 영향을 미치지 않으면서 대규모 일괄 읽기 또는 분석 워크로드 실행

애플리케이션 프로필과 복제 기능을 사용하면 일괄 읽기 시 워크로드의 처리 속도가 느려지지 않도록 워크로드를 격리할 수 있음

개방형 및 통합형

HBase, BigQuery, TensorFlow, Apache Beam, Hadoop, Dataproc, Dataflow와 호환 가능

손쉬운 관리

완전 관리형 서비스

 

Bigtable은 사용자가 복잡한 데이터베이스 관리 작업에서 벗어나 고객에게 더욱 맞춤설정된 경험을 제공하는 데 집중할 수 있는 완전 관리형 서비스입니다. Bigtable 자세히 알아보기


[1] 스토리지 가격(HDD)은 1GB당 월 $0.026에서 시작합니다(us-central1)

[2] 애플리케이션이 하루 24시간 사용되고 평균 사용자 세션은 5분(Android 앱 평균)이며 일일 최대 사용량은 평균 사용량의 2배라고 가정합니다. (2억 5,000만 / (24시간 / 5분) *2 = 최대 동시 실행 사용자 수 173만 6,111명(us-central1 리전)

[3] us-central1 리전의 Cloud Bigtable 가격. 매월 25TB SSD 스토리지(사용자당 100KB, 사용자 수 2억 5,000만 명),
데이터 백업을 포함해 매월 10개의 컴퓨팅 노드(복제 없음)를 가정합니다. Bigtable 가격 책정 세부정보.

게시 위치