[백엔드 핵심] #1.1 WAS와 WS

Jaeyoo (유재형)·2022년 4월 21일
0

📌 백엔드 핵심

목록 보기
2/5

1. WAS와 WS


1.1 웹 서버 (Web Server)

웹 : 인터넷을 기반으로한 정보 공유 서비스
서버 : 클라이언트에게 정보나 서비스를 제공하는 컴퓨터 시스템

웹 서버 : 인터넷 기반 클라이언트에게 웹 서비스를 제공하는 컴퓨터 시스템

특징

  • 정적 컨텐츠(HTML, CSS, JS, 이미지, 파일 등)를 제공하는 서버를 웹 서버라고한다.
  • HTML은 프로그래밍 언어가 아니기 때문에 비즈니스 로직을 수행하지 못함.
    • 정적인 데이터로 한정
  • 만약 동적 요청을 받으면 WAS에 요청을 넘긴후 처리한 결과를 받아 클라이언트에 전달.
  • ex) apache, NginX

1.2 웹 어플리케이션 서버 (Web Application Server)

어플리케이션 : DB를 읽기, 파일 읽기 쓰기 등 비즈니스 로직이 포함된것을 의미

웹 어플리케이션 서버 : 웹 어플리케이션을 실행 시켜 기능을 수행하고 그 결과를 웹 서버에 전달하는 미들웨어

특징

  • php나 spring 같은 언어들을 사용해 동적인 페이지를 생성 할 수 있는 서버
  • DB 조회나 비즈니스 로직이 있는 동적 컨텐츠 제공
  • 웹 서버 + 웹 컨테이너 (컨테이너 : jsp, servlet을 실행 할 수있는 소프트웨어)
  • ex) Tomcat

Apache Tomact 이라고 하는 이유
Apache는 웹 서버이고 Tomcat은 웹 어플리케이션 서버 인데 Apache Tomacat은?

  • 2008년에 릴리즈된 Tomcat 5.5 부터는 정적 컨텐츠 처리 기능이 추가됨
    • 순수 Apache를 사용하는것과 성능 차이가 없다.
    • Tomcat이 Apache 기능을 포함해 Apache Tomcat이라고 한다.

1.3 WAS 와 WS를 구분하는 이유

1) Web Server 가 필요한 이유

클라이언트(웹 브라우저)에 이미지 파일(정적 파일)을 보내는 과정을 생각해보자

  • 이미지 파일 같은 정적인 파일은 HTML이 클라이언트로 보내질때 함께 보내는것이 아니다.
  • 클라이언트가 HTML을 먼저 받고 그에 맞게 이미지를 다시 서버로 요청하는것이다.
  • 웹 서버를 통해 정적인 파일들을 앞단에서 빠르게 보내줄수있다.
  • 웹 서버에서 정적 컨텐츠 처리만 하도록 기능을 분배해 서버의 부담을 줄일 수 있다.

위 그림으로 본다면
img 요청이 왔을때 NginX의 static 폴더에서 img를 저장해 보내주면 WAS인 Spring까지 가지않고 파일을 보낼수있어 WAS의 부담을 줄일수있다.

2) WAS 가 필요한 이유

  • 웹 페이지는 정적 컨텐츠와 동적 컨텐츠 모두 존재
  • 사용자의 요청에 맞게 동적 컨텐츠를 만들어서 제공해야한다.
  • 만약 WS만을 이용한다면 사용자가 원하는 요청에대한 모든 결과값을 미리 만들어야한다.
    • 이렇게 하기에는 자원이 부족
  • WAS를 통해 요청에 맞는 데이터를 DB에서 가져와 비즈니스 로직에 맞게 결과를 만들어 제공.
    • 자원을 효율적으로 사용할 수 있다.

위 그림으로 본다면

  1. https://www.abc.com/api/users 로 클라이언트가 접근
  2. 동적 요청이므로 NginX는 WAS에 요청을 넘김
  3. WAS에서는 백엔드 언어인 spring을 이용해 DB를 조회후 비즈니스 로직 실행
  4. 결과값을 NginX에 넘김
  5. NginX가 클라이언트에게 결과를 전달

3) WAS가 WS기능을 모두 수행하면 되지않나?

위 그림을 보면 이런생각이 들수있다.

Apache Tomcat 처럼 WAS 안에 WS가 들어있는데 WAS로 WS를 대체하면 되지않나?

결론 부터 말하면 대체하지 않는것이좋다. 그 이유는 성능과 보안에 연관이 있다.

1. 기능을 분리하여 서버 부하 방지

  • WAS는 DB 조회나 다양한 비즈니스 로직을 처리하는데 집중
    • 단순 정적 컨텐츠는 WS에서 빠르게 제공하는것이 좋다.
  • WAS는 기본적으로 동적 컨텐츠를 제공하기위해 존재하는 서버
    • 정적 컨텐츠 요청까지 WAS가 처리시 부하가 커지게됨
    • 동적 컨텐츠의 처리가 지연된다.

2. 물리적으로 분리해 보안 강화

  • SSL에 대한 암복호화 처리에 웹 서버를 사용

SSL이란?

  • Secure Sockets Layer
  • TLS과 같은뜻 (SSl의 새로운 버전이 TLS)
  • 클라이언트/서버 응용 프로그램이 네트워크로 통신을 하는 과정에서 도청, 간섭, 위조를 방지하기 위해서 설계되었다.
  • HTTPS가 SSL 프로토콜을 기반이다. (자세한 내용은 추후에 작성해보겠다.)

3. 여러대의 WAS 연결 가능

  • Load Balancing(부하 분산)을 위해서 웹 서버를 사용
  • 대용량 웹 어플리케이션의 경우(여러 서버 사용) WS와 WAS를 분리하여 무중단 운영을 위한 장애 극복을 할 수 있다.

4. 여러 웹 어플리케이션 서비스 가능

ex) 한 서버에서 Java Application과 PHP Application 사용 가능

5. 접근 허용 IP 관리와 여러 서버의 세션관리에도 효율적

4) 요약

  • 자원 이용의 효율성
  • 무중단 장애 극복
  • 배포 및 유지보수의 편의성

위와 같은 이유로 WS와 WAS를 분리한다.

profile
기록과 반복

0개의 댓글