[Web] WS, WAS 차이

koline·2024년 10월 8일
0

Web

목록 보기
10/10

WS, WAS 란?


일반적으로 HTTP 요청을 보내면 두 개의 서버를 통해 엔드포인트에 도달하게 된다. WS (Web Server)WAS (Web Application Server)이다.

개발환경에서는 저런식으로 서버를 구성하지 않는데도 잘 동작하는데, 운영 환경에서는 서버를 일반적으로 저렇게 구성한다.

각각의 역할과 차이를 알아보고 왜 저런 구성이 되는지 알아보자.




WS


Web ServerNginx, Apache와 같은 서버를 말하며, 정적 컨텐츠(HTML, CSS, JavaScript, 이미지 등)를 클라이언트에 제공하는 역할을 담당한다.

여기서 말하는 정적 컨텐츠별도의 가공 없이 그대로 반환하는 컨텐츠를 말한다.

즉, http://domain.com/css/style.css와 같은 요청이 오면 웹서버는 별다른 처리를 하지않고 해당 파일을 그대로 반환해준다.

server {
    listen 80;
    server_name yourdomain.com;

    # 정적 파일 제공
    location /static/ {
        root /var/www/html;
    }

    # 동적 요청을 WAS로 프록시
    location / {
        proxy_pass http://localhost:8080; # WAS가 8080 포트에서 동작
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

nginx를 예로 들면 위와 같이 설정함으로써 /static/ 경로로 시작하는 요청은 nginx가 직접 /var/www/html 경로 하위에 있는 파일을 찾아 반환하고, 나머지 모든 요청은 WAS로 전달한다.




WAS


그와 반대로 Web Application Server 서버는 Tomcat, Jeus와 같은 서버로, 동적 컨텐츠를 생성하고, 비즈니스 로직을 처리하는 역할을 담당한다.

여기서 말하는 동적 컨텐츠란 파일을 그대로 반환하는 것이 아닌 데이터베이스와의 상호작용, 사용자 인증, 세션 관리 등 복잡한 비즈니스 로직의 처리를 말한다.

@Controller
public class MyController {

    @GetMapping("/greeting")
    public String greeting(Model model) {
        model.addAttribute("message", "안녕하세요!");
        return "greeting"; // 뷰 이름 (예: greeting.html)
    }
}

Spring MVC를 예로 들면 위와 같이 데이터를 Model에 담고 응답을 반환하는 역할은 WAS서버가 담당한다.




분리하는 이유


물론 WAS에도 웹서버가 내장되어 있기 때문에, 개발 단계에서 별도의 웹서버 없이 웹 애플리케이션만 실행해서 사용해도 문제없이 잘 작동한다.

하지만 트래픽이 증가할 경우 WAS가 이 모든 업무를 처리하기엔 부담이 될 수 있다. 또한 이 둘의 역할을 분리함으로써 각각을 필요에 따라 독립적으로 확장할 수 있다는 장점이 있다.

그리고 웹서버는 이러한 역할에 맞게 정적 파일 제공에 최적화 되어있어 WSWAS의 성능을 최적화 할 수 있다는 장점이 있다.

또한, 백엔드를 API로 개발할 경우 프론트엔드를 WS로 두어 외부와의 직접적인 접근을 제한하고 WAS는 내부 네트워크에서만 접근하도록 하는 등 보안을 강화할 수 있다.

이렇게 구성할 경우 WSSSL을 적용하고 내부에서는 HTTP로 평문 데이터를 사용하거나, WAS의 로드밸런싱 설정, 웹 애플리케이션 방화벽(WAF), 자주 사용하는 데이터의 캐싱 등 다양한 방면에서 WAS의 부담을 줄여줄 수 있다.

profile
개발공부를해보자

0개의 댓글

관련 채용 정보