비슷하게 들리지만 목적과 동작이 조금씩 다른 용어들
특히 백엔드 개발을 하다 보면 이 개념들이 혼용되거나 분리되기도 함
서버 아키텍처를 설계하거나 클라우드 환경에서 마이크로서비스를 구성할 때 반드시 정확히 알아야 함
1. 웹서버 (Web Server)
- 정적인 리소스(HTML, CSS, JS, 이미지 등)를 클라이언트에게 전달
- 클라이언트의 요청(Request)을 받고, 응답(Response)을 처리
- 자체적으로는 동적인 비즈니스 로직 처리 불가
주요 기능
- 정적 파일 서빙
- 로드 밸런싱
- SSL 인증 처리 (HTTPS)
예시
- Apache HTTP Server, Nginx
2. WAS (Web Application Server)
- 동적인 로직 처리 가능 (DB 접근, 인증, 비즈니스 로직 등)
- Java 진영에서는 서블릿 기반의 요청 처리
- Spring, JSP 등 웹 애플리케이션 실행을 지원
예시
- Tomcat (가장 보편적 WAS)
- Jetty, JBoss 등
3. API 서버
- JSON, XML 등 데이터 중심 통신을 수행
- 클라이언트와 서버 간 데이터 송수신에 집중
- 모바일 앱, 프론트엔드 프레임워크(Vue, React 등)와의 통신에 사용됨
역할
- RESTful API 제공
- DB와 직접 연결되어 로직 처리
- 인증, 데이터 가공, 응답 처리
4. RestAPI
- HTTP 기반에서 자원을 URI로 표현하고, HTTP 메서드로 동작을 정의하는 방식
- REST 아키텍처 스타일에 맞춰 설계된 API
- URI, 메서드, 상태 코드, 헤더 등을 표준화해서 사용
기본 구성
- 자원(Resource):
/users, /posts
- 행위(Method): GET, POST, PUT, DELETE
- 표현(Representation): JSON, XML 등
5. Restful API
- REST 원칙을 철저히 따르는 API 설계 방식
- 상태 저장 X, 일관성 O, 자원 중심 URI
- "Restful"이라는 용어는 지키는 정도에 따라 달라짐
예시
GET /articles/1/comments → 특정 글의 댓글 목록
POST /users → 사용자 생성
DELETE /users/1 → 특정 사용자 삭제
정리 요약
| 개념 | 역할 |
|---|
| 웹서버 | 정적 파일 전달, 요청 수신 |
| WAS | 동적 처리, 비즈니스 로직 수행 |
| API 서버 | 프론트-백엔드 간 데이터 처리 |
| RestAPI | HTTP 표준 기반 API 방식 |
| Restful API | REST 원칙을 철저히 따른 설계 방식 |
요즘은 웹서버 + WAS 통합 운영하거나 API Gateway를 따로 구성하기도 함
RESTful은 하나의 규약일 뿐이며, 상황에 따라 유연하게 해석하는 것도 중요함
GraphQL, gRPC처럼 REST를 대체하거나 보완하는 방식도 늘어나고 있음