line6분 읽기

큐레이션 요약

Flava DBaaS 딥다이브: 아키텍처부터 마이그레이션, 그리고 미래까지

원문 읽기(새 탭에서 열림)

LY Corporation은 Verda와 YNW를 차세대 프라이빗 클라우드 Flava로 통합하면서, 쿠버네티스 오퍼레이터 패턴 기반의 DBaaS를 설계했습니다. Flava DBaaS는 데이터베이스 비즈니스 로직과 IaaS 제어를 분리하고, 선언적 관리·자동화·일관된 사용자 경험을 제공하는 것을 목표로 합니다. 또한 DBaaS의 역할을 신규 데이터베이스 제공에 그치지 않고, 기존 플랫폼에서 Flava로의 원활한 마이그레이션까지 확장하고 있습니다.

쿠버네티스 오퍼레이터 기반의 선언적 DBaaS

  • 사용자가 원하는 데이터베이스의 상태를 커스텀 리소스(CR)로 선언하면, 컨트롤러가 실제 상태가 선언된 상태와 일치하도록 지속적으로 조정(reconcile)합니다.
  • 절차를 직접 지시하는 방식보다 운영 상태를 파악하기 쉽습니다.
    • 커스텀 리소스의 사양과 현재 상태 비교
    • 컨트롤러 로그 및 이벤트 확인
    • 문제 발생 원인 추적
  • 이벤트 기반 컨트롤러이므로 대규모 데이터베이스 환경에서도 효율적으로 동작할 수 있습니다.
  • 쿠버네티스의 CI/CD, 권한 관리, API, 모니터링 등 생태계 기능을 활용할 수 있습니다.
  • 구현 난이도는 높지만, 장기적인 운영과 관리에는 유리합니다.

인프라 오퍼레이터를 통한 IaaS 추상화

  • DBaaS는 여러 VM, 스토리지, 네트워크, 도메인 등 IaaS 자원을 조합해 데이터베이스 클러스터를 구성합니다.
  • DBaaS가 IaaS API와 호출 절차를 직접 처리하면 다음 문제가 발생합니다.
    • 인프라 제어 코드가 지나치게 많아짐
    • 데이터베이스 운영 로직과 인프라 로직이 뒤섞임
    • DBMS별 개발자가 IaaS 세부사항까지 이해해야 함
  • Flava는 IaaS 자원을 인프라 오퍼레이터가 쿠버네티스 커스텀 리소스로 추상화하도록 구성했습니다.
  • 예를 들어 VM 생성 시 IaaS API를 직접 호출하지 않고, 다음과 같은 속성을 선언한 server.yaml을 작성한 뒤 kubectl create -f server.yaml로 리소스를 생성합니다.
    • 가용 영역
    • 운영체제 이미지
    • vCPU·메모리 등 서버 유형
  • 계층은 다음과 같이 분리됩니다.
    • DBaaS: 데이터베이스 비즈니스 로직 담당
    • 인프라 오퍼레이터: IaaS를 쿠버네티스 리소스로 추상화
    • IaaS: 컴퓨트·네트워크·스토리지 제공
  • 이 구조를 통해 여러 DBMS가 IaaS 자원을 동일한 방식으로 사용하고, DBaaS 개발자는 DBMS별 기능에 집중할 수 있습니다.

커스텀 리소스와 세 가지 실행 컴포넌트

Flava에서 데이터베이스 클러스터 역시 쿠버네티스 커스텀 리소스로 표현됩니다.

  • 커스텀 리소스에는 다음과 같은 구성이 선언됩니다.
    • MySQL 버전
    • VM 서버 사양
    • 스토리지 종류와 용량
    • 복제 멤버 수
  • 리소스는 YAML 형태로 etcd에 저장되며 쿠버네티스 API를 통해 생성·조회·수정·삭제할 수 있습니다.

DBaaS는 커스텀 리소스를 중심으로 API 서버, 매니저, 에이전트로 나뉩니다.

  • API 서버
    • 사용자와 UI, IaC 도구가 호출하는 REST API를 제공합니다.
    • 사용자의 요청을 DBaaS 커스텀 리소스 생성·수정·삭제 작업으로 변환합니다.
  • 매니저
    • 커스텀 리소스의 변경을 감지하는 컨트롤러입니다.
    • 선언된 사양과 실제 클러스터 상태가 일치하도록 VM 생성, 구성 변경, 복제 설정 등을 조정합니다.
    • 인프라 오퍼레이터의 커스텀 리소스를 생성해 필요한 VM과 인프라를 준비합니다.
  • 에이전트
    • 데이터베이스가 실행되는 VM 내부에서 동작합니다.
    • 운영체제 명령이나 데이터베이스 명령처럼 VM 내부에서 실행해야 하는 작업을 수행합니다.
    • MySQL 설치, 복제 구성, 프로비저닝 등 로컬 실행이 필요한 작업을 담당합니다.

예를 들어 MySQL 클러스터 생성 요청이 들어오면 API 서버가 MySQL 커스텀 리소스를 생성하고, 매니저가 필요한 VM을 만든 뒤, 에이전트가 VM 내부에서 MySQL과 복제 구성을 완료합니다.

DBMS 지원과 확장성 개선

  • Verda와 YNW에서 제공하던 DBMS를 통합해 Flava에서 지원하는 DBMS 종류를 확대했습니다.
  • 기존 사용자 만족도 조사와 운영 경험을 바탕으로 기능을 추가했습니다.
  • 스토리지를 100GiB 단위로 구성할 수 있어 용량 조정이 유연해졌습니다.
  • 블록 스토리지를 사용하는 DBMS는 최대 5TiB까지 지원합니다.
  • 기존에는 VM 로컬 디스크 용량이 하이퍼바이저의 VM 사양에 종속됐지만, Flava는 다음을 통해 제약을 줄였습니다.
    • 사용자 정의 인스턴스 유형
    • VM과 분리된 블록 스토리지
    • 확장된 최대 스토리지 용량
  • 단일 VM의 저장공간 부족으로 샤딩을 검토해야 했던 사례를 줄일 수 있습니다.
  • 5TiB 제한은 대부분의 사용 사례를 충족하면서 블록 스토리지 측 서버 단편화를 방지하기 위한 설계 결정입니다.

DBMS 전반의 통일된 사용자 경험

  • 모든 DBaaS 상품에 공통 아키텍처와 UI·UX를 적용했습니다.
  • 한 DBMS에서 익힌 관리 방식으로 다른 DBMS도 사용할 수 있습니다.
    • MySQL에서 서버 사양을 변경한 경험을 Redis에도 적용
    • Cassandra에서 설정한 모니터링 알람 방식을 MySQL에도 적용
  • DBMS마다 별도의 사용법을 학습해야 하는 부담을 줄였습니다.
  • 플랫폼 차원에서 프로비저닝, 고가용성, 백업·복구, 확장성, 모니터링 같은 기본 기능을 제공합니다.

보안 및 편의 기능 강화

  • DBaaS 기본 기능으로 다음 보안 기능을 제공합니다.
    • TDE(Transparent Data Encryption): 저장 데이터 암호화
    • TLS(Transport Layer Security): 전송 구간 암호화
  • Custom DB Role
    • 필요한 수준의 권한을 가진 데이터베이스 사용자를 생성·관리할 수 있습니다.
    • 정의한 역할을 재사용할 수 있습니다.
  • Database Parameter Group
    • 데이터베이스 파라미터를 원하는 값으로 관리할 수 있습니다.
    • 설정 그룹을 여러 클러스터에 재사용할 수 있습니다.
  • Restore backup
    • 특정 백업을 기반으로 새 데이터베이스 클러스터를 생성합니다.
    • 장애 복구뿐 아니라 실제 데이터가 필요한 성능 테스트 환경 구축에도 활용할 수 있습니다.
  • 일부 DBMS에서 아직 제공되지 않는 기능도 향후 확대할 예정입니다.

마이그레이션까지 포함하는 DBaaS의 책임

  • 신규 DBaaS는 데이터베이스를 생성하는 기능만 제공해서는 충분하지 않습니다.
  • 기존 Verda·YNW 환경의 사용자가 Flava로 쉽게 이동할 수 있도록 마이그레이션 방법까지 제공해야 합니다.
  • 같은 DBMS 간 마이그레이션 방식은 크게 세 가지로 소개됩니다.

덤프 및 복구

  • 소스 데이터베이스를 백업한 뒤 목적지 데이터베이스에 복구합니다.
  • 구현이 가장 단순합니다.
  • 데이터 정합성을 보장하려면 마이그레이션 중 애플리케이션 중단이 필요합니다.

실시간 복제

  • DBMS 자체의 복제 기능으로 소스에서 목적지로 데이터를 실시간 복제합니다.
  • 복제가 완료되면 페일오버해 목적지 클러스터를 새로운 프라이머리로 전환합니다.
  • 이후 기존 소스 데이터베이스를 제거합니다.
  • 애플리케이션 중단을 최소화할 수 있지만, 프라이머리 전환 시 짧은 중단이 발생할 수 있습니다.
  • 데이터 정합성은 사용 중인 DBMS의 복제 메커니즘에 의존합니다.

실용적인 결론

Flava DBaaS의 핵심은 데이터베이스를 쿠버네티스 리소스로 선언하고, 인프라 오퍼레이터·매니저·에이전트가 실제 구성을 자동으로 맞추도록 만든 점입니다. 유사한 플랫폼을 설계할 때는 DBaaS와 IaaS의 책임을 분리하고, 공통 UI·보안·백업 기능을 플랫폼 수준에서 제공하며, 신규 기능뿐 아니라 기존 시스템의 마이그레이션 경로까지 함께 설계하는 것이 중요합니다.

큐레이션 요약을 이어서 읽어보세요.