아키텍쳐 /대용량 아키텍쳐

MySQL Clustering 버전의 새로운 기능들

Terry Cho 2012. 10. 23. 23:29

     본 문서는 MySQL Cluster 버전을 기준으로 한다.

 

MySQL 배포 구조

MySQL 배포 구조는 다음과 같다.



크게 3가지 종류의 노드를 갖는다.

     MySQL Data Node : Data Node는 실제로 데이타를 저장하고, Query 등을 수행하는 역할을 한다.

     MySQL Application Node : 일종의 라우터 역할로, MySQL 클라이언트에 의해서 들어오는 request를 적절한 Data Node로 라우팅 한다.

     MySQL Management Node : 전체 클러스터에 대한 관리 기능을 수행한다.

위의 그림과 같이 Application Node Data Node는 다수가 존재할 수 있다. Application Node는 실제로 데이타를 저장하지 않고 라우팅 하는 역할만 하기 때문에, 부하 분산과 장애시 Fail Over가 가능하고, Data Node 역시 Node간에 데이타를 replication (복제) 하기 때문에, 특정 Node가 장애가 나더라도 전체 서비스에 문제가 없는 Single Point of Failure 가 없는 구조로 고 가용성을 보장한다.

Memcached 기반의 NoSQL

이번 릴리즈에서 재미있는 기능중 하나는 NoSQL이 유행하다 보니, 이 부분에 대한 보강이 이루어졌다.



Memcached NoSQL에 포함시켰는데, memcached MySQL의 맨 앞단에 넣고, MySQL과 통합 시켜 버렸다. Memcached Key/Value 기반의 스토리지 기능을 제공하는데, 메모리 기반이라는 한계로 인하여, 영구적으로 데이타를 저장할 수 없고 또한, 용량적인 한계도 가지고 있었다. 뒷단에 MySQL을 통합함으로써,

     전체 저장 용량을 확장하고

     데이타를 영구적으로 저장할 수 있으며

     MySQL Cluster의 복제 기능을 이용하여, 다른 MySQL과 복제가 가능하게 되서, 데이타 센터내의 복제나, 데이타 센터간의 복제가 가능하게 되었다.

기존에 MySQL을 사용하고 있으면, 운영 경험을 되살려서 쉽게 운영할 수 있으며, memcached NoSQL 계열에서 복잡도가 가장 낮고 사용이 편리하기 때문에 양쪽의 장점을 잘 융합한 형태라고 볼 수 있다.

Multi Site Replication

SNS 등의 영향으로 인하여 시스템이 거대화 되고, 지역적으로 분리된 데이타 센터를 거쳐서 서비스 하는 시나리오 많아짐에 따라 MySQL도 여러 데이타 센터에 걸친 복제(클러스터링)모델을 제공한다.



Multi-Site Replication이라고 하는데, 거의 근 실시간으로 물리적으로 떨어진 데이타 센터간의 데이타 동기화가 가능하다. 물론 네트웍 구간 속도에 대한 상당한 제약 사항을 가지고 있다.

Ÿ  Latency between remote data nodes must not exceed 20 milliseconds

Ÿ  Bandwidth of the network link must be more than 1 Gigabit per Second

데이타 센터간에 고속 네트웍이 없으면 사실상 어려운 설정이다. 그러나 같은 도시 정도의 근거리에 있는 센터라면 충분히 구축이 가능한 복제 모델이다.

 

이외에도,

1) Auto Sharding을 통한 용량 향상

2) Virtualization 환경을 지원 (XenServer와 OracleVM 만 Certi)

3) OnLine 상태에서 정지 없이 Scale out 할 수 있는 기능 (아마도 클라우드 환경에서 Auto Scale Out을 고려 한듯)

과 같이, 기존에 RDBMS가 가지고 있는 한계점을 보완하고, 클라우드 환경에 맞춰진 기능들이 보강된것이 많이 보인다...

물론 검증되고 잘 보강되어야 하겠지만, 이정도면 왠만한 애플리케이션은 NoSQL없이도 충분히 개발이 가능하지 않을까 싶다.