몇년 전 서버를 구축할 때 까지만 해도 서버를 하나 구입해서 거기에 리눅스를 올리고, 원하는 서버를 올려서 구축했던 기억이 있다. 이게 2000년대 초 였으니, 십여년도 지난 일이고, 서버에 대한 나의 마지막 기억이기도 하다.





시간이 흘러 서버에 관해서 호스팅, 가상 서버, 유틸리티 컴퓨팅, 클라우드 등 다양한 개념이 생겨나고, 점점 이해를 못하고 있다는 것을 깨닳았다. 이에 자체적으로 학습하고 정리해 보았다.


개념의 등장 순서에 따라 나열해 보았다.


1. Physical Server (물리 서버)


태초에 서버-클라이언트 구조가 만들어졌을 때, 개발자들은 서버는 서버대로 구축하여야만 했다. 이말인 즉은, 서버 하드웨어를 구입해서 자신만의 서버를 구축해야 했음을 의미한다.




이렇게 구입한 서버에 서버 OS를 설치하고, 자신이 원하는 서버를 설치하고 (예를 들면 http 서버, ftp 서버등), 이런 식으로 서버를 구축하기 위해서는 많은 초기 비용이 발생할 수 밖에 없는 구조였다.


독립적인 서비스를 만들어 낼 때마다 물리적인 서버를 추가로 구매해야만 했다.


5개의 독립적인 서비스를 위해서는 5개의 독립적인 서버를 구매해야만 했다.


여기서 낭비가 있는 부분이 있는데, 5개의 서버가 항상 100%의 사용률로 운영되는 것은 아니라는 점이다. 하나의 물리 서버에서 서비스가 5% 사용률로 도는 경우 서버의 나머지 95%는 놀고 있는 경우가 발생해 낭비가 발생하게 된다.


비용은 비용대로 들기에 흔히 말하는 가성비가 나오지 않는 것이다.

이에 하나의 물리 서버에 가상으로 서버들을 올리는 VM(Virtual Machine)이 소개되기 시작했다.



2. Virtual Server (가상 서버)


기존 물리 서버의 낭비(?)적인 면을 극복하기 위해 Virtual server가 소개되기 시작했다. 이는 물리 서버 위에 Virtual Layer를 두어 여러 컴퓨터가 있는 것과 같은 효과를 가지게 된다.



위는 하나의 예인데 하나의 물리 서버 안에 5개의 가상 서버를 두어 마치 독립적인 5대의 서버가 돌아가고 있는 것 처럼 보이게 만든 것이다. (즉, 물리적인 서버는 하나지만 밖에서 볼때는 5대의 서버가 있는 것 처럼 보인다.)


이와 같이 했을 때 장점은 다음과 같다.

-. 비용적인 면 : 기존 물리 서버를 5대 두었을 때 대비해서 비용은 1/5로 줄어든다.

-. 성능적인 면 : 사용량이 적을 때, 예를 들어 5대의 가상 서버가 각각 5%의 사용률만 보인다면 총 25%만 사용하는 것이므로 하나의 물리 서버 위에서 충분히 돌아갈 수 있고, 성능 저하가 없다.

(단, 각 서버가 사용률이 100%로 돌아간다면 그 성능은 하나의 물리 서버에서 돌아가는 것 보다는 제한될 수 있다.)


이로써 서버를 가지고 있는 사람들은 유휴 자원을 가상 Layer를 통해 분리할 수 있게 되었고, 남는 자원에 대한 활용에 대해 생각해 보게 된다.



3. Utility Computing (유틸리티 컴퓨팅)


유틸리티 컴퓨팅의 정의는 다름과 같다.


컴퓨터의 하드웨어나 소프트웨어를 사용한 만큼 요금을 지불하는 방식

[네이버 지식백과] 유틸리티 컴퓨팅 [Utility Computing] (두산백과)

가상 서버를 통해 유휴 자원을 독립적으로 구성하고 이를 돈을 받고, 서비스를 하는 개념이다.

기술적인 면이라기 보다 가상 서버를 통해 발생한 유휴 자원을 활용하는 방안이라 단어 개념만 보고 자세한 학습은 하지 않았따.



 4. Cloud (클라우드)


가상 서버를 통해 어느 정도 유휴 자원을 효율적으로 사용할 수 있게 되었지만, 아직까지 여기에도 제약 사항이 아직 존재한다.

가상화의 비율을 고정해 놓은 상황이기 때문에 하나의 물리 서버에서 예를들어 20%로 제약해 놓은 자원을 그 이상이 필요하더라도 더 사용하지 못하는 경우가 생기게 된다.


이를 극복하기 위해 클라우드가 소개되었다. 유휴 자원을 서버 상황에 따라 유동적으로 사용할 수 있게 만든 서비스이다. 예를 들어, 20%, 20%, 20%, 20%, 20% 로 구분지어 만들어 놓은 가상 서버의 경우 20% 의 성능을 넘어가지 못하지만 클라우드의 경우 5%, 95%, 0%, 0%, 0% 등으로 그 사용량에 따라 유동적으로 자원 밸런싱(balacing)을 할 수 있게 된 것이다. 

(가상 서버가 하나 빠지더라도 그로 인해 발생한 유휴 자원을 다른 가상 서버에서 사용할 수 있게 된다.)




 현재는 이와 같은 클라우드 방식의 hosting이 대세를 이루고 있는 상황이고, 대표적인 해외 서비스로는 아마존(Amazon)의 AWS(Amazon Web Service), 마이크로소프트(Microsoft)의 Azure 등이 있고, 국내 서비스로는 KT의 유클라우드(uCloud), 가비아(gabia)의 g클라우드(gCloud)등이 있다.


-. Cloud 서비스 기본 최저 스펙 가격 비교.

-. AWS Instance 에 ssh로 접속하기 (PuTTY)

-. AWS (Amazon Web Services) Port 열기.


Reference (참고 문헌)


[BloterTV: 테크포럼]②알쏭달쏭, 가상화와 클라우드