샤딩 제거한 단일 클러스터에서 데이터 일관성 유지 및 50% 비용 절감
자동 최적화 기능이 운영 자원 절감…단일 장애지점 제거로 시스템 가용성 향상

클라우드 데이터베이스관리시스템(DBMS) 기업 마리아DB(MariaDB Corporation)는 삼성전자 MX사업부가 삼성 클라우드 서비스에 자사의 분산형 SQL 데이터베이스 ‘마리아DB 엑스팬드(Xpand)를 사용해 일일 수십 억 건에 달하는 트랜잭션을 처리하고 데이터베이스 비용을 50%까지 절감하는 성과를 달성했다고 밝혔다.

삼성 클라우드 서비스는 전 세계 갤럭시 사용자의 기기와 정보를 관리하기 위해 수백 페타바이트(Petabyte) 및 16억행 이상의 대규모 데이터베이스에서 매일 수십억 건의 트랜잭션을 처리하고 있다. 기존 MySQL 샤딩(Sharding) 구현의 복잡성 문제를 해소하고 데이터베이스 가용성과 확장성을 높이기 위해 2017년부터 엑스팬드로 마이그레이션한 후 현재 50대 이상의 노드에 성공적으로 운영하고 있다.

삼성전자의 MariaDB Xpand 아키텍쳐
삼성전자의 MariaDB Xpand 아키텍쳐

샤딩은 트래픽 부하를 분산시키기 위한 목적으로 데이터베이스 테이블을 여러 개의 작은 단위로 나누고 각각의 작은 테이블에 데이터 행과 열을 분할해 저장하는 기법을 말한다. 이 작은 테이블을 샤드(shard)라고 부르며, 샤드는 개별적인 데이터베이스 서버 인스턴스로서 운영된다.

샤딩 기법은 수평적 확장과 부하 분산, 더 많은 트래픽 처리 등의 장점을 갖지만 데이터 손실이나 테이블 손상의 위험도 갖고 있다. 온라인 백업의 경우 각 샤드마다 받아야 하기 때문에 데이터 일관성을 유지하기 어렵고 코드를 계속 수정해야 한다. 또 지나치게 많은 인프라를 사용하기도 한다.

삼성전자 MX사업부는 이러한 복잡성 제거를 최우선 목표로 엑스팬드를 통한 분산형 SQL 접근방식을 적용했다. 분산형 SQL은 강력한 일관성과 데이터 무결성을 유지하면서도 대규모 확장 가능한 차세대 관계형 데이터베이스(RDBMS)다. 일단 구축되면 수많은 데이터베이스 노드가 하나의 데이터베이스처럼 실행된다. 규모에 따라 노드를 추가하면 확장 가능하며, 일부 노드가 오류를 일으켜도 문제되지 않는다.

마리아DB 한국지사는 “엑스팬드 환경에서는 단일 커맨드로 새로운 서버 노드를 추가하면 데이터가 자동으로 새로운 서버 노드로 이전되며, 추가된 노드는 엑스팬드에 더 많은 컴퓨팅 파워와 메모리, 스토리지를 공급하여 더 많은 트랜잭션을 더욱 빠르게 처리할 수 있다”고 설명했다. 또 복수의 DB 인스턴스에 트랜잭션을 기록하기 때문에 ACID(Atomicity, Consistency, Isolation, Durability) 요건을 충족할 수 있다고 전했다.

나아가 현재 워크로드의 데이터 분산 구조와 각 인스턴스의 상태 및 자원 활용률을 분석하고, 이를 자동으로 최적화함으로써 운영 자원을 절감할 수 있다. 만약 DB 인스턴스가 추가 혹은 삭제되거나 예기치 않은 장애 상황이 발생하면, 데이터를 자동으로 다른 인스턴스로 이전하여 각 인스턴스가 보관하는 데이터의 양과 쿼리 처리 상태를 균등하게 최적화할 수 있다.

이와 함께 엑스팬드는 단일 장애 지점(Single Point of Failure)으로 인한 서비스 중단을 방지하고 시스템 가용성을 높일 수 있도록 장애 허용성을 지원한다. 엑스팬드 시스템은 특정 서버 노드에 장애가 발생하면 다른 엑스팬드 노드의 복제본(Replica)에 존재하는 데이터를 이용해 서비스를 지속하며, 리밸런서로 장애 지점에 있던 데이터 복제본을 생성해 시스템을 자동 복구한다.

마리아DB 한국지사는 자사의 분산형 SQL 데이터베이스 엑스팬드가 초당 수백만개의 트랜잭션 처리를 위해 쉽게 확장할 수 있으며 고가용성을 제공한다고 강조했다. 또한 RDBMS의 모든 이점을 제공하는 동시에 기존 데이터베이스 비용을 획기적으로 절감할 수 있다고 덧붙였다. 엑스팬드는 표준 SQL과 MySQL 프로토콜을 지원하기 때문에 애플리케이션 코드를 변경할 필요 없이 MySQL에서 엑스팬드로 쉽게 마이그레이션할 수 있다.

김전호 삼성클라우드 운영 리더는 “마리아DB 엑스팬드를 이용하면 샤딩 코드를 관리할 필요 없이 서비스 로직에 집중하는 등 애플리케이션 아키텍처를 단순화할 수 있고, 추가 인프라를 운영하지 않고도 고가용성 및 백업을 안정적으로 유지할 수 있다”고 말했다.

이에 따라 엑스팬드의 뛰어난 효율성을 기반으로 3개 지역 2개 서비스로 확장하면서도 AWS (Amazon Web Services) EC2의 크기를 i3.16xlarge에서 1/4 크기인 i3.4xlarge로 줄이고, 비용을 50% 절감할 수 있었다고 설명했다.

삼성클라우드 운영팀은 다음 목표로 병렬 복제(Parallel Replication) 기능을 테스트하고 있다. 현재까지 삼성 클라우드 서비스는 ETL 프로세스를 엑스팬드 운영 클러스터에서 수행해왔지만 병렬 복제 기능을 사용하면 부하 분산이 더욱 원활해질 것으로 기대하고 있다.

마리아DB 엑스팬드는 마리아DB의 SkySQL 클라우드 데이터베이스를 통해 클라우드에서 무료로 시험 운용할 수 있다.

저작권자 © 넥스트데일리 무단전재 및 재배포 금지