[HTTP] 웹 서버와 WAS

서정범·2023년 4월 17일
0

HTTP

목록 보기
2/13
post-thumbnail

웹 서버

웹(Web)의 두 가지 의미가 존재합니다.

  • 일반적인 의미: 거미집 모양의 망
  • 기술적인 의미: 인터넷 망안에서 정보를 공유, 검색할 수 있게 하는 시스템입니다. 사용자들은 인터넷에서 데이터를 주고 받을 수 있습니다. 월드 와이드 웹(WWW)이라고 부르는 게 웹입니다.

필요성

웹이 존재하기 이전에 SMTP(전자우편), FTP(파일전송), Telnet(원격접속)등 다양하게 있었는데, 팀 버너스리가 SMTP나 FTP를 통해 정보를 주고 받는 것을 비효율적이라 생각하며 WWW(월드 와이드 웹)을 고안했습니다.

사용되는 기술

웹에서 신뢰성 있는 데이터를 주고 받기 위해서 대표적으로 사용되는 3가지 기술이 있습니다.

  • HTTP(통신 규칙)
  • URI & URL(주소)
  • HTML(내용)

서버(Server)

서버는 네트워크를 통해 클라이언트에게 정보나 서비스를 제공하는 컴퓨터 시스템을 의미합니다.

웹 서버(Web Server)

인터넷을 기반으로 클라이언트에게 웹 서비스를 제공하는 컴퓨터

웹 서버의 동작의 경우 클라이언트와 서버 입장에서 알 수 있습니다.

  • 클라이언트 입장: 웹 서버에게 주소(URL)을 가지고 통신 규칙(HTTP)에 맞게 요청하면, 알맞은 내용(HTML)을 응답 받습니다.
  • 서버 입장: 클라이언트의 요청을 기다리고, 웹 요청(HTTP) 에 대한 데이터를 만들어서 응답, 이때 데이터는 웹에서 처리할 수 있는 html, css, 이미지 등 정적인 데이터로 한정

웹 서버는 Apache와 같은 무료로 공개된 웹 서버를 깔고, 포트 번호경로를 설정해주면 누구나 로컬 컴퓨터에서 만들 수 있습니다.

근데 여기서, 문제가 있습니다. 기존에 웹에서 보이는 데이터들은 정적인 자료가 아닙니다. 데이터의 변형이 일어나기도 하고, 클라이언트의 동작에 따라 바뀌는 데이터도 존재합니다.

즉, 이러한 요청에 따른 비즈니스 로직 처리DB 연동 문제를 해결하기 위해 등장한 것이 WAS입니다.

WAS

WAS웹 애플리케이션을 실행시켜 필요한 기능을 수행하고 그 결과를 웹 서버에게 전달하는 일종의 미들웨어를 말합니다.

  • 동적인 페이지를 만들어 낼 수 있는 서버입니다.
  • 프로그램 실행 환경과 데이터베이스 접속 기능을 제공합니다.
  • 비즈니스 로직 수행이 가능합니다.
  • 웹 서버 + 웹 컨테이너

다음은 동작 방식을 그림으로 나타낸 것입니다.

웹 서버와 WAS 차이

  • WEB Server: 정적인 컨텐츠만 제공
  • WAS: 어떤 애플리케이션을 돌리고, DB를 연결하고, 어떤 로직을 수행해서, 만든 데이터를 전달할 수 있다.

"상황에 따라 변하는 정보를 제공할 수 있는가?"

웹 서버와 WAS를 따로 사용하는 이유

  1. 서로의 기능을 분리하여 서버 부하를 방지할 수 있습니다.
    1. WAS는 DB 조회 등 페이지를 만들기 위한 다양한 로직을 처리하는데,
      단순한 정적 컨텐츠까지도 WAS에서 제공하면 다른 작업에 사용하는 리소스로 인해 지연이 생겨날 수 있습니다. (다만, 톰캣 5.5 이상부터는 성능이 크게 떨어지지 않는다고 합니다.)
  2. 물리적으로 분리하여 보안을 강화할 수 있습니다.
    1. SSL에 대한 암복호화 처리에 웹 서버를 사용할 수 있습니다.
    2. 웹 서버를 앞단에 두어, 공격이 있을 때 중요한 정보가 담긴 DB나 로직까지(WAS까지) 전파되지 못하게 합니다.
  3. 여러 대의 WAS를 연결 가능할 수 있습니다.
    1. Load Balancing
    2. fail over(작동 중지된 WAS를 대신해 다른 WAS를 사용하여 장애를 극복합니다.)
    3. fail back(작동 중지된 WAS를 재동작 시킵니다.)
  4. 대용량 웹 애플리케이션의 경우(여러 개의 서버 사용) Web Server와 WAS를 분리하여 무중단 운영을 위한 장애 극복에 쉽게 대응할 수 있습니다.
  5. 다른 종류의 WAS로 서비스 가능합니다.
    1. 하나의 서버에서 PHP Application과 JAVA Application을 함께 사용할 수 있습니다.


Reference

profile
개발정리블로그

0개의 댓글