서버란 무엇일까?

david1-p·2025년 10월 29일

CS 지식 창고

목록 보기
13/26

서버

1. 서버와 클라이언트

  • 서버 (Server) : 클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 또는 프로그램입니다.
  • 클라이언트 (Client) : 서버에게 정보나 서비스를 요청하는 컴퓨터 또는 프로그램입니다.

2. 웹 애플리케이션 운영 서버의 종류

웹 서버

1) 웹 서버 (Web Server)

  • 역할 : 정적 콘텐츠(예: HTML, CSS, 이미지)를 보관하고 있다가, 클라이언트가 요청하면 그 콘텐츠를 전달합니다.
  • 과정 :

    클라이언트가 보고 싶은 콘텐츠를 웹 서버에 요청
    → 웹 서버는 자신이 가진 정적 콘텐츠 중에서 클라이언트가 요청한 것이 있는지 검색
    → 해당 콘텐츠를 발견하면 클라이언트에게 전달
    → 클라이언트는 자신이 요청했던 콘텐츠를 웹 서버로부터 받아 봄
    → 웹 서버는 클라이언트가 요청했던 내용을 저장 (logging)


2) 애플리케이션 서버 (Application Server, WAS)

  • 역할 : 동적 콘텐츠(비즈니스 로직 처리, DB 조회 등이 필요한 콘텐츠)를 생성하여 클라이언트에게 전달하는 서버입니다. (보통 WAS (Web Application Server)라고 부릅니다.)
  • 과정 :

    클라이언트가 웹 서버에 동적 콘텐츠를 요청
    → 웹 서버는 요청을 애플리케이션 서버(WAS)에 전달
    → 애플리케이션 서버는 비즈니스 로직을 실행하여 동적 콘텐츠를 생성
    → (필요시 다음 단계의 DB 서버에 데이터를 요청)
    → 생성된 동적 콘텐츠를 웹 서버로 전달
    → 애플리케이션 서버는 처리 내용을 저장 (logging)
    → 웹 서버는 애플리케이션 서버에게 받은 동적 콘텐츠를 클라이언트에게 전달
    → 웹 서버도 클라이언트가 요청했던 내용을 저장 (logging)
    → 클라이언트는 처음 웹 서버에 요청했던 동적 콘텐츠를 받아 봄


3) DB 서버 (Database Server)

  • 역할 : 애플리케이션의 데이터를 영구적으로 저장하고 관리하며, 애플리케이션 서버의 요청에 따라 데이터를 조회, 수정, 삭제(CRUD)합니다.
  • 과정 :

    클라이언트가 웹 서버에 동적 콘텐츠를 요청
    → 웹 서버는 이 요청을 애플리케이션 서버에 전달
    → 애플리케이션 서버는 비즈니스 로직을 실행하던 중 데이터가 필요함을 인지
    → 애플리케이션 서버는 DB 서버에 데이터 쿼리(Query)를 요청
    → DB 서버는 요청받은 쿼리를 실행하여 결과(데이터)를 반환 (처리 내용 logging)
    → 애플리케이션 서버는 DB에서 받은 데이터를 가공하여 동적 콘텐츠(예: HTML, JSON)를 생성
    → 생성된 콘텐츠를 웹 서버에 전달 (처리 내용 logging)
    → 웹 서버는 전달받은 콘텐츠를 클라이언트에게 제공 (처리 내용 logging)


4) 리버스 프록시 서버 (Reverse Proxy Server)

  • 역할 : 클라이언트의 요청을 대신 받아 내부 서버(웹 서버 또는 애플리케이션 서버)로 전달하는 서버입니다. 클라이언트는 리버스 프록시를 실제 서버라고 인식하며, 이를 통해 로드 밸런싱(부하 분산), SSL 암호화, 캐싱 등의 기능을 수행합니다.
  • 과정 (로드 밸런싱 예시) :

    (애플리케이션 서버 B, C가 리버스 프록시 뒤에 있다고 가정)

    클라이언트가 서버에 콘텐츠를 요청 (이 요청은 리버스 프록시 서버가 받음)
    → 리버스 프록시 서버는 자신이 관리하는 여러 대의 내부 서버(B, C) 상태를 확인
    → (예: B가 바쁘면) 가장 한가한 C 서버에게 클라이언트의 요청을 전달(forwarding)
    → C 서버는 요청을 처리 (필요시 DB 조회)한 후 응답을 리버스 프록시 서버에게 반환
    → 리버스 프록시 서버가 이 응답을 최종적으로 클라이언트에게 전달
    → 클라이언트는 요청한 콘텐츠를 받아볼 수 있음

  • 예시 : 수강 신청이나 티켓 예매 사이트처럼 트래픽이 몰릴 때, 리버스 프록시(로드 밸런서)가 요청을 여러 서버로 나누어 보내 시스템 다운을 방지합니다.

5) 캐시 서버 (Cache Server)

  • 역할 : 자주 요청되는 데이터나 콘텐츠를 미리 복사해 저장(캐싱)해두고, 다음 요청 시 DB나 애플리케이션 서버를 거치지 않고 더 빠르게 응답하기 위한 서버입니다.
  • 과정 :

    클라이언트가 이전에 요청했던 콘텐츠를 다시 요청
    → 리버스 프록시 또는 웹 서버가 요청을 받음
    → DB나 애플리케이션 서버에 요청하기 전에 캐시 서버를 먼저 확인
    (Cache Hit) 캐시 서버에 해당 콘텐츠가 저장되어 있으면
    → DB/애플리케이션 서버를 거치지 않고 즉시 캐시에서 콘텐츠를 꺼내 응답
    (Cache Miss) 만약 캐시에 없으면
    → 기존 방식대로 애플리케이션 서버와 DB 서버를 거쳐 콘텐츠를 가져옴
    이 콘텐츠를 캐시 서버에 저장하고 클라이언트에게 전달 (다음 요청을 대비)

참고) 리버스 프록시 vs. 포워드 프록시

  • 포워드 프록시 (Forward Proxy): 클라이언트 쪽에 위치합니다. 클라이언트가 인터넷(예: google.com)에 접속할 때 대신 요청을 보내주는 서버입니다. (예: 회사 내부망에서 외부 인터넷에 접속할 때 보안이나 캐싱을 위해 사용)
  • 리버스 프록시 (Reverse Proxy): 서버 쪽에 위치합니다. 클라이언트가 우리 서버에 접속할 때, 그 요청을 대신 받아 내부 서버로 연결해주는 서버입니다. (예: 로드 밸런싱, SSL 암호화 처리)
profile
DONE IS BETTER THAN PERFECT.

0개의 댓글