1. 서버, 그냥 컴퓨터 하나 사면 되는 줄 알았다.

김원중·2025년 4월 10일
post-thumbnail

얼마 전, 유튜브에서 TCP 송수신 개념을 설명하는 영상을 본 적이 있다.
댓글을 보니 대부분 “이해가 쏙쏙 된다”, “깔끔한 설명이다”라는 반응이었는데…
나는 영상을 다 보고 나서도 여전히 뭔가 모호한 기분이 들었다.

"또 나만 바보인 건가...😂"

그렇다고 그냥 넘어갈수는 없는 법..!
지금이라도 제대로 이해하고 넘어가는 게 더 중요하다고 느꼈다.

그동안 애매하게 넘겼던 서버와 네트워크를 알아보고자 책장에 꽂아만 두었던 서버,네트워크 기초 책을 꺼냈다.

지금부터는 클라이언트와 서버가 어떻게 데이터를 주고받는지,
그리고 그 외의 네트워크와 서버에 대한 기본적인 개념들을
하나씩 정리해보려고 한다.


✅ 앞으로 다룰 내용

이 시리즈에서는 아래의 네 가지 주제를 중심으로 정리해볼 예정이다

1. 서버 기초 지식

: 서버의 정의, 클라이언트와의 관계, 요청과 응답 흐름 등

2. 네트워크 기초 지식

: IP, DNS, 포트, 프로토콜(TCP/UDP), 3-way handshake 등

3. 서버 형태와 종류

: 웹서버, 애플리케이션 서버, 프록시, 로드밸런서 등

4. 보안 및 장애 대응

: HTTPS, 인증방식, 장애 대응 시나리오, 로그 관리 등


1. 서버 기초 지식

서버(Server)란 ?

클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 시스템으로 컴퓨터 프로그램(server program) 또는 장치(device)를 의미한다.

'서비스를 제공하는 컴퓨터' 정도로 이해해도 무방하다.

간단한 예를 들자면, 스마트폰을 사용해 쇼핑몰 웹 사이트에 액세스하고 있다고 가정하면. 이때 스마트폰이 클라이언트이며, 쇼핑몰 웹 사이트의 콘텐츠가 있는 컴퓨터가 서버이다. 


클라이언트(Client)란?

네트워크로 연결된 서버로부터 정보를 제공받는 컴퓨터. ↔(서버).

위에서 언급한 것처럼 서버가 제공하는 서비스를 제공받는 컴퓨터를 클라이언트 라고 한다.

서버와 클라이언트는 서로 서비스를 주고 받는 관계로 이러한 시스템을
클라이언트-서버 시스템이라고 하며, 현재 컴퓨터 이용 방식의 주류형태이다.

일부 은행이나 보험사등 신뢰성이 요구되는 곳에서는 중앙 집중식 처리 시스템을 사용하는 곳도 있다.


서버의 역할

제공하는 서비스마다 담당하는 서버가 따로 있다.

서버 종류

  • 웹서버 : 웹사이트 서비스를 제공
  • 도메인 서버 : 도메인을 관리
  • 데이터베이스 서버 : 데이터 관리
  • 인증 서버 : 사용자 식별 및 인증
    ...

이처럼 서버는 제공하는 서비스마다 이름을 다르게 하며 독립적으로 운영하지만, 서버 한대로 여러 가지 서비스를 제공할 수도 있다.

독립적으로 운영하는것과 한대로 운영하는것은 각각 장/단점이 있지만, 추후에 알아보도록 하자.


서버 소프트웨어

내가 서버를 운영하고 싶다고 해서 무작정 컴퓨터(서버)만 구매한다고 서버 역할을 할 수 있는 건 아니다.
클라이언트에게 서비스를 제공할 수 있도록 구성된 소프트웨어 스택이 필요하다.

이러한 소프트웨어는 크게

운영체제(OS) → 미들웨어 → 애플리케이션

의 구조로 나뉜다.

1. 운영체제 (Operating System)

서버 하드웨어를 제어하고 자원을 관리하는 기본 소프트웨어이다.
서버에서는 주로 리눅스(Linux) 계열의 운영체제가 많이 사용된다.

  • 예: Ubuntu, CentOS, RedHat, Windows Server 등

2. 미들웨어 (Middleware)

운영체제와 애플리케이션 사이에서 공통 기능을 제공하는 중간 계층 소프트웨어다.
서버 애플리케이션이 실행되기 위한 환경을 제공하고,
통신, 데이터 처리, 트랜잭션 관리 등을 담당한다.

  • 예 :
    - 웹 서버: Apache, Nginx
    - 애플리케이션 서버: Tomcat, Node.js, Spring Boot
    - DB 연결: JDBC, ODBC
    - 메시징/통신: Kafka, RabbitMQ

3. 애플리케이션 (Application)

실제 클라이언트가 요청하는 서비스를 제공하는 프로그램이다.
비즈니스 로직, 사용자 요청 처리, 데이터 가공 등의 역할을 한다.

  • 예:
    - 웹 API 서버
    - 게시판 서비스
    - 파일 업로드 서비스 등

이러한 소프트웨어 구성 요소들을 통해
단순한 컴퓨터가 클라이언트와 통신하고, 요청을 처리하는 ‘서버’ 역할을 하게 된다.


서버와 네트워크

나도 이제 서버를 구성했다. 이제 서비스를 제공해야지!
그런데... 어떻게?

서버는 클라이언트에게 서비스를 제공하는 역할을 한다.
하지만 서비스를 제공하려면 단순히 서버만 있다고 되는 건 아니다.
클라이언트가 서버에 접근할 수 있어야 한다.

그렇다면,
컴퓨터끼리 1:1로 직접 연결해서 서비스를 주고받으면 될까?
현실적으로는 물리적으로 직접 연결하는 방식은 한계가 많고, 비효율적이다.

이때 필요한 것이 바로 네트워크다.

네트워크는 컴퓨터와 컴퓨터를 연결해 정보를 주고받을 수 있는 통신 구조다.
이 구조를 통해 서버는 클라이언트와 연결되어 요청을 받고, 응답을 줄 수 있다.

우리가 일상에서 사용하는 대표적인 네트워크는 바로 인터넷이다.
전 세계 수많은 컴퓨터가 이 인터넷을 통해 서로 연결되고 있다.


다음 글에서는 서버와 클라이언트를 연결해주는
네트워크의 기본 개념에 대해 알아보자.

profile
while(life) { keep_growing() };

0개의 댓글