[BE 기초] 서버란 무엇인가?

안녕하세요, 오늘은 서버란 무엇인가에 대해 알아보겠습니다.

technology 1587673 1280
[BE 기초] 서버란 무엇인가? 5

서버란 무엇인가

서버(Server)란 무엇일까요? 사전적 의미로는 제공자, 봉사자 등의 의미를 가지고 있습니다. 말 그대로 컴퓨터에 대입 시키면 의미를 이해할 수 있습니다. 서버는 클라이언트에게 서비스를 제공하는 컴퓨터 프로그램을 의미합니다. 일반적으로 클라이언트 컴퓨터보다는 강력한 성능을 필요로 하고, 신경 써야 하는 분야가 다릅니다. 예를 들면 보안, 네트워크 설정 등이 있겠습니다. 더욱이 사용하는 운영체제도 다른데요, 리눅스를 주로 사용하며 리눅스는 여러 OS로 나뉘어집니다. 클라이언트 컴퓨터처럼 윈도우 8, 9, 10, 11 등으로 알기 쉽게 나뉘어지는 것이 아니라 CentOS, Ubuntu 등 서버 개발자의 성향이나 개발 특성에 맞게 달라집니다.

서버 종류

우선 서버의 종류와 그 서버가 하는 일에 대해 알아보겠습니다. 서버는 공통적으로 24시간 동작한다는 특징이 있습니다.

웹 서버

HTTP 프로토콜을 통해 웹 리소스를 제공하는 서버입니다. 대표적으로 아파치(Apache), Nginx, IIS 등이 있습니다. 보통 웹 서버의 프록시 기능을 이용하여 애플리케이션 서버(WAS – Web Application Server)로 연결해주기도 합니다. WAS의 대표적인 예시로는 Node.js의 Express, Koa, Fastify 나 Java의 Spring, Python의 FastAPI, Django 등이 있습니다. 사용자의 요청/응답 정보를 누구나 열람하면 안되기에 SSL/TLS 암호화를 적용한 HTTPS 프로토콜을 사용하는 것이 필수입니다.

데이터베이스 서버

데이터를 저장하고 관리하는(CRUD) 서버이며 대표적으로 Oracle DB, MySQL, MariaDB, PostgreSQL, MongoDB, 그래프DB 등이 있습니다. 데이터를 저장하고 관리하는 역할을 하다보니 안정성이 최우선적으로 고려되어야 합니다. 클라이언트의 게시글 등이 어떠한 사고로 인해 사라지더라도 복구될 수 있어야 하기에 그러한 기능이 잘 구현되어있고 관리를 대신해주는 AWS, Azure, GCP 등의 클라우드 서비스를 많이 사용합니다.

메일 서버

이메일을 송/수신 하는 서버입니다. SMTP, IMAP, POP3 등의 프로토콜을 사용합니다. 대표적으로 Postfix 등이 있으며 이메일을 송/수신하기에 보안이 중요합니다. 웹 서버와 마찬가지로 SSL/TLS 암호화 적용이 필수적입니다.

computer 6509105 1280
[BE 기초] 서버란 무엇인가? 6

서버의 구성

이제는 서버란 무엇인지 이해하고 어떤 종류가 있는지 알게 되셨으니 서버의 구성에 대해 이야기 드려보겠습니다. 클라이언트와 비슷하지만 다릅니다.

하드웨어

큰 틀에서는 클라이언트와 비슷합니다. CPU, 메인보드, 램, 저장용 디스크 (HDD, SSD), 파워 등으로 구성됩니다. 하지만 적게는 수백, 많게는 수십만의 요청을 처리해야 되다 보니 고성능의 하드웨어를 필요로 합니다. 가장 와닿을 수 있게 이야기 드릴 수 있는 것이 바로 CPU의 코어 수 입니다. 일반적인 CPU 코어 수는 4 ~ 8코어 정도, 개발/고사양 게임용으로는 16코어를 사용하고 있는데요, 서버의 경우는 최근에 144개의 코어를 가지는 CPU가 나오기도 했습니다. 물론 소규모의 서버에서는 1 ~ 4코어 정도만 사용해도 충분합니다.

운영체제

서버의 운영체제는 대표적으로 리눅스(Linux)가 있습니다. 그 외에는 유닉스(Unix), 윈도우 서버(Windows Server)가 있습니다. 일반적으로 사용하는 Windows XP, 7, 8, 10, 11 등과 같이 컴퓨터의 하드웨어와 소프트웨어의 리소스를 관리합니다. 서버용이다 보니 CLI(Command Line Interface)만으로 제공하는 것이 많았는데요, 요즘에는 GUI (Graphic User Interface)로도 잘 나와있는 편입니다.

CLIGUI
12

소프트웨어

일반적인 클라이언트에서 사용하는 소프트웨어와는 다른 것을 설치합니다. 웹 서버를 구성하기 위한 Nginx, 데이터베이스 서버 설치를 위한 MySQL Server 등을 설치하게 됩니다.

마무리

서버가 무엇인지, 대표적으로 무엇이 있는지, 어떻게 구성되어 있는지 이야기 드려 봤습니다. 이해가 잘 되셨을까요? 다음에도 더 좋은 내용으로 돌아오겠습니다. 코딩에 관련된 이야기도 다뤄보도록 하겠습니다.

Leave a Comment