바로 이동

자체 관리형 MySQL과 MySQL용 Cloud SQL 비교

MySQL은 전 세계에서 가장 인기 있는 오픈소스 관계형 데이터베이스 중 하나입니다. 인기 있는 이유 중 하나는 사용자의 워크로드 요구사항에 부합하는 다양한 방식으로 데이터베이스를 호스팅하고 관리할 수 있기 때문입니다. 사용자는 데이터베이스 온프레미스에서 자체 관리형으로 설정하거나, 클라우드의 가상 머신에서 자체 관리형으로 설정하거나, 클라우드 제공업체의 완전 관리형 제품을 사용하도록 선택할 수 있습니다. 이 도움말에서는 자체 관리형 MySQL 옵션과 Google Cloud에서 제공하는 완전 관리형 솔루션인 MySQL용 Cloud SQL을 집중적으로 살펴봅니다. 각 옵션의 장단점에 대해 다룹니다.

자체 관리형 MySQL

자체 관리형 MySQL 옵션은 사용자(대부분의 경우 데이터베이스 관리자)가 데이터베이스, 운영체제(OS), 네트워킹, 스토리지, 가상 머신(VM) 인스턴스, 그리고 데이터베이스 인스턴스 및 서버를 호스팅하는 하드웨어의 설정, 설치, 구성, 유지보수와 관련된 대부분의 활동을 담당한다는 것을 의미합니다. 하드웨어, VM 인스턴스, 스토리지, 네트워킹, 운영체제 태스크와 같은 일부 태스크는 Google Cloud와 같은 클라우드 서비스 제공업체를 활용하면 더 쉽게 수행할 수 있습니다. 사용자가 온프레미스 데이터베이스를 직접 관리하든 클라우드에서 직접 관리하든 상관없이 원활한 시스템 실행에 필요한 주요 데이터베이스 관리 태스크에 대한 책임은 사용자에게 있습니다. 이러한 태스크는 아래에 나열되어 있습니다.

  • 가용성: 하드웨어 및 소프트웨어 구성요소는 오류가 발생하기 마련입니다. 그러나 하드웨어 및 소프트웨어 오류로 인한 영향이 크지 않고 데이터베이스, 서버, 애플리케이션의 지속적인 가용성을 보장하는 방식으로 시스템을 설계할 책임은 사용자에게 있습니다.  
  • 데이터베이스 유지보수: 자체 관리형 MySQL 옵션에서 사용자는 애플리케이션 스택의 다양한 레이어를 최신 버전의 소프트웨어로 업데이트해야 하고 지원 종료 버전, 지원되지 않는 버전 또는 기존 버전의 하드웨어, 운영체제, 기타 소프트웨어의 지원에 대한 의사 결정을 내려야 합니다. 또한 사용자는 소프트웨어, OS, MySQL 패치를 정기적으로 설치하고 심각한 중단 없이 데이터베이스를 준비하고 실행해야 합니다.
  • 확장성: 시간 경과에 따라 애플리케이션 사용량이 증가하면서 데이터베이스 성능을 개선해야 할 필요성도 높아집니다. 마찬가지로 대규모 워크로드 또는 고객 기반을 지원하려면 하드웨어 리소스를 수직 확장 또는 수평 확장해야 합니다. 자체 관리형 MySQL의 경우 이 책임은 사용자에게 있습니다. 온프레미스 환경에서 하드웨어 리소스를 확장하는 것은 시간이 오래 걸리고 복잡한 활동으로, 시스템 다운타임이 발생하는 경우가 있습니다.
  • 보안: 최근에는 보안이 하드웨어의 물리적 보호에서 네트워킹 방화벽 구성, 데이터베이스 연결 보호 등에 이르기까지 데이터베이스 시스템의 여러 레이어를 포괄하는 가장 중요한 측면이 되었습니다. 자체 관리형 설정인 경우 이는 상당한 노력과 전문성이 요구되는 복잡한 활동입니다.
  • 모니터링: MySQL의 설정, 설치, 구성 외에도 사용자는 하드웨어 수준, OS, MySQL을 모니터링하고 장애 발생 시 시정 조치를 취하는 등 스택의 모든 레이어에서 다양한 구성요소를 모니터링하는 것에 대해 유의해야 합니다.

아래 다이어그램은 자체 관리형 설정을 선택하는 경우 사용자의 책임을 보여줍니다. Google Cloud에서 직접 관리하면 하드웨어, 컴퓨팅, 네트워킹, 스토리지와 관련된 일부 태스크가 줄어들지만, 나머지 스택 레이어 관리에 대한 책임은 여전히 사용자에게 있습니다. 데이터베이스 관리자와 애플리케이션 개발자는 여전히 MySQL을 관리하는 데 충분한 시간과 에너지, 리소스를 쏟아야 합니다.

데이터베이스 관리자의 모든 책임은 자체 관리형 데이터베이스 호스팅임을 보여주는 이미지

MySQL용 Cloud SQL이란 무엇인가요?

Cloud SQL은 Google Cloud에서 MySQL, PostgreSQL, SQL Server 데이터베이스를 손쉽게 설정, 구성, 유지보수, 관리할 수 있는 완전 관리형 데이터베이스 서비스입니다. Cloud SQL은 하드웨어, 네트워킹, OS, 보안, 모니터링, 유지보수, 가용성, 확장 등 MySQL 데이터베이스의 모든 측면을 관리합니다. 이러한 모든 책임은 사용자에게 모호하므로 사용자는 애플리케이션 개발에 집중하고 고객에게 가치를 제공할 수 있습니다.

아래 다이어그램은 MySQL 데이터베이스의 다양한 레이어 관리와 관련된 태스크를 보여주는 위의 다이어그램과 유사합니다. Cloud SQL이 사용자를 대신하여 관리하는 모든 태스크가 파란색으로 표시된다는 점만 다릅니다.

완전 관리형 데이터베이스 호스팅 이미지

위에서 설명한 여러 태스크를 관리하는 것 외에도 Cloud SQL은 자체 관리형 환경에서 네이티브 방식으로 사용할 수 없는 다양한 기능과 솔루션을 제공합니다. Cloud SQL에서 제공하는 주요 기능은 다음과 같습니다.

안정성: 백업 및 복구는 데이터베이스 관리에서 가장 중요한 활동입니다. Cloud SQL은 손상, 재해 또는 의도하지 않은 데이터 수정이 발생한 경우 데이터베이스를 특정 시점으로 복원하는 데 사용할 수 있는 자동 백업주문형 백업을 제공합니다.

가용성: Cloud SQL은 VM 또는 데이터 센터에 장애가 발생할 경우 고가용성을 제공하기 위해 자동 장애 조치 기능을 통해 여러 영역에 데이터베이스를 호스팅하는 여러 서버를 인스턴스화하여 고가용성을 제공합니다. Cloud SQL은 전 세계 어디에서든 99.95% 이상의 가용성을 보장합니다.

고가용성 기능 외에도 Cloud SQL은 Google Cloud에서 MySQL용 Cloud SQL 데이터베이스 인스턴스의 안정성을 담당하는 연중무휴 24시간 사이트 안정성 엔지니어링(SRE)팀을 제공합니다.

리전 간 읽기 복제본은 장애가 발생할 경우 재해 복구 메커니즘으로 사용할 수 있는 또 다른 기능입니다. 이를 통해 사용자는 비즈니스에 미치는 영향을 최소화하면서 영향을 받은 데이터베이스를 다른 사이트(리전)로 신속하게 불러올 수 있습니다.

확장성: Cloud SQL은 동일한 리전 또는 원격 리전에서 MySQL의 추가 읽기 전용 인스턴스와 같은 MySQL 읽기 복제본을 생성하므로 복제본 및 기본 인스턴스의 요청을 처리할 수 있고 따라서 읽기 성능이 향상됩니다. 읽기 복제본은 보고 목적으로도 사용할 수 있으며 비즈니스 요구사항이 충족되면 폐기할 수 있습니다.

Cloud SQL은 최소한의 다운타임으로 MySQL 인스턴스에서 리소스(CPU, 메모리, 스토리지)의 수직 확장 및 리소스의 축소를 지원합니다. 반면 자체 관리형 설정에서는 이러한 복잡한 활동에 상당한 노력과 전문성, 계획이 필요합니다.

보안: MySQL용 Cloud SQL 데이터베이스 서버는 최고 수준의 보안을 보장하는 Google Cloud 보안 데이터 센터에 위치합니다. 또한 Google Cloud는 Virtual Private Cloud와의 비공개 연결과 방화벽으로 보호되는 사용자 제어 네트워크 액세스를 제공하므로 사용자 데이터베이스 서버가 악의적인 행위자의 도달범위를 벗어납니다.

보안의 또 다른 측면은 보안 규정 준수입니다. Cloud SQL은 SSAE 16, ISO 27001, PCI DSS, HIPAA 등 인정되는 여러 규정을 준수합니다.

Cloud SQL은 IAM 통합을 통해 데이터베이스에 대한 액세스와 사용자를 관리하는 기능을 제공합니다. 이 통합은 Google Cloud 사용자의 승인 및 인증을 관리하고 특정 Google Cloud 리소스에 대한 세분화된 액세스 권한을 제공하여 데이터베이스에 대한 무단 액세스를 방지합니다. 또한 Cloud SQL은 Cloud SQL 리소스에 대한 액세스를 제어하도록 설계된 사전 정의된 역할을 제공하여 ID 및 액세스를 쉽게 제어할 수 있습니다.

Cloud SQL의 또 다른 보안 기능은 승인되지 않은 사용자가 사용자 데이터에 액세스하지 못하도록 보장하는 저장 데이터와 전송 중 데이터의 암호화입니다.

Cloud SQL은 데이터베이스 사용자를 위한 비밀번호 유효성 검사 기능을 제공합니다. 이 기능을 통해 고객은 인스턴스 수준에서 비밀번호 복잡성, 최소 비밀번호 길이, 비밀번호 변경 간격, 비밀번호에 사용자 이름 사용에 대한 비밀번호 정책을 정의할 수 있습니다. 또한 개별 사용자 수준에서 비밀번호 만료일, 실패한 시도 횟수, 이전 비밀번호 변경 요건에 대한 정책을 정의할 수 있습니다. Cloud SQL의 이러한 기능은 보안 규정 준수 권장사항을 제공하고 중요한 데이터에 대한 무단 액세스의 위험을 줄여줍니다.

Cloud SQL은 또한 감사 로그 플러그인을 사용하여 MySQL 데이터베이스에서 작업과 운영을 감사하는 방법도 제공합니다. 감사 로그는 누가, 언제, 어떤 객체에서 어떤 작업을 했는지에 대한 유용한 정보를 제공합니다. 데이터베이스 감사를 사용하면 데이터베이스에서 테이블 업데이트, 읽기 쿼리, 사용자 권한 부여와 같은 특정 사용자 작업을 추적할 수 있습니다.

관측 가능성: Cloud SQL은 다양한 모니터링 솔루션을 제공하며 데이터베이스 상태에 대한 유용한 정보를 제공하는 즉시 사용 가능한 측정항목이 점점 늘어나고 있습니다. 사용자는 관리자가 데이터베이스의 상태를 알 수 있도록 이 측정항목을 활용하여 알림을 만들 수 있습니다. 

또한 Cloud SQL은 쿼리 통계추천자와 같은 기능을 제공하므로 사용자는 쿼리 또는 워크로드의 성능 병목 현상을 식별하고 해결할 수 있습니다. 이러한 기능은 자체 관리형 MySQL 환경에서 복제하기 어렵습니다.

통합: Cloud SQL은 간편한 네트워킹 연결과 Google Cloud 내 다른 서비스(예: Google Kubernetes Engine, Compute Engine, Cloud Run)와의 통합을 제공하므로 긴밀하게 통합된 솔루션을 쉽게 개발할 수 있습니다. 또한 Cloud SQL은 Cloud SQL에 있는 데이터의 분석 처리에 사용할 수 있는 BigQueryLooker와의 기본 통합도 제공합니다.

패치 적용: 관리형 서비스인 Cloud SQL은 기본 하드웨어와 운영체제가 안정적이고 성능이 우수하며 안전한 최신 상태를 유지할 수 있도록 인스턴스를 자동으로 업데이트합니다. 이러한 업데이트 대부분은 Cloud SQL 인스턴스가 실행되는 동안 수행됩니다. 그러나 특정 시스템 업데이트를 수행하려면 사용자가 업그레이드 활동의 유지보수 기간을 정의할 수 있는 짧은 서비스 중단이 필요할 수 있습니다.

버전 업그레이드: Cloud SQL은 데이터베이스(MySQL) 버전을 업그레이드하는 자동 프로세스를 제공합니다. 또한 사용자는 데이터를 상위 버전의 인스턴스로 마이그레이션하여 주 버전을 업그레이드할 수도 있습니다.  

MySQL용 Cloud SQL에서 MySQL 데이터베이스 인스턴스를 어떻게 만드나요?

자체 관리형 MySQL의 장단점

장점

  1. MariaDB 또는 Percona와 같은 MySQL 생태계의 MySQL 포크를 사용하여 MySQL을 설정할 수 있습니다.
  2. 사용자가 인스턴스, 리소스, 운영체제를 완전히 제어할 수 있으므로 MySQL을 유연하게 구성하고 설정할 수 있습니다. 또한 사용자는 제한 없이 원하는 OS를 사용하고, 원하는 대로 OS를 구성하고, MySQL을 요구사항에 따라 구성할 수 있습니다.
  3. 사용자는 64TB의 최대 스토리지 크기와 같은 Cloud SQL의 제한사항에 의해 제약을 받지 않습니다. 사용자는 64TB의 스토리지 한도를 초과할 수 있고 훨씬 더 높은 컴퓨팅 인프라를 사용하여 MySQL을 호스팅할 수 있습니다.
  4. 사용자는 SUPER 권한을 포함하여 MySQL 인스턴스에 대한 전체 액세스 권한과 sudo 권한을 포함하여 운영체제에 대한 전체 액세스 권한이 있습니다.
  5. 사용자는 Cloud SQL에서 지원되지 않더라도 요구사항에 따라 고가용성 및 복제 토폴로지를 설정할 수 있습니다.  

단점

  1. 사용자는 온프레미스 환경에서 복잡한 하드웨어 인프라, 네트워킹, 데이터 센터 작업을 관리할 책임이 있습니다. 클라우드에서 MySQL을 직접 관리하는 경우에도 사용자는 설정의 복잡성, 영구 디스크 및 인스턴스의 구성, 고가용성 클러스터의 설계 및 관리, 보안, 재해 복구, 확장성을 처리해야 합니다.
  2. 버그와 보안 취약점을 방지하기 위해 데이터베이스 버전, 운영체제 버전, 하드웨어 시스템을 최신 패치로 업데이트하면 상당한 비용, 리소스, 복잡성, 다운타임이 발생할 수 있습니다.
  3. 데이터베이스를 설정할 때 사용자는 데이터베이스 자체뿐만 아니라 모든 레이어에서 보안을 구성하고 관리해야 합니다. 예를 들어 SSL을 사용하여 전송 중 연결을 암호화하고, 인증서를 최신 상태로 유지하며, 저장 데이터를 암호화하고, 데이터베이스에 대한 사용자 및 서비스 계정의 로그인 액세스를 관리합니다.
  4. 인스턴스의 가용성을 보장하기 위해 데이터베이스 시스템의 다양한 레이어가 장애가 있는지 모니터링해야 합니다. 사용자는 모니터링 도구의 설정 및 구성에 추가 리소스를 사용해야 합니다. 오류 발생 시 알리도록 알림을 정의해야 하며, 오류를 해결하려면 수정 조치를 취해야 합니다.
  5. 사용자는 애플리케이션 개발에 집중하는 대신 데이터베이스 설정 및 관리에 상당한 시간과 리소스, 노력을 쏟아야 합니다.

MySQL용 Cloud SQL의 장단점

장점

  1. MySQL용 Cloud SQL은 데이터베이스 전문성이 없는 개발자와 엔지니어도 MySQL 데이터베이스를 만들고 관리, 액세스, 모니터링할 수 있는 사용자 친화적인 인터페이스를 제공합니다. 빠르게 시작할 수 있도록 Cloud SQL은 온프레미스 또는 다른 클라우드에서 기존 MySQL 데이터베이스를 Google Cloud의 MySQL용 Cloud SQL로 마이그레이션할 수 있는 간단한 방법도 제공합니다.
  2. MySQL용 Cloud SQL은 마이크로사이트용 데이터베이스부터 매우 중요한 대규모 엔터프라이즈 애플리케이션, 게임 애플리케이션, 분석 사용 사례용 데이터에 이르는 다양한 애플리케이션의 MySQL 데이터베이스를 호스팅하는 데 필요한 풍부한 기능을 제공합니다. 이러한 풍부한 기능을 사용하면 매우 안정적이고 확장 가능한 애플리케이션을 빌드할 수 있습니다.
  3. Cloud SQL은 보안의 책임을 사용자와 공유합니다. Cloud SQL은 하위 수준의 인프라 및 네트워크에서 보안을 보장하므로 사용자는 상위 수준의 애플리케이션을 구성하고 개발하는 데 집중할 수 있습니다.
  4. Cloud SQL은 커뮤니티 버전에서 즉시 사용할 수 없고 자체 관리형 환경에서 구현하기에 복잡한 비밀번호 유효성 검사 플러그인감사 로깅과 같은 다양한 보안 기능을 제공합니다. Cloud SQL은 이러한 기능을 간소화하고 사용자가 쉽게 사용할 수 있도록 합니다.
  5. Cloud SQL은 데이터베이스와 상호작용하는 다양한 방법을 제공합니다. 사용자는 GUI, CLI, API를 사용하여 최소한의 노력으로 요구사항에 따라 작업을 맞춤설정할 수 있습니다.
  6. Cloud SQL은 BigQuery와 같은 다른 솔루션 및 제품과의 간편한 통합을 제공하므로 최소한의 노력으로 분석 솔루션을 개발할 수 있습니다.
  7. Cloud SQL은 가용성이 높은 인프라, 자가 복구 솔루션, 가장 중요한 연중무휴 24시간 SRE팀을 통해 데이터베이스 인스턴스의 안정성을 책임집니다.
  8. 사용자는 데이터베이스의 운영 태스크에 소요되는 시간과 노력을 단축하고 대신 애플리케이션 개발에 집중할 수 있으므로 비즈니스 요구사항을 보다 효율적으로 충족하는 솔루션을 제공할 수 있습니다.
  9. 데이터베이스 관리를 지원하는 것 외에도 Cloud SQL은 쿼리 통계추천과 같은 기능을 사용하여 데이터베이스 성능을 개선하기 위한 도움말 및 권장사항을 제공합니다. 이러한 기능을 통해 클라우드에서 간편하고 안전하며 비용 효율적으로 데이터베이스를 호스팅하고 관리할 수 있습니다.
  10. Cloud SQL은 데이터베이스와 관련된 문제나 요청에 필요한 지원을 간소화하고 효율화하기 위해 고객 관리 서비스를 제공합니다.

단점

  1. MariaDB 및 Percona와 같은 MySQL 생태계의 MySQL 포크는 Cloud SQL에서 지원되지 않습니다.
  2. 일부 MySQL 기능은 지원되지 않습니다. 지원되지 않는 기능 자세히 알아보기
  3. Cloud SQL에서는 RAM 최대 624GB와 CPU 96개가 탑재된 머신 유형이 지원됩니다. 최대 64TB의 스토리지가 지원됩니다. 데이터베이스에 더 큰 용량이 필요한 경우 현재 유일한 옵션은 자체 관리형 옵션입니다.

Google Cloud는 온프레미스 데이터 센터 사용 중지부터 SaaS 애플리케이션 실행, 핵심 비즈니스 시스템 마이그레이션에 이르기까지 비즈니스 니즈에 맞게 설계된 관리형 MySQL 데이터베이스를 제공합니다.