서버(Server)란 무엇인가? 웹서버·WAS·DB서버 개념 완전 정리
서버(Server)란 네트워크를 통해 클라이언트(사용자 장치)에게 데이터, 서비스, 리소스를 제공하는 컴퓨터 또는 소프트웨어 프로그램이다.
이 글은 IT 입문자, 웹 개발 입문자, 비개발자를 대상으로 작성되었다. "서버가 다운됐다", "서버에 저장한다"는 말을 일상적으로 듣지만 정확히 서버가 무엇인지 이해하는 데 도움이 될 것이다.
서버(Server)의 기본 개념
서버(Server)는 영어로 '제공하는 것'이라는 뜻의 'Serve'에서 왔다. 네트워크에서 서버는 요청(Request)을 받아 응답(Response)을 보내는 역할을 한다.
쉽게 이해하려면 식당을 떠올리면 된다:
- 클라이언트(손님): 메뉴를 주문한다
- 서버(종업원+주방): 주문을 받아 음식을 제공한다
인터넷에서도 마찬가지다. 브라우저(클라이언트)가 naver.com에 접속하면, 네이버 서버가 웹페이지를 보내준다.
클라이언트-서버 구조의 동작 원리
웹 서비스의 기본 동작 흐름:
- 사용자가 브라우저 주소창에 URL을 입력한다
- 브라우저가 DNS 서버에 해당 도메인의 IP 주소를 조회한다
- 브라우저가 해당 IP의 웹서버에 HTTP/HTTPS 요청을 보낸다
- 웹서버가 요청을 처리하고 HTML, CSS, 이미지 등을 응답으로 보낸다
- 브라우저가 받은 데이터를 화면에 렌더링한다
서버는 수천~수백만 명의 사용자 요청을 동시에 처리해야 하므로, 일반 PC보다 강력한 하드웨어와 안정적인 운영 환경이 필요하다.
서버의 종류: 역할에 따른 분류
웹서버(Web Server)
웹서버는 HTTP/HTTPS 요청을 받아 정적 파일(HTML, CSS, 이미지, JS)을 클라이언트에 전달하는 서버다.
대표적인 웹서버 소프트웨어:
- Nginx: 고성능, 리버스 프록시 기능에 강점, 2025년 점유율 1위
- Apache HTTP Server: 오픈소스, 전 세계에서 가장 오래 사용된 웹서버
Netcraft 2025년 2월 조사에 따르면, Nginx가 전체 웹서버 시장의 약 34%를 차지하며 1위다.
WAS(Web Application Server)
WAS는 동적 콘텐츠를 처리하는 서버다. 사용자 요청에 따라 데이터베이스에서 데이터를 조회하거나, 비즈니스 로직을 실행하고, 동적으로 HTML을 생성해 응답한다.
대표적인 WAS 소프트웨어:
- Node.js: JavaScript 런타임 환경, 비동기 I/O 처리에 강점
- Apache Tomcat: Java 기반, 전 세계에서 가장 널리 사용되는 WAS
DB 서버(Database Server)
DB 서버는 데이터를 저장하고 조회하는 서버다. WAS가 DB 서버에 쿼리를 보내면, DB 서버가 데이터를 반환한다.
대표적인 DB 서버:
- MySQL / MariaDB: 오픈소스 관계형 DB, 웹 서비스에서 가장 많이 사용
- Redis: 인메모리 캐시 서버, 세션 저장 등에 사용
웹서버 vs WAS vs DB서버 역할 비교표
| 구분 | 주요 역할 | 처리 내용 | 대표 소프트웨어 |
|---|---|---|---|
| 웹서버 | 정적 콘텐츠 제공 | HTML, CSS, 이미지, JS | Nginx, Apache |
| WAS | 동적 콘텐츠 처리 | 로그인, DB 조회, 비즈니스 로직 | Tomcat, Node.js |
| DB서버 | 데이터 저장·조회 | SQL 쿼리 처리 | MySQL, PostgreSQL |
클라우드 서버와 온프레미스 서버
과거에는 기업이 직접 서버를 구매해 데이터센터에 구축(온프레미스)했다. 최근에는 AWS, Azure, GCP 같은 클라우드 서비스에서 가상 서버(VM)를 빌려 사용하는 방식이 일반화되었다.
| 항목 | 온프레미스 서버 | 클라우드 서버 |
|---|---|---|
| 초기 비용 | 높음 (하드웨어 구매) | 낮음 (구독/종량제) |
| 유지보수 | 직접 담당 | 클라우드 업체 담당 |
| 확장성 | 어려움 | 즉시 확장 가능 |
| 대표 서비스 | 자체 IDC | AWS EC2, Azure VM |
서버리스(Serverless)란?
서버리스는 개발자가 서버를 직접 관리하지 않아도 되는 방식이다. 실제로 서버가 없다는 의미가 아니라, 인프라 관리를 클라우드 업체가 담당한다. AWS Lambda, Cloudflare Workers 등이 대표적이다. 이는 곧 소규모 개발팀이나 스타트업이 인프라 관리 부담 없이 서비스를 운영할 수 있게 되었다는 의미다.
자주 묻는 질문 (FAQ)
Q1. 일반 PC를 서버로 사용할 수 있나요? A. 기술적으로는 가능하다. 일반 PC에 Apache나 Nginx 같은 서버 소프트웨어를 설치하면 로컬 서버로 사용할 수 있다. 다만 24시간 운영·안정성·보안 면에서 서버 전용 하드웨어나 클라우드 서버가 훨씬 낫다.
Q2. 서버가 다운(down)되면 어떻게 되나요? A. 해당 서버가 제공하는 서비스에 접근할 수 없다. 대형 서비스는 여러 서버를 운영하고 로드 밸런서로 트래픽을 분산해 단일 서버 장애 시에도 서비스가 유지되도록 한다.
Q3. 포트(Port)란 무엇인가요? A. 포트는 하나의 서버에서 여러 서비스를 구분하는 번호다. HTTP는 80번, HTTPS는 443번, MySQL은 3306번을 기본으로 사용한다. IP 주소가 건물 주소라면, 포트는 그 건물 안의 각 사무실 호수에 해당한다.
Q4. 웹서버와 WAS를 따로 두는 이유는 무엇인가요? A. 역할을 분리하면 각각을 독립적으로 최적화·확장할 수 있다. 정적 파일은 웹서버(Nginx)가 매우 빠르게 처리하고, 동적 로직은 WAS가 처리한다. 반면에 Next.js, Django 같은 현대 풀스택 프레임워크는 WAS 기능을 내장해 단일 서버로 운영하는 경우도 많다.
Q5. 로컬호스트(localhost)란 무엇인가요? A. 자신의 컴퓨터를 서버로 지정하는 특수 주소다. IP 주소로는 127.0.0.1에 해당한다. 개발 중에 외부에 배포하지 않고 자신의 컴퓨터에서 서버를 테스트할 때 사용한다.