웹서버와 WAS서버, API서버 개념 정리

    웹 개발에서 웹서버, WAS서버, API서버는 매우 중요한 역할을 합니다. 하지만 이 세 가지의 차이점과 각각의 역할에 대해 명확히 알지 못하는 경우가 있습니다. 이 글에서는 웹서버, WAS서버, API서버의 개념을 차근차근 정리하고, 어떤 상황에서 어떤 서버를 사용해야 하는지 깊이 있게 살펴보겠습니다.


    1. 웹서버(Web Server)란?

    웹서버는 클라이언트(주로 웹 브라우저)로부터 HTTP 요청을 받아 정적 콘텐츠(HTML, CSS, JavaScript, 이미지 등)를 제공하는 서버입니다. 웹서버는 주로 정적인 파일을 처리하며, 동적인 데이터를 처리하지 않습니다. 웹서버는 이들 중 가장 빠르고 간단한 구조입니다.

    주요 역할

    1. 정적 콘텐츠 제공: HTML, CSS, JavaScript, 이미지 등의 파일을 클라이언트에게 전달.
    2. HTTP 프로토콜 처리: 클라이언트와 서버 간의 HTTP 요청/응답을 관리.
    3. 로드 밸런싱: 트래픽 분산을 통해 서버 부하를 줄이는 역할도 수행 가능.

    예시

    • Apache HTTP Server
    • Nginx
    • Microsoft IIS

    2. WAS서버(Web Application Server)란?

    WAS(Web Application Server)는 동적인 웹 애플리케이션을 실행하고, 비즈니스 로직을 처리하는 서버입니다. 클라이언트의 요청을 받아 데이터베이스와 상호작용하거나, 복잡한 계산을 수행한 후 결과를 반환합니다.

    주요 역할

    1. 비즈니스 로직 처리: 사용자 요청에 따라 필요한 데이터를 가공하거나, 데이터베이스와 상호작용.
    2. 동적 콘텐츠 생성: JSP, PHP, Python 등의 언어를 사용하여 동적인 웹 페이지를 생성.
    3. 세션 관리: 사용자 세션 정보를 유지하고 관리.

    예시

    • Apache Tomcat
    • PHP Server
    • Spring Boot 내장 서버

    3. API서버(API Server)란?

    API서버는 클라이언트와 서버 간의 데이터 교환을 위해 설계된 서버입니다. 주로 RESTful API 또는 GraphQL과 같은 프로토콜을 사용하여 JSON이나 XML 형식으로 데이터를 제공합니다. 위 두 서버와 다르게 화면을 표시하지 않고 데이터만 담고 있기에 여러 플랫폼에서 데이터를 자유롭게 사용할 수 있습니다.

    주요 역할

    1. 데이터 제공: 클라이언트 애플리케이션(모바일 앱, 웹 앱 등)에 필요한 데이터를 제공.
    2. 인터페이스 제공: 서버의 비즈니스 로직을 외부에 노출하여 다른 시스템과 통신 가능.
    3. 인증 및 보안: 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 서버 앞에 웹 서버를 두고 리버스 프록시를 설정해 로드 밸런싱이나 캐싱을 하는 등으로 말이다.


    게시됨

    카테고리

    작성자

    태그:

    Obtuse의 테크 블로그 더 알아보기

    이 블로그에 새 글이 나올 때 마다 이메일로 알림을 받아보는 건 어때요?


    ※구독 버튼을 클릭하면 obtuse.kr의 개인정보 처리방침의 광고성 정보 수신에 동의하는 것으로 간주합니다.

    댓글

    답글 남기기

    이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

    이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.