(번역) 카크로치디비(CockroachDB) 블로그 / CockroachDB 1.0 제품준비 완료

원문: https://www.cockroachlabs.com/blog/cockroachdb-1-0-release

2017년 5월에 작성된 CockroachDB 1.0 제품준비 완료 소식입니다. 이어서 최신 버전인 2.0, 2.1 소식도 전해드리겠습니다.


Written by Spencer Kimball on May 10, 2017

오늘, 최초의 오픈소스 클라우드 네이티브 SQL 데이터베이스인 CockroachDB 1.0의 출시를 발표하게 되어 기쁩니다. 추가로 우리는 비전을 공유하는 투자자들로부터 시리즈 B 펀딩을 받게 되었습니다. 1.0 버전의 출시는 베타버전이 종료되고, 스타트업부터 엔터프라이즈까지 어떤 규모의 비즈니스에도 대응할 수 있는 데이터베이스가 준비되었음을 의미합니다.

간단한 소개를 먼저 하겠습니다. 일반적으로 데이터베이스가 기술적으로 가장 흥미진진한 주제는 아니지만, 이를 무시할 수는 없습니다. 데이터베이스의 지속적인 발전은 기업이 요구사항과 기술 사이에 벌어지는 무자비한 군비경쟁과 같습니다. 지속적인 압박으로 인해 데이터베이스는 계속하여 더 빠르고, 크고, 신뢰할 수 있게 되었으며, 이 순환은 계속되어 왔습니다.

2017년에도 이런 진화가 일어나고 있습니다. 어떤 이들은 그것을 “NewSQL"이라고 부릅니다. 이것은 일반적인 관계형 데이터베이스를 더 크고 안정적으로 만듭니다. CockroachDB는 더 큰 데이터와 고가용성을 위한 새로운 모델인 멀티 액티브 가용성을 사용한 분산 SQL을 제공하여 NewSQL이 되었습니다. 이러한 기능은 글로벌 클라우드 서비스 구현의 더 나은 표준을 정립했습니다.

이미 제품을 사용하고 있는 Baidu와 Heroic Labs를 포함하여 100,000회 이상의 다운로드가 베타 릴리즈에서 있었고, Benchmark, FirstMark Capital, GV(이전 Google Ventures), Index Ventures와 Work-Bench에 Redpoint Ventures의 Satish Dharmaraj가 참가하여 시리즈 B 펀딩으로 2천7백만 달러를 확보하였습니다. Satish는 우리의 투자자와 자문팀에 귀중한 추가입니다. 무엇보다도 그는 골리앗인 마이크로소프트와 성공적으로 경쟁한 오픈소스 회사인 Zimbra를 설립하고 운영하였습니다. 이는 우리 앞에 놓여있는 도전과 기회에 걸맞은 자본을 제공합니다.

CockroachDB 1.0

CockroachDB는 재난에서 생존가능한 글로벌 클라우드 네이티브 SQL 데이터베이스입니다. “클라우드 네이티브"의 의미는 정확히 무엇일까요? 우리는 수평확장, 단일 장애 지점 없음, 생존성, 자동 운영, 플랫폼 의존성 없음을 함축한다고 생각합니다.

이러한 제품 목표를 실현하기 위해 지난 한 해 동안 세가지의 중요한 영역에 집중하였습니다. SQL을 분산하여 모든 사용사례를 지원하고 원활하게 확장하기, 항상 일관된 고가용성을 지원하는 멀티 액티브 가용성, 거의 모든 환경에서 자동화할 수 있는 유연한 배포방식입니다.

분산 SQL

관계형 데이터베이스의 SQL 제공은 일반적으로 단일 노드 배포로 제한됩니다. SQL에서 스케일링의 어려움은 지간 10년간 NoSQL 데이터베이스의 급격한 성장의 원인이었습니다. NoSQL은 스케일링(과 단순성)을 약속하고 제공했습니다. 그러나 점유율은 전체 데이터베이스 시장의 일부분에 불과하고, 성장 속도는 둔화하였습니다. 그 이유는 NoSQL 솔루션이 프로그래머의 삶을 단순하게 해주는 SQL의 일반적인 보장을 희생하기 때문입니다. ACID 트랜잭션이나 읽기 일관성이 없어, 특화된 쿼리나 DML을 배워야 하는 것은 선택에 큰 장애가 될 수 있습니다.

CockroachDB는 SQL 기능의 희생 없이 확장성을 제공합니다. 완전한 분산 ACID 트랜잭션, 다운타임 없는 스키마 변경, 보조 인덱스, 외래키 지원 등을 제공합니다. 업계 표준 SQL을 지원함으로써 많은 인기 있는 ORM 프레임워크와 함께 즉시 사용할 수 있습니다. 또한 릴리즈 1.0에는 분산 쿼리 실행 엔진이 도입되어, 분산 JOIN이 가능하므로 클러스터에 노드를 추가함에 따라 선형적으로 가속되는 분석용 쿼리를 쓸 수 있습니다.

최근 세계 10대 인터넷 기업 중 하나인 Baidu에서 하루에 20억 개의 INSERT 요청을 처리하는 사용 사례를 시연했습니다. 이러한 트랜잭션 속도는 인공적으로 유도된 “혼란” 이벤트(클러스터에 걸쳐 재 레플리케이션과 리밸런싱을 유발하는)와 무관하게 유지되었습니다.

멀티 액티브 가용성

“고가용성”(HA)은 매우 중요한 기능입니다. 데이터베이스를 사용할 수 없는 경우 데이터베이스에 의존하는 서비스도 제공되지 않습니다. 지금까지 대부분의 데이터베이스 고가용성 솔루션은 성능을 위해 일관성을 희생했습니다. 그러나 실제 환경에서 네트워크 및 노드가 실패할 경우 애플리케이션은 잘못된 데이터를 읽고, 쓴 데이터는 사라져 버립니다. 속도는 우수한 벤치마크를 만들지만, 미션 크리티컬 데이터를 다룰 때는 추가사항이 고려되어야 합니다.

CockroachDB는 고가용성에 대해 다른 접근 방식을 취하며, 일관성을 우선시합니다. 우리는 이를 “멀티 액티브 가용성”(액티브-액티브 복제로 인한 고가용성의 발전형이기 때문에)이라고 부릅니다. 이는 이벤추얼 컨시스턴시 대신 3개 이상의 활성 레플리카를 사용하여 일관성 있는 일치 기반 복제를 사용합니다. 50% 이상의 리소스를 대기상태로 두는 프라이머리-세컨더리 레플리케이션과 다르게 사용 가능한 모든 리소스를 사용합니다. 액티브-액티브 복제와 다르게 일관성 없는 읽기 또는 쓰기가 발생하지 않으며 충돌 해결이 필요하지 않습니다.

세계에서 가장 큰 온라인 게임 회사 중 하나인 우리의 고객은 전 대륙에서 일관된 읽기 및 쓰기를 지원하는 솔루션을 찾고 있었습니다. 멀티 액티브 가용성을 통해, 지리적으로 사용자에게 가장 가까운 노드가 쿼리를 제공하여 지연시간을 크게 줄일 수 있었습니다.

유연한 배포

기술은 그것의 가장 취약한 운영만큼만 유용합니다. 만약 쉽게 배포되고 운영할 수 없다면 번성할 수 없습니다. 우리는 처음부터 아키텍처와 운영에서 단순성을 우선시했습니다. 이 단순성은 CockroachDB를 Kubernetes나 Docker Swarm과 같은 널리 알려진 데이터 센터 오케스트레이션 기술로 관리할 수 있음을 의미하며, 수동으로 사용자 지정 운영환경에 유연하게 대응할 수 있음을 의미합니다.

CockroachDB는 사내 또는 퍼블릭 클라우드에서 실행되며, 여러 클라우드간에 설정할 수 있고, 클라우드간 마이그레이션에 다운타임이 필요 없습니다. 따라서 기업은 데이터베이스를 서비스로 사용하는 공급업체에 종속되지 않는 강력한 유연성을 확보할 수 있습니다.

어제 보스턴에서 열린 OpenStack Interop 컨퍼런스에서 CockroachDB는 15개의 프라이빗 클라우드 전반에 걸쳐 실시간 배포되었으며 상당한 유연성을 보여주었습니다.

상업적 제공: CockroachDB 엔터프라이즈

엔터프라이즈급 작업을 수행하려면 최소한의 다운타임과 장애방지책으로 운영환경을 구성해야합니다. 다운타임 없는 롤링 업그레이드, 인증서 교체를 지원하는 것에 추가하여 CockroachDB 엔터프라이즈 제품의 일부로 제공되는 분산형 증분 백업 및 복원 기능을 소개해 드리겠습니다.

이 기능은 고객에게 대규모 데이터를 제공하고 제품 요구사항을 만족시킵니다. 분산된 백업/복원은 클러스터의 모든 노드에서 병렬로 처리됩니다. 증분 백업은 전체 백업에 대한 효율적인 업데이트를 지원합니다. 데이터는 AWS, GCP, Azure에서 제공하는 blob 스토어와 같이 구성 가능한 모든 스토리지 기록되고 복원됩니다.

데이터베이스 사용자에게 주기적인 백업 및 복원이 권장되기 때문에 CockroachDB 코어에서도 비분산 백업/복원을 무료로 사용할 수 있습니다.

미래

우리는 중대한 마일스톤에 왔습니다. 릴리즈 1.0은 최초의 오픈소스 클라우드 네이티브 SQL 데이터베이스의 제품준비 완료 버전입니다. 하지만 이것은 시작에 불과합니다. 가장 흥미로운 과제는 세계에서 가장 빠르게 성자하고 있는 거대 기업과 함께, 글로벌 서비스 구축을 위한 문제를 해결하는 것입니다. 운영자와 애플리케이션 개발자에게 하나의 논리 데이터베이스를 제공하면서, 여러 대륙에서 고객에게 서비스를 제공할 수 있는 데이터 아키텍처를 어떻게 구축할까요? 어떻게 하면 지연시간을 최소화하고 빠르게 변경되는 데이터 관련법 준수를 위한 기반을 제공할 수 있을까요?

첫번째 중요한 단계는 지리분할 기능으로, 지리적인 레플리케이션을 로우별로 제어할 수 있어 고객의 데이터를 고객 가까이 둘 수 있습니다. CockroachDB는 이미 테이블 및 데이터베이스 세분화에서 유연한 지리적 레플리케이션을 지원하지만 지리분할을 통해 테이블의 모든 컬럼 또는 컬럼들이 파티션 키로 작동할 수 있습니다. 따라서 간단한 SQL UPDATE 문장으로 시드니에서 런던으로 데이터를 이전할 수 있습니다. CockroachDB가 파티션에 걸쳐있는 트랜잭션과 쿼리를 투명하게 처리해 줍니다. 2017년 말에 베타 버전이 출시 예정입니다!

진가를 시험받을 때

우리는 다양한 작업부하와 다양한 대혼란 이벤트를 이용하여 많은 환경에서 CockroachDB를 테스트했습니다. 또 성능도 크게 향상되었습니다. 하지만 도널드 럼즈펠드의 말을 빌리면, 우리의 가까운 미래에 알려진 미지수, 더 나쁜 알려지지 않은 미지수 모두가 있을 것입니다.

이제 우리의 진가를 시험받을 때이며, 광범위한 사용자, 사용사례 및 환경이 우리 제품의 결함을 드러나게 할 것으로 예상됩니다. 이 “강화” 단계에 우리는 최대한의 자원을 투입할 것입니다. 릴리즈 1.1은 2017년 10월에 준비되며 1.0을 더욱 안정시킬 것입니다.

릴리즈 1.1의 경우 SQL을 더 많이 지원하고, 향상된 진단 도구 및 상당한 성능향상을 제공할 것입니다.

1.0 릴리즈를 통해 CockroachDB의 새로운 사용자가 생기길 바랍니다. 또한 CockroachDB의 경쟁력을 지속해서 확장하여 현재와 미래의 성공을 위해 노력할 것입니다.

우리는 CockroachDB의 사용자 그룹을 위해 5월 11일에 샌프란시스코, 5월 17일에 뉴욕 있을 것입니다. CTO인 Ben Darnell이 1.0에 들어간 내용을 다루므로 의견을 주시면 감사하겠습니다.