웹 개발에서 웹서버, WAS서버, API서버는 매우 중요한 역할을 합니다. 하지만 이 세 가지의 차이점과 각각의 역할에 대해 명확히 알지 못하는 경우가 있습니다. 이 글에서는 웹서버, WAS서버, API서버의 개념을 차근차근 정리하고, 어떤 상황에서 어떤 서버를 사용해야 하는지 깊이 있게 살펴보겠습니다.
1. 웹서버(Web Server)란?
웹서버는 클라이언트(주로 웹 브라우저)로부터 HTTP 요청을 받아 정적 콘텐츠(HTML, CSS, JavaScript, 이미지 등)를 제공하는 서버입니다. 웹서버는 주로 정적인 파일을 처리하며, 동적인 데이터를 처리하지 않습니다. 웹서버는 이들 중 가장 빠르고 간단한 구조입니다.
주요 역할
- 정적 콘텐츠 제공: HTML, CSS, JavaScript, 이미지 등의 파일을 클라이언트에게 전달.
- HTTP 프로토콜 처리: 클라이언트와 서버 간의 HTTP 요청/응답을 관리.
- 로드 밸런싱: 트래픽 분산을 통해 서버 부하를 줄이는 역할도 수행 가능.
예시
- Apache HTTP Server
- Nginx
- Microsoft IIS
2. WAS서버(Web Application Server)란?
WAS(Web Application Server)는 동적인 웹 애플리케이션을 실행하고, 비즈니스 로직을 처리하는 서버입니다. 클라이언트의 요청을 받아 데이터베이스와 상호작용하거나, 복잡한 계산을 수행한 후 결과를 반환합니다.
주요 역할
- 비즈니스 로직 처리: 사용자 요청에 따라 필요한 데이터를 가공하거나, 데이터베이스와 상호작용.
- 동적 콘텐츠 생성: JSP, PHP, Python 등의 언어를 사용하여 동적인 웹 페이지를 생성.
- 세션 관리: 사용자 세션 정보를 유지하고 관리.
예시
- Apache Tomcat
- PHP Server
- Spring Boot 내장 서버
3. API서버(API Server)란?
API서버는 클라이언트와 서버 간의 데이터 교환을 위해 설계된 서버입니다. 주로 RESTful API 또는 GraphQL과 같은 프로토콜을 사용하여 JSON이나 XML 형식으로 데이터를 제공합니다. 위 두 서버와 다르게 화면을 표시하지 않고 데이터만 담고 있기에 여러 플랫폼에서 데이터를 자유롭게 사용할 수 있습니다.
주요 역할
- 데이터 제공: 클라이언트 애플리케이션(모바일 앱, 웹 앱 등)에 필요한 데이터를 제공.
- 인터페이스 제공: 서버의 비즈니스 로직을 외부에 노출하여 다른 시스템과 통신 가능.
- 인증 및 보안: OAuth, JWT 등의 인증 방식을 통해 데이터 접근 권한을 관리.
예시
- Node.js + Express
- Django REST Framework
- Spring Boot
- GraphQL Apollo Server
Rest와 Restful API
- Rest API: 경로를 통해 자원을 특정, HTTP Method 로 동작을 특정하여 사용하는 형태.
- Restful API: 더 엄격한 Rest API로, 자원 이름에 동사를 사용할 수 없음.
- Restful 하지 않은 예시: GET: /getAllUsers (동사사용)
- Restful 한 예시: GET: /users
4. 웹서버, WAS서버, API서버 구조도
flowchart subgraph webServer r1["정적 페이지 반환"] ~~~ was subgraph was direction LR r2["동적 페이지 반환"] ~~~ apiServer subgraph apiServer r3["JSON등 데이터 반환"] end end end
5. 언제 어떤 서버를 사용할까?
웹서버
- 적용 사례: 정적 웹사이트, 블로그, 포트폴리오 사이트 등.
- 왜 사용할까?: 단순하고 빠르게 정적 파일을 제공할 수 있음.
WAS서버
- 적용 사례: 온라인 쇼핑몰, 커뮤니티 사이트 등.
- 왜 사용할까?: 동적인 데이터 처리와 복잡한 비즈니스 로직이 필요할 때 적합.
API서버
- 적용 사례: 모바일 앱 백엔드, SPA(Single Page Application), 마이크로서비스 아키텍처.
- 왜 사용할까?: 다양한 클라이언트와 데이터를 주고받으며 확장 가능한 서비스를 구축할 때 유리.
6. 결론
웹서버, WAS서버, API서버는 각각의 목적과 역할이 다르다.
- 웹서버는 정적 콘텐츠를 제공하는 데 특화되어 있습니다.
- WAS서버는 동적인 웹 애플리케이션을 구현하고 비즈니스 로직을 처리합니다.
- API서버는 데이터를 중심으로 클라이언트와 서버 간의 통신을 담당합니다.
오늘날의 프로덕션 환경에서는 이 여러 형태의 서버를 조합하여 사용한다. 여러 개의 WAS 서버 앞에 웹 서버를 두고 리버스 프록시를 설정해 로드 밸런싱이나 캐싱을 하는 등으로 말이다.
답글 남기기