서버

서버란? 

서버는 네트워크를 통해 원격으로 접근하여 다른 컴퓨터 프로그램에 리소스 및 서비스를 제공할 수 있는 컴퓨터 프로그램이다. 이러한 유형의 프로그램이 실행되는 컴퓨터 장치를 서버라고도 한다.

클라이언트/서버 아키텍처에는 두 가지 유형의 컴퓨터가 있다:

  • 클라이언트는 최종 사용자가 상호 작용하는 컴퓨터다;
  • 서버는 클라이언트에 리소스와 서비스를 제공하는 컴퓨터다.

하나의 서버가 여러 클라이언트의 요구를 충족할 수 있으며, 하나의 클라이언트가 여러 서버에 액세스할 수 있다.

클라이언트/서버 아키텍처가 오늘날에도 여전히 지배적인 모델이지만, 클라우드 컴퓨팅과 다양한 상황에서 클라이언트와 서버의 역할을 모두 수행할 수 있는 마이크로서비스가 널리 채택되면서 클라이언트와 서버의 경계가 더욱 유동적으로 변하고 있다.

서버 폼 팩터

서버에는 다양한 배포 시나리오, 확장성 요구 사항, 공간 제약 및 관리 요구 사항을 충족하는 여러 가지 유형의 폼 팩터가 있다. 폼 팩터의 선택은 컴퓨팅 환경의 특정 요구 사항에 따라 달라진다.

예를 들어 타워 서버는 바닥이나 책상 위에 놓을 수 있는 독립형 장치다. 타워 서버는 구식 데스크톱 타워 컴퓨터와 비슷하며 사무실 환경의 중소기업에서 자주 사용된다.

이와 달리 랙 마운트 서버는 랙이라고 하는 특수 데이터 센터 캐비닛에 수평으로 쌓을 수 있도록 설계되었다. 이 유형의 서버는 랙 단위로 폼 팩터의 높이를 나타내는 표준 크기로 제공된다. 1U는 높이가 약 1.75인치(또는 44.45mm)다.

랙 마운트 서버의 가장 일반적인 크기는 다음과 같다:

  • 1U: 랙 마운트 구성에서 가장 컴팩트한 폼 팩터다. 1U 서버는 높이 1.7인치, 너비 19인치, 깊이 17.7인치로 피자 박스 서버라고도 불린다.
  • 2U: 이 서버는 높이가 약 3.5인치이며 일반적으로 더 많은 처리 능력이나 스토리지가 필요할 때 사용된다.
  • 4U: 이 서버는 높이가 약 7인치이며 고성능 컴퓨팅(HPC) 및 리소스 집약적인 애플리케이션 실행에 주로 사용된다.

블레이드 서버는 얇은 폼 팩터로 고밀도 서버 배포를 용이하게 한다. 여러 서버 모듈이 동일한 블레이드 섀시에 수평으로 장착되어 에너지 소비와 케이블링 복잡성을 줄인다.

마이크로서버는 가벼운 워크로드를 위해 설계된 저전력 서버다. 기존 서버보다 크기가 작고 하드웨어 구성 요소와 관리 기능이 더 적은 경우가 많다. 이 폼 팩터는 특정 사물 인터넷(IoT) 애플리케이션에 비용 효율적인 선택이 될 수 있다.

OCP 서버는 데이터센터용 오픈소스 하드웨어 사양을 설계하고 공유하기 위해 Facebook에서 시작한 이니셔티브인 오픈 컴퓨트 프로젝트의 개방형 하드웨어 설계 원칙을 기반으로 한다. OCP 서버는 에너지 효율을 높이도록 설계되었으며 대규모 데이터 센터와 클라우드 컴퓨팅 환경에서 흔히 볼 수 있다. OCP 폼 팩터는 다음과 같다:

  • 오픈 랙: OCP가 도입한 최초의 폼 팩터다. 하단에 전원 선반이 있고 수평으로 밀어 넣을 수 있는 서버 트레이가 있는 21인치 폭의 랙 디자인이 특징이다. 오픈 랙 설계는 높은 확장성, 전력 효율성, 서비스 용이성에 중점을 둔다.
  • OpenU: OpenU는 표준 19인치 랙과 함께 사용할 수 있는 컴팩트한 폼 팩터다. OpenU 서버는 전력 소비를 줄이도록 설계되었다.
  • 오픈 브리지 랙: 오픈 브리지 랙은 동일한 랙 내에서 표준 랙 마운트 서버와 OCP 스타일 서버 트레이를 모두 사용할 수 있는 하이브리드 폼 팩터다.
  • 메자닌: 메자닌은 블레이드 서버처럼 서버 섀시에 수직으로 삽입할 수 있는 OCP 폼 팩터다. 메자닌은 일반적으로 고밀도 컴퓨팅 환경에서 사용된다.

서버의 종류

서버는 폼 팩터 외에도 서버가 수행하는 작업 유형에 따라 분류할 수 있다. 적합한 서버를 선택하려면 서버 프로그램이 어떤 리소스와 서비스를 제공할지 미리 파악해야 한다.

애플리케이션 서버: 애플리케이션 프로그램을 배포하고 실행하기 위한 비즈니스 로직을 제공다.

백업 서버: 데이터 백업을 수행하고 백업 데이터를 위한 중앙 집중식 스토리지를 제공한다.

협업 서버: 문서 공유, 인스턴트 메시징, 화상 회의와 같은 기능을 지원하여 사용자 간의 협업과 커뮤니케이션을 가능하게 한다.

데이터베이스 서버: 데이터베이스를 저장하고 관리한다.

DHCP 서버: 네트워크의 클라이언트 장치에 동적 IP 주소를 할당한다.

DNS 서버: 도메인 이름을 IP 주소로 확인한다.

엣지 서버: 네트워크 리소스와 서비스를 사용하는 최종 사용자 장치에 최대한 가까운 곳에 네트워크 리소스와 서비스를 제공한다.

파일 서버: 파일을 저장 및 관리하고 클라이언트가 네트워크를 통해 파일에 액세스하고 공유할 수 있도록 한다.

FTP 서버: 클라이언트가 FTP(파일 전송 프로토콜)를 사용하여 파일을 업로드 및 다운로드할 수 있도록 한다.

LDAP 서버: 사용자 인증 및 디렉토리 서비스를 용이하게 하기 위해 디렉토리 정보를 저장하고 관리한다.

메일 서버: 이메일 메시지 전송, 수신 및 저장을 포함한 모든 이메일 통신 서비스를 처리한다.

인쇄 서버: 인쇄 작업 대기열 및 관리를 포함하여 네트워크에 연결된 프린터를 제어하고 관리한다.

프록시 서버: 네트워크 성능 향상을 위한 캐싱 및 필터링 서비스를 제공하여 클라이언트와 다른 서버 사이의 중개자 역할을 한다.

원격 액세스 서버: 원격 사용자가 VPN(가상 사설망) 연결을 통해 네트워크에 안전하게 연결하거나 원격으로 리소스에 액세스할 수 있도록 한다.

스트리밍 서버: 네트워크를 통해 오디오 또는 비디오와 같은 스트리밍 미디어 콘텐츠를 클라이언트에 제공한다.

시간 서버: NTP(네트워크 시간 프로토콜) 또는 PTP(정밀 시간 프로토콜)를 사용하여 네트워크에서 정확한 시간 동기화를 제공한다.

VoIP 서버: VoIP 통신 서비스를 처리하고 인터넷 프로토콜(IP) 네트워크를 통한 음성 통화 라우팅을 담당한다.

웹 서버: 웹사이트를 호스팅하고 인터넷을 통해 클라이언트에게 웹 콘텐츠를 제공한다.

서버 구성

서버 구성 요소는 클라이언트에 기능, 리소스 및/또는 서비스를 제공하기 위해 함께 작동하도록 설계되었다. 특정 구성 요소는 특정 서버의 폼 팩터와 서버가 수행하는 작업 유형에 따라 달라지지만, 일반적인 구성 요소는 아래에 설명되어 있다.

하드웨어: 여기에는 서버 섀시뿐만 아니라 전용 서버의 CPU(중앙 처리 장치), 메모리, 스토리지, 네트워크 인터페이스 및 전원 공급 장치가 포함된다.

서버 OS: 특정 유형의 클라이언트/서버 환경을 위해 설계된 운영 체제(OS)이다.

서버 소프트웨어: 서버의 특정 사용 사례를 지원하는 소프트웨어다. 예를 들면 데이터베이스 서버 소프트웨어, 이메일 서버 소프트웨어, 웹 서버 소프트웨어 등이 있다.

네트워크 연결: 서버 프로그램은 네트워크 인프라에 연결하여 LAN(로컬 영역 네트워크), WAN(광역 네트워크) 또는 인터넷을 통해 클라이언트 장치와 통신한다. 일부 서버 폼 팩터에는 중복성을 제공하고 다양한 유형의 네트워크 구성을 지원하기 위해 여러 개의 네트워크 인터페이스가 있다.

관리 및 모니터링 도구: 서버에는 원격 관리 및 성능 모니터링이 가능한 도구가 함께 제공되는 경우가 많다.

고가용성 기능: 일부 서버에는 다운타임을 최소화하고 지속적인 운영을 보장하는 고가용성(HA) 기능이 포함되어 있다. 여기에는 중복 전원 공급 장치 및 네트워크 인터페이스, 여러 스토리지 시스템에 대한 액세스, 자동 장애 조치 및 로드 밸런싱을 지원하는 구성 관리 도구가 포함된다.

보안 조치: 대부분의 서버 소프트웨어에는 무단 액세스, 데이터 유출, 분산 서비스 거부(DDoS) 공격 및 기타 사이버보안 위협으로부터 보호하는 보안 기능이 포함되어 있다.

서버 OS

서버 운영 체제는 CPU, 메모리, 스토리지, 네트워크 연결과 같은 리소스가 변화하는 서버 워크로드의 요구 사항을 충족하도록 최적화하는 특수 소프트웨어 플랫폼이다.

운영 체제의 선택은 서버의 사용 목적과 서버 환경을 관리하는 데 필요한 기술 전문성 수준 등의 요인에 따라 달라진다.

널리 사용되는 서버 운영 체제는 다음과 같다:

윈도우 서버는 Microsoft에서 개발한 서버 운영 체제다. 사용자 관리를 위한 Active Directory, 웹 호스팅을 위한 IIS(인터넷 정보 서비스), 데이터베이스 관리를 위한 SQL Server, 다양한 기업용 애플리케이션 지원 등 다양한 기능과 서비스를 제공한다. 이 OS는 사용자 친화적인 인터페이스, Windows 기반 소프트웨어와의 광범위한 호환성, 강력한 관리 도구로 잘 알려져 있다.

우분투 서버는 오픈 소스 서버 배포를 위해 특별히 설계된 리눅스 OS다. 사용자 친화적이고 강력한 커뮤니티 지원을 제공하는 것으로 유명하다.

레드햇 엔터프라이즈 리눅스(RHEL)는 안정성, 보안, 엔터프라이즈급 지원으로 잘 알려진 상용 리눅스 OS다. RHEL은 고가용성, 가상화, 컨테이너화 기능과 같은 기능을 제공하기 때문에 엔터프라이즈 환경에서 미션 크리티컬 서버 배포를 위해 많이 선택된다.) 

CentOS(커뮤니티 엔터프라이즈 운영 체제)는 레드햇 엔터프라이즈 리눅스 소스 코드를 기반으로 하는 커뮤니티 중심의 무료 OS다. 웹 및 데이터베이스 서버에 널리 사용된다.

FreeBSD는 견고성, 성능, 보안으로 유명한 유닉스와 유사한 운영 체제다. 웹 및 메일 서버에 널리 사용된다.

VMware ESXi는 단일 물리적 서버에서 여러 가상 머신을 실행하도록 설계된 널리 사용되는 서버 가상화 플랫폼이다. VMware ESXi는 실시간 마이그레이션, 고가용성, 중앙 집중식 관리와 같은 기능을 제공하며 가상화된 서버 워크로드를 통합하고 관리하는 데 필요한 하이퍼바이저 기능을 제공한다.

IBM AIX(Advanced Interactive eXecutive)는 IBM에서 개발한 유닉스 기반 운영 체제다. AIX는 엔터프라이즈 환경에서 복잡한 ERP(전사적 자원 관리) 및 CRM(고객 관계 관리) 시스템의 미션 크리티컬 서버 워크로드를 위해 일반적으로 사용된다.

물리적 서버와 가상 서버

서버 프로그램은 전용 물리적 컴퓨팅 장치 또는 물리적 컴퓨터에서 실행되는 소프트웨어 기반 에뮬레이션에서 호스팅할 수 있다.

물리적 서버는 자체 중앙 처리 장치(CPU), 메모리, 스토리지 및 네트워크 인터페이스가 있는 유형의 하드웨어다. 이 서버는 단일 운영 체제를 실행하며 해당 서버에만 리소스를 할당한다.

이와는 대조적으로 가상 서버는 소프트웨어 컨테이너에서 실행되는 가상 머신 또는 마이크로서비스다. 가상 서버를 사용하면 하나의 물리적 서버에서 여러 서버 인스턴스를 실행하고 필요에 따라 물리적 호스트의 리소스를 공유할 수 있다.

다음은 몇 가지 인기 있는 물리적, 가상 및 통합 서버 환경이다:

클러스터형 – 여러 물리적 및/또는 가상 서버가 함께 작동하여 고가용성 및 내결함성을 제공한다.

독립형 – 물리적 또는 가상 서버가 독립적으로 작동하며 의도한 기능을 수행하기 위해 다른 서버나 시스템에 의존하지 않는다.

서버리스 – 클라우드 서비스 제공업체가 물리적 또는 가상 서버의 소프트웨어, 운영 체제 및 기본 물리적 구성 요소를 관리할 책임이 있다.

마이크로서비스 – 마이크로서비스로 배포된 서버는 나머지 애플리케이션에 영향을 주지 않고 독립적으로 업그레이드, 확장, 재시작할 수 있다.

엣지 – 물리적 서버와 가상 서버를 데이터 소스에 최대한 가깝게 배치하여 지연 시간을 줄이고 네트워크 대역폭을 최적화한다.

하이브리드 클라우드 – 분산 컴퓨팅 환경의 물리적 서버와 가상 서버가 온프레미스 및 퍼블릭 클라우드에 배포된다.

독점 서버와 오픈 소스 서버 비교

독점 서버는 소스 코드, 사용 및 배포에 대한 독점적 권리를 보유한 공급업체가 만들고 유지 관리하는 소프트웨어 시스템이다. 독점 서버 소프트웨어는 모회사에서 라이선스를 부여한다. Microsoft의 Windows Server는 독점 서버의 잘 알려진 예다.

반면 오픈소스 서버의 소스 코드는 공개적으로 액세스할 수 있으며 누구나 코드를 보고, 수정하고, 배포할 수 있다. 오픈소스 서버는 개발자 커뮤니티가 공동으로 개발하며 GNU 일반 공중 사용 허가서(GPL)와 같은 오픈소스 라이선스에 따라 라이선스가 부여될 수도 있고 그렇지 않을 수도 있다. Apache HTTP 서버는 오픈소스 서버의 잘 알려진 예다.

독점 서버와 오픈 소스 서버의 주요 차이점은 비용, 사용자 정의 기능, 사용자가 기대할 수 있는 지원, 보안이다.

독점 서버와 오픈 소스 서버 중 어떤 것을 선택할지는 회사의 특정 요구 사항, 리소스, 기술 전문성에 따라 달라진다. 독점 서버는 사용 편의성과 전문적인 지원을 제공하는 반면, 오픈 소스 서버는 탁월한 사용자 지정 및 비용 효율성을 제공한다. 따라서 두 가지 모두 고유한 강점을 가지고 있으며 디지털 환경에서 서로 다른 틈새 시장을 공략한다.

독점 서버 오픈소스 서버
비용 라이선스 또는 구독료. 사용, 수정 및 배포가 자유로움.
개인화 제한된 사용자 지정 옵션. 소스 코드를 변경할 수 있어 광범위한 커스터마이징이 가능.
지원 서버 모회사에서 제공하는 경우가 많음. 추가 비용이 필요. 커뮤니티가 주도하는 지원은 지식의 폭은 넓지만 깊이가 일정하지 않은 경우가 많음.
보안 공급업체는 취약점을 사전에 식별하고 패치할 책임이 있음. 개발 커뮤니티의 집단적 지식과 면밀한 조사를 통해 취약점을 신속하게 식별하고 패치하는 경우가 많음.

서버와 인공지능(AI)

인공 지능(AI)이 서버 소프트웨어에 통합되면서 잠재적인 문제를 예측 및 대응하고 자체 성능과 보안을 자율적으로 최적화할 수 있는 자체 관리 서버가 만들어지고 있다.

서버 소프트웨어에서 AI의 가장 중요한 응용 분야 중 하나는 유지 관리 작업을 트리거하기 위해 예측 분석을 사용하는 것이다. AI 시스템은 성능 지표와 네트워크 트래픽을 지속적으로 모니터링하고 수동 모니터링보다 더 빠르게 시스템 관리자에게 이상 징후를 알릴 수 있다.

또한 AI는 일상적인 서버 관리 작업을 자동화하여 서버 스프롤을 줄이는 데 도움을 줄 수 있다. 여기에는 서버 리소스 자동 프로비저닝 및 프로비저닝 해제, 업데이트 및 패치 배포, 자동 검색 활성화, 구성 관리 기능 자동화 등이 포함된다. 일부 서버 소프트웨어는 로그 데이터와 이상 징후 감지 알고리즘을 사용하여 특정 서버 구성 요소의 향후 수명을 예측하고 장애가 발생하기 전에 교체를 주문할 수도 있다.

AI를 도입하면 효율성을 높이고 비용을 절감할 수 있을 뿐만 아니라, 시스템 취약점으로 이어질 수 있는 인적 오류의 위험을 줄여 보안을 강화할 수 있다. AI 기반 사이버 보안 도구는 네트워크에서 서버 소프트웨어에 대한 잠재적 위협을 모니터링하고 이전 공격으로부터 잠재적 보안 위협을 예측, 탐지 및 대응하는 방법을 학습할 수 있다.

서버 에러 코드

클라이언트/서버 아키텍처에서 서버 오류 코드는 클라이언트 요청의 결과를 나타내기 위해 서버가 반환하는 표준화된 상태 코드다. 이러한 오류 코드는 HTTP(하이퍼텍스트 전송 프로토콜) 상태 코드 시스템의 일부이며 클라이언트의 HTTP 요청에 대한 응답으로 서버에서 전송된다.

다음은 일반적으로 발생하는 몇 가지 서버 오류 코드다:

  • 500 내부 서버 오류: 이 오류는 서버에서 예기치 않은 조건이 발생하여 서버가 요청을 처리할 수 없음을 나타낸다. 문제에 대한 구체적인 세부 정보를 제공하지 않는 일반적인 오류 메시지다.
  • 503 서비스를 사용할 수 없다: 이 오류는 서버가 현재 과부하 상태이거나 유지 관리 중이기 때문에 요청을 처리할 수 없음을 나타낸다. 이 오류는 클라이언트가 나중에 요청을 다시 시도해야 함을 암시한다.
  • 502 잘못된 게이트웨이: 이 오류는 게이트웨이 또는 프록시 역할을 하는 서버가 업스트림 서버로부터 유효하지 않은 응답을 수신할 때 발생한다. 이 오류는 게이트웨이 역할을 하는 서버가 요청을 처리하는 동안 예기치 않은 조건이 발생했음을 나타낸다.
  • 504 게이트웨이 시간 초과: 이 오류는 게이트웨이 또는 프록시 역할을 하는 서버가 업스트림 서버로부터 적시에 응답을 받지 못할 때 발생한다. 이 오류는 업스트림 서버가 시간 제한 내에 응답하지 않았음을 나타낸다.
  • 501 구현되지 않음: 이 오류는 서버가 요청을 처리하는 데 필요한 기능을 지원하지 않음을 나타낸다. 서버에 요청 방법이나 요청된 리소스를 처리할 수 있는 기능이 부족하다는 의미다.
  • 505 HTTP 버전이 지원되지 않음: 이 오류는 서버가 요청에 사용된 HTTP 프로토콜 버전을 지원하지 않거나 지원을 거부할 때 발생한다.

HTTPS 요청에 대한 오류 코드도 있다. 이러한 오류 코드는 4xx 범위로, 서버가 아닌 요청 자체에 문제가 있음을 나타낸다. 가장 일반적인 HTTPS 오류 코드는 다음과 같다:

  • 400 잘못된 요청: 이 코드는 요청이 잘못되었거나 구문적으로 올바르지 않음을 나타낸다.
  • 401 승인되지 않음: 이 코드는 요청이 승인되지 않았음을 나타낸다. 권한 부여 헤더가 누락되었거나 유효하지 않은 경우 또는 사용자 자격 증명에 문제가 있기 때문일 수 있다.
  • 403 금지됨: 이 코드는 요청이 금지되었음을 나타낸다. 권한이 부족하거나 보안 정책 때문일 수 있다.
  • 404 찾을 수 없음: 이 코드는 요청된 리소스를 찾을 수 없음을 나타낸다.
  • 408 요청 시간 초과: 이 코드는 서버의 응답을 기다리는 동안 요청 시간이 초과되었음을 나타낸다.
Margaret Rouse

본 작가는 수상 경력에 빛나는 기술 작가이자 강사로, 복잡한 기술 주제를 비전문가인 비즈니스 청중에게 설명하는 능력으로 유명합니다. 지난 20년 동안 그녀의 설명은 TechTarget 웹사이트에 게재되었으며, 뉴욕 타임즈, 타임 매거진, USA 투데이, ZDNet, PC 매거진, 디스커버리 매거진의 기사에서 권위자로 인용되었습니다. 마가렛은 IT 및 비즈니스 전문가가 서로의 고도로 전문화된 언어를 사용하는 법을 배우도록 돕는 것을 즐겨합니다. 새로운 정의에 대한 제안이 있거나 기술 설명을 개선할 방법이 있으면 다음과 같이 알려주세요. 이메일, LinkedIn, Twitter.