블로그 이미지
평범하게 살고 싶은 월급쟁이 기술적인 토론 환영합니다.같이 이야기 하고 싶으시면 부담 말고 연락주세요:이메일-bwcho75골뱅이지메일 닷컴. 조대협


Archive»



Amazon RDS 성능은 물리 서버의 30% 정도일 뿐!

Amazon RDS에서 DB 테이블 재구성하는 이슈가 있어서 물리 장비 테스트 후 

Amazon RDS에 적용한 적이 있습니다. 사용하고 있는 Amazon RDS 인스턴스가 성

능이 나쁘지 않은만큼 물리 장비 대비 크게 뒤쳐지지 않을 것이라고 예상을 했습니다.

그러나, 실제 적용해본 결과, 물리 서버 대비 30%정도 퍼포먼스만 발휘하는 결과가 

나왔습니다. 로컬 물리 DB에서 15분 걸리던 작업이, Amazon RDS에서는 45분 이상 

소요가 된 사례가 있습니다. 예상 시간보다 상당히 오래 걸려서 크게 당황을 했었죠.

무엇보다 MySQL은 단일 쓰레드에서 Nested Loop 방식으로 SQL을 처리하기 때문

에, CPU의 성능이 전체적인 DB 퍼포먼스에 직접적인 영향을 미칩니다. 병렬 처리가 

없다는 MySQL 특성이 Amazon RDS에서 가장 큰 병목이 되는 것입니다.


http://dev.kthcorp.com/wp-content/uploads/2012/11/H3_2012_double_sided.pdf

403페이지 내용中

본인은 구글 클라우드의 직원이며, 이 블로그에 있는 모든 글은 회사와 관계 없는 개인의 의견임을 알립니다.

댓글을 달아 주세요

  1. 마크 아벨 2013.01.15 21:49 신고  댓글주소  수정/삭제  댓글쓰기

    조대협님 안녕하세요! RDS에서 궁금한게 있습니다.

    ec2-webserver는 copy해서 미국, 유럽, 아시아에 동일하게 구성하고 route53로 사용자와 가까운 elb-ec2-webserver로 접속하게 해서 부하도 분산하고 빠른 서비스를 할 수 있게 구성이 가능하더라구요..
    하지만 rds는 미국이나 아시아 등.. 한 지역에서만 서비스가 가능한데 rds 서버와 거리가 먼 사용자가 빠르게 데이터를 전송 받을려면 memcached나 cloudfront? 같은 서비스로 연결 한다거나... 좋은 방법이 무엇이 있을까요?
    어떤 단어로 구글링을 해봐야 할까요? 힌트를 좀 주실 수 있으세요?

    • 조대협 2013.01.16 09:52 신고  댓글주소  수정/삭제

      시나리오를 잘 이해하지 못하겠습니다.
      예를 들어 미국에만 서버(RDS)를 넣고, 전세계 커버를 하는 경우에는 Latency를 줄이기 위해서는 Cloud Front등의 CDN이 좋습니다만, 시나리오가 제약 됩니다. HTML이나 정적인 파일을 캐슁하기 때문입니다.

      memcached는 DBMS성능이 낮은 것을 애플리케이션적으로 올리기 위한 기법입니다.

      거리가 먼 사용자에게 빠른 서비스를 제공하기 위한 방법은 ADN 과 같은 별도의 네트워크 개념이 있는데, (CDN과 유사한) 아마존에는 해당하지 않습니다. 질문을 조금더 구체화 해주시면 좋겠습니다.

  2. 마크 아벨 2013.01.16 23:50 신고  댓글주소  수정/삭제  댓글쓰기

    CDN과 memcached 추가 설명 감사합니다.

    시나리오는 글로벌 웹 사이트입니다.
    카테고리는 세계 나라 수 만큼 200여개로 나누어져 있고, 한 나라는 여러개의 하위 카테고리를 가지고 있습니다.
    사용자는 모든 나라 카테고리에 포스팅을 할 수 있고 세계 모든 포스팅을 검색할 수도 있습니다.

    AWS에서 테스트 해 보았습니다.
    1. 오픈소스 PHP CMS를 미국 EC2에 설치하고 ELB에 붙였습니다. RDS도 같은 가용성존에 구성했습니다.
    2. 한국에서 접속이 다소 느려서 CloudFront 설정을 추가하였으나 로그인 등의 php에서 문제를 발생을 확인하고 /files 폴더만 사용하기로 합니다.
    3. 한국에서 접속이 다소 느린 점을 해결해 볼려고 합니다. Route 53이 사용자와 가까운 Region의 ELB로 접속시키는 기능을 사용하기 위해 미국 EC2 이미지를 사용해서 유럽과 싱가포르에 같은 웹 서버를 올려서 미국에서 접속하는 사용자는 미국 서버에 한국에서 접속하는 사용자는 싱가포르 서버에 접속하게 합니다.
    4. RDS는 Master와 Read Replica로 구성했지만 미국에만 있어서 유럽이나 아시아권 사용자의 쓰기/읽기 데이터를 원활하게 제공하기에 부족할 것 같은 생각을 하게 됩니다.

    그래서 RDS도 미국권, 유럽권, 아시아권으로 나누면 좋겠다고 생각하게 되었는데 이렇게 나누어 서비스를 해보자 하는 생각이 맞는 걸까요?

    • 조대협 2013.01.17 19:03 신고  댓글주소  수정/삭제

      서비스를 권역별로 나눠서 하신다면, 전 US,EU,APAC등에 나눠서 배포 하시는게 좋구요.
      전세계를 단일 서비스로 하신다면, EU나 US West에 배포 하신후에, CDN을 이용해서 정적 컨텐츠만 캐슁 하시는게 좋겠습니다.

      전세계를 여러개의 데이타 센터로 커버하는 시나리오는 데이타센터간에 데이타 동기화(복제)가 필요한데, 이경우 아키텍쳐 복잡도가 매우 높아집니다.

      상식적으로 생각하실때, 미국서비스들 한국에서 사용하실때 쓰기 어려울만큼 느리다고 생각하신적이 있으신지요? 대부분의 기업이 미국에만 데이타 센터를 놓고도 전세계 커버를 충분히 합니다. (물론 CDN을 사용합니다만..)

      글로벌 배포 관점에서 데이타 센타를 분산 배포하고 사용자를 여기저기 데이타 센터에 옮겨가면서 데이타를 복제하는 것은 아주 난이도가 높은 작업이기 때문에 추천하고 싶지 않습니다.

  3. 마크 아벨 2013.01.18 12:03 신고  댓글주소  수정/삭제  댓글쓰기

    답변 감사합니다^^

    CDN을 잘 활용하는 방법을 찾아보겠습니다.