우리는 인터넷을 통해 수많은 웹사이트를 검색하고 돌아다닐 수 있습니다. 온라인 게임에 접속할 때, 어딘가에서 자료를 다운로드받을 때에도 마찬가지입니다. 이렇게 어딘가에 있는 정보와 자료들을 가져올 수 있었던 것은, 말 그대로 어딘가에 이러한 정보를 저장할 수 있는 공간이 존재한다는 뜻일 겁니다.
우리가 어떠한 정보를 얻기 위해서 정보가 위치한 장치로 요청을 보내고 결과적으로 원하는 데이터를 받아오게 되는데, 여기서 데이터가 저장된 장치를 서버(Server)라고 부릅니다. 다시 말해 우리는 인터넷 통신으로 서버에서 원하는 정보(데이터)를 받아오게 됩니다.
서버의 역할은 굉장히 광범위합니다. 누구든지 접속할 수 있는 웹 사이트를 운영하기 위해서 사용되기도 할 뿐만 아니라, 이미지나 동영상을 빠르게 스트리밍하기 위한 서버, 데이터베이스 전용으로 운영되는 서버, 데이터를 백업하고자 내부적으로 구성된 서버와 같이 다양한 목적의 서버들이 존재합니다.
이름으로 보면 무척 대단해 보이지만, 사실 우리가 사용하는 PC와 동일하다고 봐도 좋습니다. 집에 설치된 데스크톱 PC만으로도 네트워크만 연결되어 있다면 누구나 서버를 구축할 수 있기 때문입니다. 물론 실제로 서비스되는 서버 장치는 안정적인 서비스를 위해서 일반 데스크톱 수준의 PC를 사용하지 않습니다. 하드웨어는 물론 소프트웨어상으로도 일반 PC와는 다른 모습을 띕니다. 케이스의 경우 보통 랙 마운트(Rackmount)라는 규격화된 케이스를 사용하는데, 이는 여러 대가 될 수 있는 서버를 공간 효율 및 관리상에 있어서 겹쳐놓기 쉬워서이기도 하고, 부품 교체가 용이하기 때문이기도 합니다.
서버에 사용되는 운영체제 역시 일반 소비자가 사용하는 Windows나 macOS같은 운영체제 보다 오랜 시간 운용에 있어 더 안정적이고 지원 기간이 긴 운영체제를 사용합니다. 대개 Unix/Linux 계열의 운영체제(RedHat, Debian, Ubuntu, CentOS 등이 있다)나 Windows Server 운영체제 등을 사용합니다.
정보와 데이터를 실시간으로 주고 받아야 하는 서버 특성 상 지속적으로 사용 가능한 상태가 되어야 하기 때문에 가정에서 서버를 운용한다는 것은 여간 쉬운 일이 아닙니다. 서비스 마다 다르겠지만 대부분 언제 어디서 얼마나 들어올지 모르는 사용자 특성 상 서버는 24시간 동안 서비스되어야 하기 때문에 전기비 감당은 물론 지속적인 하드웨어 관리가 필요할 것입니다. 접속자가 갑자기 많아진다면 어떨까요? 아파트나 일반 가정에서 사용되는 인터넷망은 애초에 수많은 사용자의 동시 접속에 최적화 되어있지 않기 때문에 망 제공 업체에서 사용량에 제한을 둘 수도 있습니다. 또한 별도의 서비스를 신청하지 않는 한 IP(자신의 네트워크에 할당된 주소)는 매번 유동적으로 바뀌기 때문에 다른 사용자가 해당 네트워크로 진입하는 데 어려움을 겪을 수도 있습니다. 서버가 계속 켜져있다면 그만큼 팬 소음은 장난 아닐 것이고, 발생하는 열로 인해 냉방 시설이 필요할 정도로 신경 써야 할 항목들이 많습니다.
그래서 서버는 회사 내부에 독립적인 공간에 설치되거나, 아니면 수십, 수백 대의 서버가 몰려있는 하나의 장소에 설치하기도 합니다. (아무래도 모아두면 중앙 집중화된 관리가 가능해지겠죠?) 보통 여러 대의 서버를 통합 관리, 운영할 수 있도록 공간을 임대해주는데, 이를 IDC(Internet Data Center) 또는 데이터 센터(Data Center)라고 부릅니다.
서버를 구축하려면 먼저 IDC에 설치할 서버 PC를 구매하거나 임대해야 하는데, 이러한 서버 구매와 임대를 대행해주는 업체가 바로 호스팅 업체입니다. 대표적으로 국내에는 카페24, 가비아 등이 있고 해외에는 고대디, 블루호스트 등의 업체가 있습니다.
IDC 서버 호스팅은 기업 사용자가 아니라면 비용이 만만치 않습니다. 여기에는 일반적인 하드웨어 구매 비용을 포함하여 매달 빠져나갈 수 있는 운영비 또한 고려해봐야 합니다. IDC에 설치하는 서버는 적어도 대규모 트래픽을 처리해야 하는 수준이라면 모르지만, 만약 동시 접속자가 100명도 채 안되는 사이트를 운영한다면 어떨까요? 소규모 웹 사이트를 운영하는 것에 비해 사양 높은 서버를 구성할 필요는 없을 것입니다.
다행히도 소규모 서버를 저렴하게 구축하기 위한 방법은 아주 많습니다. 앞서 말씀드린 방법은 서버 장비 자체를 구매하고 임대하여 모든 자원을 사용하는 방법입니다. 이를 단독 서버 호스팅이라고 합니다. 하지만 대부분의 호스팅 업체에서는 소규모 운영자를 위해 한 대의 서버를 여러 대의 서버로 활용 가능하도록 가상의 영역을 할당시켜줍니다. 쉽게 말해 한 대의 서버의 자원을 다른 사용자와 공유하여 사용하는 것입니다. (물론 각 사용자의 영역은 안전하게 보호됩니다.) 이렇게 되면 서버 성능은 낮아지더라도 최소한 운영 가능한 수준의 서버를 저렴한 가격에 이용할 수 있게 됩니다. 이러한 호스팅을 가상 사설 서버 호스팅 또는 VPS 호스팅(Virtual Private Server)이라고 부릅니다. (이는 클라우드 서버 호스팅과 비슷하면서도 다릅니다. 클라우드 호스팅은 별도의 포스트에서 설명드리겠습니다.)
위에서 언급한 호스팅 방법을 통틀어 서버 호스팅(Server Hosting)이라고 부르는데요, 공통점으로는 서버 자원을 할당받았다는 것과, 자신의 서버에 직접 접속할 수 있어 운영 가능한 모든 것을 자유롭게 작업할 수 있다는 점을 들 수 있습니다.
웹사이트 운영을 위한 전용 호스팅 서비스 또한 존재합니다. 서버 호스팅 역시 적지않은 운영 비용이 요구되기 때문에 소규모 웹사이트를 운영하는 데에는 웹 서비스에 최적화된 웹호스팅 서비스를 사용하는 경우도 있습니다. 이를 웹 호스팅(Web Hosting)이라고 합니다. 단, 이 서비스는 데이터베이스 운영이나 파일 서버, 게임 서버와 같은 목적으로는 사용되지 못합니다.
웹 호스팅은 다른 호스팅 서비스에 비해 가장 저렴하다는 장점이 있지만, 일반적으로 트래픽(일정 시간 동안 서버에서 처리되는 데이터의 양)에 제한을 두어 트래픽 초과 시 추가 비용을 요구하기도 하고, 제공되는 서버 사양이 영 좋지 못하여 웹 페이지 처리 속도가 다른 호스팅에 비해 느립니다. (물론 서비스 가격대에 따라 제한되는 수준이 달라지기도 합니다.) 또 하나의 특징은 서버 관리자가 서버 운영의 전체 권한을 가질 수 없어서 자유롭게 서버를 커스터마이징 할 수 없다는 점이 있습니다. 전체적으로 보면 단점이 많아보이지만 서버 운영(웹 서비스 설치, 보안 관리 등)과 같은 복잡한 관리는 호스팅 업체가 대신해주기 때문에 서비스 형식에 따라 웹 호스팅을 선호하는 경우도 있습니다.
여기서는 일반적으로 사용되는 서버 호스팅과 웹 호스팅에 대해서만 알아봤습니다. 간략히 정리해보자면 다음과 같습니다.
분류 | 서버 호스팅 | 웹 호스팅 | |||
---|---|---|---|---|---|
세부 분류 | 단독 서버 호스팅 (코로케이션) | VPS 호스팅 (가상 사설서버 호스팅) | 클라우드 호스팅 | 일반 웹 호스팅 | 단독 웹 호스팅 (호스팅 업체마다 다름) |
운영 비용 | ●●●● (임대/구매 여부에 따라 다름) | ●●● | ●● (종량제 기준) | ● | ●●● |
설치 비용 | ●●●● | ●● | ● (거의 없음) | ●●● | ●●● |
트래픽 비용 | ● (거의 없음) | ●● | ● (사용량에 따라 부과) | ●●●● | ● (거의 없음) |
임대 기간 | 1개월 또는 1년 단위/무제한 | 1개월 또는 1년 단위 | 필요할 때만 사용 | 1개월 또는 1년 단위 | 1개월 또는 1년 단위 |
할당 자원/성능 | ●●●●● | ●●● | 유동적 변경 가능 | ●● | ●●●●● |
사양 변경 유연성 | ● | ●● | ●●●●● | ●●●● | ●● |
설치/운영 난이도 | ●●●●● | ●●● | ●●●● | ● | ●● |
서버 관리 난이도 | ●●●●● | ●●● | ●●●● | ● (거의 없음) | ●● |
보안 구성 난이도 | ●●●●● | ●●●● | ●●● | ● (호스팅 업체에 의존) | ● (호스팅 업체에 의존) |
서비스 연동성 | ●● | ●● | ●●●●● | ●●● | ●● |
추천 규모 | 대규모 | 중규모 | 중-대규모 | 소규모 | 중규모 |
독점 사용 | 가능 | 불가능 | 가능(독점운영 시 비용 증가) | 불가능 | 가능 |
이외에도 목적과 규모에 따라 여러가지 호스팅 방법이 존재합니다. 자세히 알아보려면 각 호스팅 업체의 상품 소개를 읽어보고 판단하시는 것이 좋습니다.
서버를 단순히 구축했다고 해서 원하는 서비스를 바로 시작할 수 있는 것은 아닙니다. 운영체제 또는 각종 서버 소프트웨어의 설치가 필요할 수 있습니다. 그리고 서비스해야 할 데이터나 프로그램이 필요하겠죠. 호스팅은 시작에 불과할 뿐입니다. 다행히 웹 서비스를 구축하는 데에는 수많은 문서와 솔루션들이 존재하니
서버와 호스팅 서비스에 대해 이해하는 데 많은 도움이 되었길 바랍니다. 읽어주셔서 감사합니다.
Xcode에서 iOS 애플리케이션을 빌드(Archive)하고 App Store Connect에 앱을 업로드하는 도중, 아래와 같은 에러가 발생하면서 더…
INSTALL_FAILED_INSUFFICIENT_STORAGE 문제 안드로이드 스튜디오에서 에뮬레이터를 실행하고 개발중인 애플리케이션을 실행하려 하면 로그 창에 아래와 같이 표시되면서…
리눅스 명령어 - kill, killall 리눅스 kill 명령어는 특정 프로세스를 종료해주는 명령어입니다. 백그라운드에서 실행되고 있는…
JavaScript는 역사가 긴 스크립트 프로그래밍 언어입니다. 세월이 흐르면서 많은 자바스크립트 표준이 만들어졌고, 현재는 많은 문법적…
NodeJS 테스트 프레임워크인 Mocha는 비동기 테스트를 지원합니다. 간혹 특정 테스트 스크립트를 작성하고 실행하면 아래와 같이…