웹서버 WAS API서버 RestAPI RestfulAPI
웹 개발을 공부하다보면 자주 마주치는 개념들 입니다.
비슷해보이지만 엄연히 다른 이 개념들을 헷갈리지 않게 각각의 개념부터 비슷한 두 개념을 비교해가며 설명해드리겠습니다.
정적인 파일 (HTML, CSS 등 -> 즉시 응답 가능한 컨텐츠) 을 클라이언트에게 전달해주는 서버
동적인 웹 페이지를 생성하기 위해 로직을 처리하는 서버
API (Application Programming Interface) : 소프트웨어 애플리케이션 간에 데이터, 기능, 특징을 교환할 수 있도록 하는 규칙이나 프로토콜
프론트엔드나 외부 시스템에 데이터를 전달하는 백엔드 서버
REST (Representatial State Transfer) : 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미
REST 아키텍쳐 스타일을 적용한 API
REST 규칙을 더 엄격하게 준수한 API
| 항목 | 웹서버 (Web Server) | WAS (Web Application Server) |
|---|---|---|
| 주요 역할 | 정적 리소스 제공 (HTML, CSS, JS 등) | 비즈니스 로직 처리 |
| 처리 방식 | 클라이언트 요청 -> 파일 응답 | 클라이언트 요청 -> 로직 처리 -> 응답 생성 |
| 응답 형태 | 정적인 파일 그대로 | 동적으로 생성된 HTML, JSON 등 |
| 예시 | Nginx, Apache HTTP Server | Tomcat, Jetty, JBoss |
| 특징 | 빠르고 가벼움 | 상대적으로 무겁고 복잡한 처리 가능 |
| 항목 | WAS (Web Application Server) | API 서버 (API Server) |
|---|---|---|
| 목적 | 사용자 요청에 따라 동적 페이지 렌더링 | 프론트엔드나 외부 시스템에 데이터 제공 |
| 응답 형태 | HTML, JSP 등 | JSON, XML 등 (주로 JSON) |
| 포함 요소 | 비즈니스 로직 + View 렌더링 | 오직 비즈니스 로직 처리 및 데이터 응답 |
| 대상 | 브라우저 사용자 | 웹/앱 클라이언트, 외부 시스템 |
| 예시 | Spring MVC (JSP 포함) | Spring Boot + REST Controller |
| 항목 | API 서버 (API Server) | REST API |
|---|---|---|
| 정의 | API를 제공하는 서버 전체 | REST 아키텍처 스타일을 따르는 API 설계 방식 |
| 범위 | REST, RPC, GraphQL 등 모두 포함 | REST 아키텍쳐 원칙만 해당 |
| 목적 | 다양한 방식으로 데이터 제공 | 리소스 중심의 URI + HTTP 메서드 설계 |
| 사용 방식 | API 구현 방식은 자유로움 | HTTP 메서드 기반(GET, POST 등) |
| 항목 | REST API | Restful API |
|---|---|---|
| 정의 | REST 아키텍처 스타일을 따르는 API | REST 원칙을 엄격하게 지킨 REST API |
| 규칙 충실도 | 일부만 지킬 수도 있음 | URI, 메서드, 상태코드 등 완전한 준수 |
| URI 설계 | REST 스럽게 작성했지만 일관성 부족 가능 | 명확한 리소스 기반 URI 구조 |
| 응답 방식 | HTTP 상태코드 활용이 부족할 수 있음 | 정확한 상태코드와 일관된 응답 구조 사용 |