System Design - Server

Server

이토록 다양한 서버의 세계

서버란?

서버란 말 그대로 서비스를 제공하는 것

서버의 종류

하드웨어 서버

  • 일반적으로 이야기하는 하드웨어 서버는 크게 3가지 종류가 있습니다.
    • 메인프레임
    • 유닉스서버
    • x86 서버
  • 첫 번째는 우리가 가장 많이 알고 있는 하드웨어 서버입니다. 간단히 설명하면 서버는 PC와 구조상 같지만, 성능이나 안정성이 높은 장비입니다. 하지만 성능이나 안정성이 높다는 차이만 있는 것이 아닙니다. 서버가 서버의 임무를 수행하기 위해서는 다양한 명령어를 수행할 수 있는 CPU와 명령을 전달하고 제어해주는 OS가 있어야 합니다. 이런 특징으로 구분해보면, 하드웨어 서버들은 크게 메인프레임, 유닉스, x86 서버 이렇게 3종류로 나눌 수 있습니다.
    • CPU (Central Processing Unit): 중앙처리 장치로서, 컴퓨터의 연산을 담당, 데이터를 처리한다.
    • OS
      • 운영체제는 하나 이상의 처리기로 구성된 하드웨어 자원을 활용하여 시스템 사용자에게 다양한 서비스를 제공해주는 프로그램이다.
      • 컴퓨터 사용자와 하드웨어 간의 인터페이스 역할을 하며, 응용 프로그램이 편리한 작업을 할 수있게 환경을 제공해준다.

메인프레임

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

유닉스서버

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

x86서버

마지막은 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로 사용하기에는 효율이 떨어지게 됐습니다.

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

하이퍼바이저 & VM 차이

  • x86 서버는 여러 방식이 있지만, 현재 가장 일반적으로 사용되는 방식은 바로 하이퍼바이저;hypervisorVM;virtual machine를 기반으로 하는 방식입니다. 이 방식은 하이퍼바이저가 서버의 물리적 자원인 CPU와 메모리를 일정 부분 할당하고 그 자원을 활용하여 OS를 구성할 수 있도록 해줍니다. 이렇게 생성된 가상의 서버를 VM이라고 부르며, 이러한 VM은 하드웨어 서버의 크기에 비례하여 여러 개에서 수십 개의 가상 서버를 만들어낼 수 있습니다. 실제 사용해보면 해당 서버의 관리자가 아닌 이상 가상화 서버인지, 물리 서버인지 차이를 느낄 수 없게 만들어져 있습니다.
    • 하이퍼바이저(hypervisor)는 호스트 컴퓨터에서 다수의 운영 체제(operating system)를 동시에 실행하기 위한 논리적 플랫폼(platform)
  • 우리가 많이 사용하는 클라우드 역시 대부분 이러한 가상 서버 기반으로 구성돼 있으며, VMware, MS 등 많은 업체에서 이러한 기술들을 제공하고 있습니다.
  • 최근에는 한발 더 나아가서 하이퍼바이저 없이 ‘컨테이너’라는 가상환경을 제공하고 있어, 더욱 유연하고 효율적으로 서버를 활용하는 기술도 등장하고 있습니다.

참고 ) M1

  • x86 / CISC / 인텔, AMD 등 PC용 CPU
  • ARM / RISC / A14(애플), 엑시노스(삼성) 등 모바일용 CPU
    • ARM 기반으로 애플에서 만든 칩이고, 브랜드명은 “애플 실리콘”입니다.
    • 그 첫번째 모델이 M1