클라우드의 가장 큰 장점은 자원을 원하는 때 유연하고 신속하게 배치하거나 회수할 수 있다는 것이다. 이를 통해 자원 활용 효율화와 성능 최적화를 모두 구현할 수 있다. 또 아마존웹서비스(AWS) 간판과도 같은 오토 스케일 아웃 기능을 통해 사람 손을 거치지 않고 시스템 확대와 축소를 실행하면 한번 구축한 시스템에 거의 손을 대지 않고도 사용량에 따라 빠르게 확장할 수 있다.
그런데 유감스럽게도 이렇게 부하에 맞게 완전 자동화된 시스템을 구축하는 건 현재 여건상 거의 불가능하다. 웹 서버, 웹 애플리케이션 서버(WAS) 등 영구저장용 데이터를 갖지 않는 무상태(Stateless) 시스템이라면 빠른 확장이 가능하지만 DB 등 영구저장 데이터를 갖는 시스템은 그렇지 않다.
더 정확하게 말하자면 데이터 스토리지 자체의 빠른 복제가 불가능하기 때문에 이런 구조가 성립하지 않는다는 것이다. 쓰기 작업이 많다면 데이터를 인스턴스별로 분할 처리하거나 DB 앞에 대규모 메시지 큐(message queue)를 두는 방식으로 어느 정도 대응이 가능하다.
그러나 읽기 작업은 이미 저장된 스토리지로부터 물리적으로 읽어 들이는 작업이 필요하기 때문에 몇몇 특수한 상황을 제외하고는 실시간으로 스케일 아웃되지 않는다. 그래서 컨테이너로 마이크로 서비스를 구축한다고 하더라도 DB만은 물리 서버를 사용해 하이브리드로 쓰는 사례들이 아직도 많다. 이 경우 부하를 넉넉하게 처리할 수 있도록 스토리지를 NVMe(Non-Volatile Memory express) SSD로 장착하고 높은 사양의 서버를 쓰는 것은 기본이다.
서비스형 데이터베이스(DBaaS)는 DB만큼은 물리 서버로 구축하던 인프라 경향에 변화를 가져왔다. 하지만 민첩하고 유연하다는 클라우드 장점이 부각되면서 DB만큼은 물리 서버로 구축하던 경향에도 변화가 나타나고 있다. 물리 서버는 사양이나 설정을 빠르게 변경하기가 어렵기 때문에 초기의 부하 산정이 매우 중요하다.
반면에 클라우드라면 현재 부하에 맞게 언제든 DB 사양을 변경할 수 있다. 최근에는 I/O(입출력) 성능이 중요한 워크로드를 위해 NVMe SSD(Solid State Drive)를 장착한 인스턴스도 있기 때문에 예전에 비해 성능 격차가 많이 줄어들었다.
또 마리아DB(MariaDB) 같은 MySQL 계열 오픈소스 데이터베이스관리시스템(DBMS)의 경우 읽기 전용의 복제 슬레이브(replication slave)를 만들어서 성능을 향상하는 방법을 사용한다. AWS의 RDS(Relational Database Service)와 같은 DBaaS를 사용하면 원하는 때 원하는 만큼 복제본(Replication Set)을 늘렸다가 줄일 수도 있으므로 편리하다.
또 AWS의 오로라(Aurora)는 총 3개의 AZ(Availability Zone)에서 각 두 개의 공유 스토리지를 사용하는 클러스터로 장애 처리 구조가 내부적으로 구현되어 있기 때문에 RDS나 MySQL 가상머신(VM)처럼 장애복구(Fail Over)를 위한 별도의 구성 및 설정을 하지 않아도 된다.
오로라 서버리스(Aurora Serverless)는 여기에 더해 서버리스 기술을 적용함으로써 메모리를 기반으로 부하 수준에 따라 전체 클러스터의 용량을 조절할 수 있다. 고객이 클러스터를 생성하고 최소 및 최대 메모리 정도만 지정해 두면 그 안에서 DB 용량은 자동 조절되기 때문에 워크로드에 최적화된 인프라 구성을 유지하게 되는 것이다.
이렇듯 최근 경향은 클라우드서비스공급자(CSP)가 고객이 하는 일들을 점점 더 많이 가져옴으로써 고객 업무를 줄여주는 방향으로 가고 있다. 오라클의 자율운영(Autonomous) DB도 그 방향에 부합하는 제품이다. 사용자 개입 없이도 최적화해 운영하는 DB 환경을 목표로 하고 있다. 패치나 업그레이드는 자동으로 수행되며 머신러닝 기술을 사용해 DB 성능을 최적화하는 일도 가능하므로 등 실제 고객의 일을 많이 줄여줄 수 있다.
물론 이러한 서비스들에는 아직 발전의 여지가 상당히 있다. 광고처럼 설치만으로 나머지 모든 작업을 신경 쓰지 않아도 되는 수준까지는 이르지 못했다. DBaaS 솔루션들도 비싼 가격과 낮은 스토리지 성능, 예측되지 않는 지연, 어려운 성능 분석 등 해결해야 할 문제가 많다.
그럼에도 불구하고 이런 부분까지 맡기고자 하는 고객의 수요는 분명하다. DBaaS가 좀더 발전하면 근 미래에는 고객이 DBA(DataBase Administration)없이도 최적화에 근접한 성능과 기능을 얻을 수 있을 것으로 기대된다.
<자료제공:클라우드 전문기업 케이아이엔엑스(KINX)> 노규남 CTO bardroh@kinx.net