- 우당탕탕 Cloud 구축과 운영/아키텍트 방법론

[Cloud 인프라 아키텍트 방법론] 클라우드 환경에서의 DB(RDS, MI, 설치형DB)

오돌오돌 오돌뼈 2022. 11. 25. 15:18
반응형

 

- Onpremise DB vs Cloud DB

 Onpremise에서의 DB를 구성한다면 보통 다음의 방법으로 구성하게 된다. DB를 설치할 서버를 구매하여 해당 서버에 DB를 설치하여 구성한다.(물론 특정 서버 형태에 종속된 DB도 있다.) 그리고 이중화가 필요하다면 클러스터 Application도 구매하여 이중화 환경을 구성한다. 기본적으로 물리 서버 비용, DB 라이선스, HA 이중화 라이선스, DB 모니터링 툴 등을 미리 구매하여 준비가 필요해 놓아야 한다.

 반면 클라우드에서 DB를 구성할 때는 미리 준비해야할 건 없다. 클라우드 상품 구매를 위한 지갑만 든든하게 준비해 놓으면 된다. 당연히 물리 서버는 필요 없고 DB 라이선스도 클라우드 환경에서 바로 구매가 가능하다.(BYOL로도 사용이 가능하다.) 그리고 기본적으로 클라우드 환경에서는 HA 설루션도 필요하지 않다. 멀티 AZ 혹은 Region 간 Replication을 지원한다.

 AWS는 Turning Performance Insights 기능을 통해서 DB 성능 개선도 도와주고 있다. 물론 무료 기능은 아니지만 DB성능이나 Slow Query 찾는데 큰 도움이 된다.

 

※ 클라우드 DB의 특징

특징 설명
편의성 DB설치를 위한 다른 과정이 필요없이 바로 설치 및 사용이 가능하다.
DB를 CSP Portal에서 튜닝하고 제어하는것이 가능하다.
패치 관리 대부분의 클라우드 DB들은 패치관리를 자동으로 해준다. 물론 Patch시에 순단 혹은 Downtime이 소요된다.
자유로운 확장 클라우드의 특징인 자유롭게 CPU, Memory, Storage등 자원 증설이 가능하다.
일반적으로 CPU, Memory의 경우, 재배포 Storage의 경우 온라인 증설이 가능하다
가용성 백업은 자동으로 수행된다. DB와 트랜젝션 로그 백업이 자동으로 수행되고 Retention기간을 설정하면 해당 기간동안 보관이 가능하다. 복구 또한 스냅샷으로 간단하게 복구가 가능하다.
비용  아주 작은 DB가 아니라면 비용이 Onpremise에 비해 저렴한 편이다. RI나 Savings Plan을 사용한다면 요금 할인도 가능하다.

- Cloud DB 종류

 다른 상품처럼 클라우드 환경의 DB는 매우 다양하다. DB를 사용할 수 있는 방법은 두 가지라고 할 수 있는데, 첫번째는 AWS의 RDS나 Azure의 MI처럼 CSP에서 공식 제공하는 DB와 두 번째는 CSP에서 제공하는 VM에 직접 DB 라이선스를 설치하여, 사용하는 설치형 DB이다. 설치형 DB는 Onpremise DB와 동일하지만 물리 서버가 클라우드 서버로 대체되는 형태라고 보면 되겠다. 가장 대표적인 AWS, Azure 환경에서의 DB를 간단하게 설명하면 아래와 같다.

  1) AWS환경에서의 DB

     - 관계형 DB : Aurora, RDS, Redshift

     - 키 값 : DynamoDB

     - 인 메모리 DB : ElastiCache, MemoryDB for Redis

  그 밖에 문서, 그래프, 와이드 칼럼 각 특성이 있는 DB들이 굉장히 많다. 자세한 내용은 AWS공식 사이트 참고하는 게 좋다.

  https://aws.amazon.com/ko/products/databases/

 

 일반 적으로 가장 많이 사용되는 DB는 RDS이며 RDS는 MySQL, PostgreSQL, MariaDB, Oracle, MSSQL 사용이 가능하다. 

  2) Azure 환경에서의 DB

    - 관계형 DB : Azure SQL, Managed Instance

    - 비관계형 DB : Cosmos DB

    - 인 메모리 DB  : Cache for Redis

  일반적으로 Azure SQL이나 MI를 주로 사용한다. MS 제품이다 보니 MS SQL에 강점을 가지고 있다. Azure SQL내에는 T-SQL용 분산 쿼리 서비스인 Azure Synapse도 사용이 가능하다. PostgreSQL, MySQL, MaraiDB, MSSQL등 지원하며 Oracle은 지원하지 않고 있다.

  3) 설치형 DB

 

   - 설치형 DB는 OS에 직접 설치하는 방식이기 때문에 DB종류에 제한은 없다. 다만 이중화 구성시 설정이 복잡해지는데, 그 이유는 네트워크 때문이다. 클러스터는 내부에서 IP 등 네트워크 자원을 관리해야한다. 하지만 CSP에서는 네트워크자원을 CSP에서 관리하고 컨트롤하기 때문에, Load Balancer를 도입하거나 CSP/DB의 별도 액션을 진행해야 한다. AWS나 Azure 같은 경우, 공식 사이트를 통해 클러스터 사용 시 설정 가이드를 해주고 있기 때문에 잘 따라서 설정하면 큰 문제는 없다.

  - Azure DB에서 설명했듯, Azure의 경우 MS SQL을 설치형 상품으로 제공을 해준다. VM+SQL이 설치된 형태로 말이다.

 설치형 상품으로 구매하지 않더라도 VM에 SQL이 존재하면 Azure에서 감지하여 Azure Portal에서 라이선스, 백업 등 관리가 가능하다.

 

 - 클라우드 DB를 사용 시 고려해야 할 사항

 일반적으로 인프라 비용을 산정할 때, 가장 큰 비용이 DB 비용일 것이다. 그만큼 클라우드 환경에서 DB를 사용할 때에는 신중하게 고려할 필요가 있다.

 DB라고는 하지만 클라우드는 클라우드다. Host Down 등 이슈 발생 시, 예기치 않은 끊김 현상이 발생할 수 있다.(물론 순단수준의 영향 도일 것이다.) 그리고 Maintenance로 작업이나 업데이트 작업이 필요할 경우, 기한 내에 해당 작업을 수행해야 한다. 업무 중요도가 Critical 한 서비스의 경우에는 다시 한번 고려해보기를 권장한다.

 클라우드 업체에서는 DB 사용에 대해 많은 지원을 해주고 있다. 우선 AWS는 Turning Performance Insights으로 DB 성능개선에 도움을 주고 있으며 Azure 같은 경우에도 자동 튜닝과 Advisor를 통해 DB 운영을 지원해주고 있다.

 

일반적인 Onpremise 운영자는 클라우드에 대한 불신이 많았다. 특히 민감한 DB에 대한 불신이 가장 큰 편이었다. 다만 지금까지 경험해본 클라우드 DB를 바탕으로 판단했을 때, Critical 한 DB가 아니라면 충분히 클라우드 환경에서 사용이 가능하다. 오히려 Onpremise보다 비용적인 측면, 성능 분석적인 측면에서 이득을 볼 여지가 더 많다.

반응형