Azure의 MySQL 및 PostgreSQL 데이터베이스 서비스
작동하는 온-프레미스 데이터베이스가 있는 경우 Azure와 같은 클라우드 서비스로 전환을 고려해야 하는 이유는 무엇인가요? 마찬가지로 Azure에서 새 데이터베이스 시스템의 구현을 고려해야 하는 이유는 무엇인가요? 많은 조직에서 이 마이그레이션을 수행하는 이유는 온-프레미스 데이터 센터를 사용하는 것에 비해 클라우드에서 가용성이 높고 스케일링 가능한 서비스를 만드는 것이 쉽고 상대적으로 저렴하기 때문입니다.
스타트업 회사의 경우 현재 온-프레미스의 MySQL 및 PostgreSQL에서 실행되는 데이터베이스는 업무에 중요하지만, 데이터 센터의 규모와 관리 팀의 규모에 따라 제한됩니다. Azure 서비스를 사용하여 이 제한 사항을 해결할 수 있는지와 그런 경우 요구 사항에 최적인 서비스를 조사하려고 합니다.
여기에서는 Azure Database for MySQL, Azure Database for MariaDB 및 Azure Database for PostgreSQL 및 함께 사용할 수 있는 배포 옵션에 대해 알아봅니다. Azure의 가상 머신 또는 컨테이너에서 오픈 소스 데이터베이스를 실행하는 이점과 IaaS(Infrastructure-as-a-Service) 접근 방식에 대해서도 알아봅니다.
가용성
Azure Service Level Agreement(서비스 수준 약정)를 통해 보장되는 가용성은 정확한 구현 세부 정보에 따라 달라지지만 항상 높습니다. 예를 들어 Azure Database for PostgreSQL의 경우 Microsoft는 추가 비용 없이 99.99%의 가용성을 보장합니다. 더 높은 가용성을 위해 유연한 서버를 사용할 수 있습니다.
온-프레미스 네트워크에서 이 가용성을 달성하려면 하드웨어 오류 발생 시 복원력 있는 시스템을 설계해야 합니다. 필요한 사항은 다음과 같습니다.
- 여러 물리적 서버.
- 서버 오류가 발생하면 쿼리를 다시 라우팅할 수 있는 부하 분산 장치입니다.
- 서버 간에 데이터를 공유하는 저장 영역 네트워크 또는 서버 간에 데이터를 복제하는 방법입니다.
- 복원력 있는 네트워크 하드웨어.
- 환경에 맞게 제어되는 데이터 센터입니다.
- 무정전 전원 공급 장치 및 백업 발전기.
이러한 모든 구성 요소는 비용이 많이 들고 구현하고 실행하는 데 기술이 필요합니다. 또한 중요한 관리 리소스를 사용합니다. Azure를 사용하면 이러한 요구 사항이 이미 해결됩니다. 데이터베이스를 생성만 하면 고가용성이 기본으로 제공됩니다.
확장성
사용자층이 증가하면 시스템 수요도 증가합니다. 모든 온-프레미스 시스템에는 최대 용량이 있습니다. 해당 한도에 도달하면 하드웨어를 추가하여 한도를 늘려야 합니다. 용량은 즉시 추가할 수 없습니다. 대신 하드웨어를 구입하고 필요한 운영 체제와 소프트웨어를 설치하며 업데이트를 적용한 다음 새 데이터베이스 인스턴스에 데이터를 추가해야 합니다. 이 모든 작업에는 시간이 걸립니다.
또한 높은 수요는 일시적인 경우가 많습니다. 예를 들어 마케팅 캠페인을 성공적으로 실행하면 트래픽이 최대가 되지만, 그 이후에는 다시 수요가 낮아집니다. 온-프레미스 설정에서는 이러한 최대 사용량에 맞게 시스템을 디자인해야 합니다. 즉, 대체로 시스템 사용률이 낮지만 여전히 비용이 많이 들고 유지 관리가 필요합니다.
클라우드를 사용하면 이 문제를 해결하기가 훨씬 쉬워집니다. 시스템이 용량에 도달하면 더 큰 계층으로 이동하거나 가상 머신을 추가하는 등의 방법으로 매우 신속하게 대응할 수 있습니다. 수요가 저하되면 용량을 제거하여 빠르게 비용을 절감할 수 있습니다. Azure에서는 사용하는 용량에 대해서만 비용을 지불합니다.
IaaS 및 PaaS
필요한 제어 수준에 따라 Azure에서 데이터베이스를 구현할 때 두 가지 이상의 접근 방식 중에서 선택할 수 있습니다.
- IaaS(Infrastructure as a service) IaaS 접근 방식을 선택하는 경우 Azure에서 실제 인프라를 실행합니다. 가상 머신 및 가상 네트워크를 만들어 연결하고 필요한 소프트웨어와 데이터를 설치합니다. 가상 머신을 실행하는 것은 실제 서버를 실행하는 것과 같습니다. 운영 체제와 소프트웨어를 유지 관리하지만 데이터 센터, 환경 제어 또는 인터넷 연결에 대해 걱정할 필요가 없습니다.
- PaaS(Platform as a service) PaaS 접근 방식을 선택하면 Azure에서 물리적 인프라, 필요한 가상 서버 및 데이터베이스 소프트웨어를 실행합니다. 이 구성 요소에 대한 구성 또는 유지 관리 작업을 수행할 필요가 없습니다. 예를 들어 Azure는 서비스 팩을 자동으로 적용합니다. 데이터베이스 관리에 집중할 수 있습니다. Azure에서 오픈 소스 데이터베이스를 실행하기 위한 PaaS 제품에는 Azure Database for MySQL, Azure Database for MariaDB 및 Azure Database for PostgreSQL가 포함됩니다.
MySQL, MariaDB 및 PostgreSQL용 Azure Database 서비스는 무엇인가요?
MySQL, MariaDB 또는 PostgreSQL을 기반으로 하는 온-프레미스 데이터베이스 시스템이 있고 데이터베이스를 클라우드로 이동하려는 경우 Azure Database for MySQL, Azure Database for MariaDB 또는 Azure Database for PostgreSQL를 사용하는 것이 좋습니다. 이 서비스를 사용하여 새 데이터베이스를 구현할 수도 있습니다. 예를 들어 개발자와 데이터베이스 관리자가 이 데이터베이스 서버를 사용해 본 경험이 있으며 새 시스템을 학습하는 데 시간을 할애하지 않으려면 Azure Database for MySQL, Azure Database for MariaDB 또는 Azure Database for PostgreSQL를 사용하여 직원이 기존 지식을 사용할 수 있게 합니다. Azure Database for MySQL, Azure Database for MariaDB 및 Azure Database for PostgreSQL은 PaaS 시스템이므로 가상 서버나 네트워크를 설계하거나 구현하는 데 신경 쓸 필요가 없습니다.
Azure Database for MySQL이란?
Azure Database for MySQL은 MySQL Community Edition을 기반으로 하는 Azure 클라우드에서 MySQL의 PaaS 구현입니다. 현재 요구 사항에 따라 MySQL 버전 5.6, 5.7 및 8.0에 대한 지원 중에서 선택할 수 있습니다. MySQL이 발전됨에 따라 추가 버전에 대한 지원이 제공됩니다.
Azure Database for MySQL에는 다음과 같은 특징이 있습니다.
- 기본 제공되는 고가용성 기능.
- 예측 가능한 성능.
- 신속하게 수요에 대응하는 간편한 스케일링.
- 미사용 상태의 데이터와 동작 중인 데이터를 모두 보호.
- 최근 35일 동안 자동 백업 및 특정 시점 복원
- 엔터프라이즈 수준 보안 및 법률 준수.
시스템에서 종량제 가격 책정을 사용하므로 사용한 양만큼만 요금을 지불하면 됩니다.
다음 두 가지 배포 옵션 중에서 선택할 수 있습니다.
Azure Database for MySQL - 유연한 서버
Azure Database for MySQL - 유연한 서버는 여러 가용성 영역에 데이터베이스를 복제하여 가용성을 향상시킵니다. 또한 데이터베이스 서비스를 신속하게 시작하고 중지하여 비용을 최적화할 수 있습니다.
Azure Database for MySQL은 하드웨어, 네트워크 구성 요소, 가상 서버, 소프트웨어 패치 및 기타 기본 구성 요소를 관리할 필요 없이 최대 규모의 데이터베이스로 스케일 업되는 글로벌 데이터베이스 시스템을 제공합니다.
Azure Database for MariaDB란?
MariaDB는 Oracle이 MySQL을 인수함에 따라 커뮤니티에서 생성된 MySQL의 포크입니다. Azure Database for MariaDB는 Azure Cloud에 구현된 MariaDB의 PaaS입니다.
MariaDB는 MySQL의 드롭인 교체로 설계되었으므로 클라이언트 앱을 광범위하게 다시 코딩하거나 데이터베이스 스키마를 변경하지 않고도 MySQL 데이터베이스를 MariaDB 데이터베이스로 교체할 수 있습니다. MariaDB의 많은 기능이 MySQL에서와 동일합니다. 예를 들어 다음과 같습니다.
- 데이터베이스 구조 및 인덱스
- 데이터 정의 명령
- 클라이언트 프로토콜, 구조 및 API
mysqldump
및mysqladmin
프로그램
MySQL과 MariaDB 간의 이러한 유사성은 MySQL을 Azure Database for MySQL로 마이그레이션하는 작업과 MariaDB에서 Azure Database for MariaDB로 마이그레이션하는 작업이 매우 유사하다는 것을 의미합니다. 시스템 간에는 몇 가지 차이점이 있습니다. 예를 들어 MariaDB는 ColumnStore와 Redis Cache를 지원하며, 둘 다 성능을 최적화하는 데 사용할 수 있습니다.
참고
MySQL 및 MariaDB에서 Azure로 데이터베이스를 마이그레이션하는 작업은 매우 유사하므로 이 과정에서 함께 다룹니다.
중요
이 문서를 작성할 당시에는 Azure Database for MariaDB에 대한 유연한 서버 배포 옵션이 없습니다.
Azure Database for PostgreSQL이란?
PostgreSQL을 선호하는 경우 Azure Cloud에서 해당 데이터베이스 서버의 PaaS 구현을 가져오도록 Azure Database for PostgreSQL을 선택할 수 있습니다. 그러면 MySQL 서비스와 동일한 가용성, 성능, 스케일링, 보안 및 관리 이점이 제공됩니다.
다음 세 가지 배포 옵션 중에서 선택할 수 있습니다.
Azure Database for PostgreSQL - 유연한 서버
Azure Database for PostgreSQL - 유연한 서버는 MySQL 유연한 서버와 유사한 이점을 제공합니다. 이 서버에서는 최고 수준의 가용성을 제공하며 편리하게 다시 시작할 수 있습니다.
Azure에서 MySQL, MariaDB 및 PostgreSQL을 실행하기 위한 IaaS 옵션
IaaS 접근 방법을 사용하여 클라우드에서 물리적 아키텍처를 복제합니다. 시스템의 기반이 되는 운영 체제 및 소프트웨어에 대한 제어력을 강화하려면 IaaS를 선택할 수 있습니다.
그러나 요구 사항과 기존 시스템의 복잡성에 따라 IaaS 접근 방식을 구현하기 위해 채택할 수 있는 몇 가지 접근 방식이 있습니다.
리프트 앤 시프트
한 가지 접근 방식은 데이터 센터와 일치하는 가상 네트워크 인프라를 만들어 클라우드에서 온-프레미스 아키텍처를 미러링하는 것입니다. 온-프레미스 시스템의 서버마다 가상 머신을 생성합니다. 가상 머신에 데이터베이스 관리 시스템 소프트웨어(MySQL, MariaDB 또는 PostgreSQL)를 설치하고 구성합니다. 그런 다음 클라이언트 코드 또는 구성을 거의 변경하지 않고 시스템을 클라우드로 리프트 앤 시프트합니다.
이 전략을 사용하면 마이그레이션의 단계별 프로세스를 따릅니다. Azure 네트워크 게이트웨이를 사용하여 온-프레미스의 다른 요소를 유지하면서 시스템 일부를 점진적으로 클라우드로 이동합니다. 이 하이브리드 접근 방식을 사용하여 각 단계에서 시스템을 안정화하고 필요한 경우 롤백합니다.
미리 빌드된 가상 머신 사용
마켓플레이스에는 MySQL, MariaDB 및 PostgreSQL 서버에 대해 미리 구성된 가상 머신이 포함되어 있습니다. 이 이미지는 데이터베이스 서버 소프트웨어를 직접 설치할 필요가 없기 때문에 시간이 절약됩니다. 데이터베이스 가상 머신을 설정하는 경우 마켓플레이스에 올바른 버전의 데이터베이스 소프트웨어가 있는 이미지가 있는지 확인하고 사용을 고려합니다.
사용자 지정 가상 머신 이미지를 Azure에 업로드한 다음 가상 머신을 만드는 데도 사용할 수 있습니다. 이 이미지에는 원하는 데이터베이스 소프트웨어 및 데이터베이스 자체도 포함될 수 있습니다. 자세한 내용은 자습서: Azure PowerShell을 사용하여 Azure VM의 사용자 지정 이미지 생성를 참조하세요.
MySQL, MariaDB 또는 PostgreSQL 컨테이너 사용
고려할 수 있는 또 다른 가상화 기술은 컨테이너화입니다. 컨테이너는 가상 머신과 비슷하지만, 호스트 머신과 운영 체제를 공유합니다. 컨테이너는 가상 머신보다 작으므로 호스트 머신에서 더 많은 컨테이너를 실행하고 새 컨테이너를 더 빠르게 시작할 수 있습니다. 그러나 운영 체제가 공유되는 등의 이유로 Windows 머신에서 Linux 컨테이너를 실행할 수 없습니다. 실제 서버에서 컨테이너를 실행하려면 Docker와 같은 컨테이너 호스트 소프트웨어가 필요합니다. 컨테이너는 이미지에서 배포되며 가상 머신과 마찬가지로 해당 이미지에는 MySQL, MariaDB 및 PostgreSQL과 같은 데이터베이스 소프트웨어가 포함될 수 있습니다.
Azure에서 적은 수의 컨테이너를 실행하려면 가상 머신에 Docker를 설치합니다. 또는 Container Instances 서비스를 사용하는 경우 사용자 고유의 가상 머신을 설정하지 않고 Azure에서 컨테이너를 실행할 수 있습니다. 서로 통신해야 하는 많은 수의 컨테이너를 쉽게 관리하려면 Azure Kubernetes Service를 사용합니다.