Skip to main content

Cloud Server 의 단점 (Virtual Machine의 구조적 한계)

AWS 의 EC2를 비롯하여 국내에도 많은 클라우드 서버가 생겨나고 있다.

클라우드 서버의 장점이라면 Virtual Server 를 할당받는 것이기 때문에 할당을 빨리 받을 수 있고, Real 장비를 독집적으로 받는게 아니기 때문에 비용도 절감이 된다.

하지만 Virtual Server 의 문제점은 항상 존재한다.
왜냐하면 하나의 Real Machine에 여러개의 Virtual Machine이 동작하기 때문이다.

Amazon 을 비록한 업체들은 하나같이 제품 설명을 이렇게 한다.
"Memory, CPU 자원을 분산했기 때문에 다른 VM에 성능 영향을 끼치지 않습니다."
일단 이건 거짓말이다. ㅎㅎ (직접 설계한 Hardware를 사용한다면, 개선은 가능하겠다.)

아래는 직접 겪은 일이다.
-
퇴근하기 전 금요일 오후 ... Tomcat을 재시작 했는데,  JDBC가 Connection-Fail을 뱉는다.
왜일까?
DB IP를 잘못 입력했을 수도 있고, DB가 shutdown 됐거나, DB에 Max-Connect 수를 초과했기 때문에 접속이 불가능 할 수 있다.

하지만 telnet, ping 모두 정상적으로 동작한다.
심지어 DB-GUI 툴을 사용하여 (예를 들면 Query Brower, MySQL Workbench) 접속도 가능하고, Query문에 대한 결과도 나온다.

그런데 이상하게 Tomcat만 띄워서 JDBC로 접근하려 하면 Connection Fail이 뜬다.

결론은 DB(Software)문제가 아닌 클라우드 장비의 근본적인 구조적 문제였다.

해당 클라우드 장비에는 여러 VM이 떠 있었고, 다른 VM에서 Memory를 많이 점유하고 있었기 때문에, JDBC에서 Connection을 맺으려 하면, Memory 부족으로 Connection-Fail이 떨어진 것이다.
때문에 내가 근무하는 회사에서는 Dev,Alpha 프로젝트만 Cloud를 사용하는 것으로 알고 있다. 
리얼은 따로 독립된 장비를 사용한다.
때문에 애꿎은 DBA분, 서버개발자 분들만 하루 이상 고생을 하셨다. (클라우드 관리팀에서 Memory, CPU 사용량 체크를 실시간으로 해야 맞는 듯 하다.)

결론: 
Cloud 장비를 사용하는건 좋다. 비용적으로나, 지원, 편의성 등등 ... 
하지만 독립된 Real-Machine을 사용하는건 훨~씬 더 좋다. 
그렇다고 Cloud-Server 가 안좋다는 건 아니다. 

Comments