ssung_항해일지/CS 지식 및 기술면접

Web Server 와 WAS

ssungcohol 2023. 5. 16. 12:09

웹 서버 (Web Server)란?

 

말 그대로 작성된 html 페이지 등을 네트워크망에 종속되지 않고, 웹 서비스를 할 수 있도록 하는 어플리케이션

 

  • HTTP 프로토콜을 기반으로 클라이언트가 웹 브라우저에서 어떤 요청을 하면 그 요청을 받아 정적 컨텐츠를 제공
    (HTML 문서, CSS, 이미지, 파일 등 즉시 응답이 가능한 컨텐츠)
  • 웹 서버 (소프트웨어) : 클라이언트로부터 HTTP 요청을 받아들이고, HTML 문서와 같은 웹 페이지에서 흔히 찾아볼수 있는 자료 콘텐츠에 따라 HTTP에 반응하는 컴퓨터 프로그램
  • 웹 서버 (하드웨어) : 위에 언급한 기능을 제공하는 컴퓨터 프로그램을 실행하는 컴퓨터
  • Apache, NginX 등이 존재

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

 

웹 서버 + 웹 컨테이너

 

  • 웹 어플리케이션 서버는 동적 서버 콘텐츠를 수행하는 것으로 일반적인 웹 서버와 구별되어, 주로 데이터베이스 서버와 같이 수행
  • 인터넷 상에서 HTTP를 통해 사용자 컴퓨터나 장치에 애플리케이션을 수행해 주는 미들웨어 (소프트웨어 엔진)
  • 웹 서버 + 웹 컨테이너로 웹 상에서 사용하는 컴포넌트를 올려놓고 사용하게 되는 서버
    • 웹 컨테이너 - JSP와 Servlet을 실행시킬수 있는 SW를 가리킴
    • JSP - HTML에 Java 코드를 넣어 동적 웹 페이지를 생성하는 웹 어플리케이션 도구
  • 기본 기능
    • 프로그램 실행 환경과 데이터베이스 접속 기능을 제공
    • 여러 개의 트랜잭션을 관리
    • 업무를 처리하는 비지니스 로직을 수행
    • Web Service 플랫폼으로서의 역할
  • Tomcat, JBoss, WebSphere 등이 존재

WEB과 WAS의 비교

  • WEB Container의 유무로 비교 가능
    • Web은 Container 없음, WAS는 Container 존재
  • Web 서버는 HTML 문서같은 정적 컨텐츠를 처리 (HTTP 프로토콜을 통해 읽힐 수 있는 문서)
  • WAS서버는 asp, php, jsp 등 개발 언어를 읽고 처리하여 동적 컨텐츠, 웹 응용 프로그램 서비스를 처리하는 것

차이점

  • 사용 목적이 다름
    • Web - 정적 데이터 처리 서버, 이미지나 단순 HTML파일과 같은 리소스를 제공하는 서버를 웹 서버를 통하면 WAS보다 안정적이고 빠름
    • WAS - 동적인 데이터를 처리하는 서버, DB와 연결되어 데이터를 주고 받거나 프로그램으로 데이터 조작이 필요한 경우 WAS를 활용
  • 주로 만드는 웹 페이지는 정적 컨텐츠와 동적 컨텐츠를 함께 노출
    • WAS가 정적 데이터를 처리하면 동적 컨텐츠 처리가 지연되고, 이로 인해 페이지 노출 시간이 증가
    • WAS는 동적 처리에 최적화 되어있기 때문에 정적 처리는 Web에서, 동적 처리는 WAS에서 처리
  • 사용자가 클라이언트 (브라우저)에 요청을 하게 되면 이를 웹 서버에서 반응하여 WAS의 처리를 거쳐 웹 페이지로 다시 웹 서버에서 클라이언트 (브라우저)에 응답 메시지를 주는 것

WAS와 Web 을 분리하는 이유

  • 기능을 분리하여 서버의 부하방지
    • 정적 컨텐츠까지 WAS가 처리하면 부하가 커지고, 수행 속도 저하 -> WAS는 DB 조회나 다양한 로직을 처리하기 때문
  • 물리적으로 분리하여 보안 강화
    • SSL에 대한 암호화, 복호화 처리에 웹 서버 사용 가능
  • 여러대의 WAS를 연결 가능
    • 로드밸런싱의 역할 및 fail over, fail back 처리에 유리
  • 여러 웹 어플리케이션을 서비스 가능
    • Java, C#, php 서버 등 하나의 웹 서비스를 통해 서비스 가능
728x90

'ssung_항해일지 > CS 지식 및 기술면접' 카테고리의 다른 글

절차지향, 객체지향, 함수형 프로그래밍  (0) 2023.05.17
Stack & Queue / Array & LinkedList  (0) 2023.05.16
TCP와 UDP  (0) 2023.05.15
트랜잭션  (0) 2023.05.15
23.05.13 - 운동일지  (0) 2023.05.15