닫기 MWC 2018
현지 리포트
닫기

이토록 다양한 서버의 세계

2018.01.15 FacebookTwitterNaver

▲서버의 세계는 넓고도 다양합니다
친구들과 실시간으로 대화와 자료를 주고받고, 사진을 찍으면 어떤 사진인지 알려주며, 가고 싶은 곳을 지정하면 어떻게 가야 하는지 말해주는 시대에 우리는 살고 있습니다. 많은 사람이 즐겨 하는 게임은 말 할 것도 없죠. 화려한 3D 게임을 수많은 사람이 동시에 같은 시간, 그리고 같은 장소에서 즐길 수 있다는 사실, 과거에는 쉽게 상상하기 어려웠던 일입니다.

이렇게 편리하고 재미있는 서비스를 제공해주는 주인공은 누구일까요? 아마 한 번쯤은 듣고 사용해보셨을 용어, 바로 ‘서버’입니다. 단어의 뜻 그대로 ‘서비스를 제공해주는 것’이니 대충 이해는 가지만, 아마 대부분 사람들이 서버가 정확히 무엇인지 잘 모르는 경우가 많을 겁니다. 뉴스에서 ‘1분기 서버 시장 매출이 증가하여’라고 할 때의 서버, 또는 온라인 게임을 즐기시는 분들이 ‘OO 서버에서 만나자’라고 할 때의 서버, 그리고 ‘아마존 클라우드 서버’라 말하는 서버는 서로 다른 개념입니다. 이렇게 다양한 서버들에 대해 하나씩 알아보도록 합시다.

모든 서버의 바탕, 하드웨어 서버

▲하드웨어 서버는 메인프레임, 유닉스, x86 서버 총 3가지로 나뉩니다

일반적으로 이야기하는 서버는 크게 3가지 종류가 있습니다. 첫 번째는 우리가 가장 많이 알고 있는 하드웨어 서버입니다. 간단히 설명하면 서버는 PC와 구조상 같지만, 성능이나 안정성이 높은 장비입니다. 하지만 성능이나 안정성이 높다는 차이만 있는 것이 아닙니다. 서버가 서버의 임무를 수행하기 위해서는 다양한 명령어를 수행할 수 있는 CPU와 명령을 전달하고 제어해주는 OS가 있어야 합니다. 이런 특징으로 구분해보면, 하드웨어 서버들은 크게 메인프레임, 유닉스, x86 서버 이렇게 3종류로 나눌 수 있습니다.

메인프레임은 IBM이라는 회사에서 만드는 서버를 말합니다. IBM은 가장 오래된 서버이자, 현대 서버의 아버지뻘 되는 장비입니다. 컴퓨터라는 용어조차 생소하던 1970년대부터 메인프레임이라는 이름의 서버를 생산했습니다. ‘주(Main)가 되는 장비(Frame)’라는 뜻으로 대형 냉장고만 한 크기의 장비입니다. 또한, 여러 사람이 동시에 서비스를 이용할 수 있도록 해주는 데이터 공유, 동시성 제어, 가상화 기술 등을 제공했습니다. 당시에 이러한 성능과 기능을 가진 장비는 메인프레임이 거의 유일하다고 할 수 있었기 때문에, 굉장히 고가임에도 불구하고 전 세계 수많은 금융회사와 대기업, 연구실 등에서 널리 사용됐습니다. 지금도 꾸준히 새로운 제품이 출시되고 있습니다.

다음은 유닉스 서버입니다. 메인프레임이 성능이나 기술 측면에서 우위에 있긴 했지만 아무래도 가격이 높아 널리 사용하기에는 부담스러웠습니다. 특히 통신의 발달로 더 많은 사람에게 다양한 서비스를 제공해야 하는데 메인프레임으로는 확장에 무리가 있었던 것이죠. 그래서 유닉스 서버가 등장하게 됩니다. 1980년대부터 유닉스 서버라는 이름으로 몇몇 업체가 개발을 시작했고, 메인프레임보다 물리적인 크기가 작아졌으며 접근이 쉬웠습니다. 유닉스 서버는 IBM, HP, Oracle(과거 SUN) 사의 장비들이 대표적인데요, 각각 자사 서버에 특화된 CPU와 OS를 생산하며 개발하고 있습니다. 국내의 많은 회사, 특히 은행, 카드사 등 금융권에서 주력으로 많이 사용하고 있습니다.

마지막은 x86 서버입니다. x86이란 용어는 윈도 디렉토리 이름 ‘Program Files(x86)‘에도 포함되어 눈에 익은 단어이지만, 왜 x86이라고 부르는지 모르는 분들이 많습니다. 간단히 설명하면 x86은 인텔이 자사의 CPU 아키텍처에 붙인 명칭이라고 생각하면 됩니다. 인텔은 PC라는 용어가 나오는 시작하던 무렵, 8086이라는 CPU를 개발했는데 이후 80286, 80386, 80486을 거쳐 유명한 펜티엄(80586) CPU를 만들었죠. 이후 PC용 고성능 CPU의 대명사로 대중에게 인식되면서 686, 786 에 해당하는 새로운 아키텍처의 CPU가 출시됐음에도 20년이 넘게 펜티엄이라는 용어를 사용하였습니다. x86은 초기 개인용으로 개발이 됐기 때문에, 메인프레임이나 유닉스와는 다르게 CPU 회사와 OS 회사가 별개입니다. 그래서 CPU는 인텔이나 AMD가 생산하지만, OS는 MS사의 DOS와 윈도, IBM의 OS/2, CentOS, Fedora 등 리눅스 OS까지 다양한 OS를 지원하고 있습니다.

 

장비 한 대로 일당백, 가상화 서버

▲가상화 서버는 한 대의 장비를 여러 대처럼 사용할 수 있도록 합니다
앞서 여러 종류의 하드웨어 서버들을 살펴보았습니다. 서버가 그 역할을 하기 위해서는 CPU와 OS가 필요하다고 말씀 드렸는데요. 초기에는 CPU가 하나뿐이라 하나의 OS만 사용해도 되었지만, 기술의 발전으로 CPU 하나에도 여러 개의 코어가 탑재되고, 서버는 이러한 CPU가 적게는 2개부터 많게는 10개 이상 장착이 가능해지다 보니 이런 고성능의 장비를 하나의 OS로 사용하기에는 효율이 떨어지게 됐습니다.

그래서 ‘물리적으로 한 대의 장비지만 이것들을 여러 대처럼 사용할 방법이 없을까?’ 고민한 끝에 등장한 것이 바로 가상화 서버입니다. 이런 가상화 기술은 메인프레임, 유닉스 시절부터 적용이 되었는데요. 그 이유는 이러한 장비들은 장비 한 대가 매우 고가이면서 사양이 높았기 때문입니다. 그래서 별도의 제어장치를 구성하여 가상 서버 여러 개를 만들 수 있도록 했습니다.

x86 서버는 여러 방식이 있지만, 현재 가장 일반적으로 사용되는 방식은 바로 하이퍼바이저(hypervisor)와 VM(virtual machine)를 기반으로 하는 방식입니다. 이 방식은 하이퍼바이저가 서버의 물리적 자원인 CPU와 메모리를 일정 부분 할당하고 그 자원을 활용하여 OS를 구성할 수 있도록 해줍니다. 이렇게 생성된 가상의 서버를 VM이라고 부르며, 이러한 VM은 하드웨어 서버의 크기에 비례하여 여러 개에서 수십 개의 가상 서버를 만들어낼 수 있습니다. 실제 사용해보면 해당 서버의 관리자가 아닌 이상 가상화 서버인지, 물리 서버인지 차이를 느낄 수 없게 만들어져 있습니다.

우리가 많이 사용하는 클라우드 역시 대부분 이러한 가상 서버 기반으로 구성돼 있으며, VMware, MS 등 많은 업체에서 이러한 기술들을 제공하고 있습니다.

최근에는 한발 더 나아가서 하이퍼바이저 없이 ‘컨테이너’라는 가상환경을 제공하고 있어, 더욱 유연하고 효율적으로 서버를 활용하는 기술도 등장하고 있습니다.

 

이것까지 정말 다 돼? 소프트웨어 서버

소프트웨어 서버는 프로그램 개발자의 시각으로 바라본 서버입니다. 보통 개발자들은 서버를 ‘내가 작성한 프로그램이 수행되는 장소’로 생각합니다. 제가 처음 입사했을 때 업무교육을 위해 톰캣(Tomcat)이라는 프로그램을 PC에 설치하고 몇 가지 설정을 해주면 내 PC도 서버가 될 수 있다는 사실을 알고 나서 너무 놀랐던 기억이 납니다. 서버라고 하면 뭔가 크고 비싸고 대단할 것 같다는 생각이 있었거든요. 나중에 알고 보니 이것이 우리가 일반적으로 말하는 ‘웹 서버’를 말하는 것이었습니다.

웹 서버는 Http나 Https 프로토콜을 사용해 사용자들에게 웹 기반의 서비스를 제공할 수 있도록 해주는 ‘소프트웨어로서의 서버’입니다. 이러한 웹 서버는 Http 서버와 WAS(Web Application Server)로 구분됩니다. 간단히 말해 http서버는 글자나 이미지 등을 보여주는 정적인 기능을 주로 수행하고, WAS는 사용자의 입력 값을 받아서 계산하거나, DB에서 해당하는 정보를 가져오는 형태의 동적인 기능을 수행합니다. 온라인 게임을 예로 들면, 처음 사이트에 접속할 때에는 Http 서버가 화면의 이미지들을 보여주게 되고, 실제 게임에 접속해서 일어나는 일들은 WAS가 처리한다고 생각하시면 됩니다. 그래서 여러분들이 게임을 할 때 친구들과 같은 공간에서 접속한다면 그것은 ‘우리가 같은 WAS(혹은 유사한 기능을 하는 서비스)에 들어와 있구나!’라고 생각하시면 됩니다.

이렇듯 소프트웨어 서버는 제공하는 서비스의 종류에 따라 다양하게 부르고 있습니다. 웹 서버 이외에도 메일을 주고받는 기능이 있으면 메일 서버, DB를 제공하면 DB 서버, 주소 변환 기능을 제공하면 DNS 서버, 파일을 주고받는 FTP 서버 등으로 다양하게 부르고 있습니다. 하나의 서버에도 여러 기능을 탑재하면 다양한 기능을 제공할 수 있기 때문에, 서버라기보다는 서비스라고 부르는 게 더욱 적합할 것 같습니다.

지금까지 우리가 흔히 사용하는 서버라는 용어에 담긴 많은 내용에 대해 알아보았습니다. 사실 서버가 뭔지 잘 몰라도 다양한 서비스들을 이용하는 데에는 아무런 문제가 없습니다. 서비스 회사들은 점점 더 사용자들이 서비스를 이용하기 쉽게 하는 것에 초점을 두고 있기 때문이죠. 하지만 겉으로 드러난 서비스의 내면에 이런 장비와 기술들이 깔려있다는 사실에 대해서 알게 되고, 이러한 서비스가 어떻게 가능한지 생각해본다면, 여러분은 단순한 이용자를 넘어서 새로운 즐거움의 세계에 첫발을 들이게 될 것입니다. 어쩌면 많은 사람을 매료시킬 새로운 서비스의 창조자가 될 수도 있을 것입니다.

 

FacebookTwitterNaver