Dev/Web

Web Server & WAS

아콩2 2023. 7. 26. 14:21
반응형

Web Server

  • 웹 서버란 HTTP 프로토콜을 기반으로 클라이언트가 웹 브라우저에서 어떠한 요청을 하면 그 요청을 받아 정적 컨텐츠를 제공하는 서버
  • 정적 컨텐츠?
    • 단순 HTML 문서, CSS, 이미지, 파일 등 즉시 응답 가능한 컨텐츠
  • 이때 웹 서버가 정적 컨텐츠가 아닌 동적 컨텐츠를 요청받으면 WAS에게 해당 요청을 넘겨주고, WAS에서 처리한 결과를 클라이언트에게 전달하는 역할도 해줌
  • ex ) Apache, Nginx 등

 

WAS (Web Application Server)

  • WAS란 DB 조회 혹은 다양한 로직 처리를 요구하는 동적 컨텐츠를 제공하기 위해 만들어진 Application 서버
  • HTTP 프로토콜을 기반으로 사용자 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어로서, 주로 데이터베이스 서버와 같이 수행
  • WAS는 JSP,Servlet 구동환경을 제공해주기 때문에 서블릿 컨테이너 혹은 웹 컨테이너라고도 불림
  • 즉, WAS는 프로그램 실행 환경과 DB 접속 기능을 제공하고, 여러 개의 트랜잭션을 관리하며 비지니스 로직을 수행 할 수 있음
  • ex) Tomcat, JBoss, WepSphere 등

 

웹 서버와 WAS는 왜 분리 되어야 할까 ?

WAS는 Web Server와 Web Container의 역할을 모두 할 수 있다.
여기서 컨테이너란 JSP,Servlet을 실행시킬 수 있는 소프트웨어를 의미한다.
현재 WAS의 웹 서버도 정적인 컨텐츠를 처리하는데 상능상 큰 차이는 없다.
그렇다면 왜 웹서버와 WAS를 분리해야 할까?

1. 서버 부하 방지

  • WAS는 DB 조회나 다양한 로직을 처리하고, 단순한 정적 컨텐츠는 웹 서버에서 처리해줘야 함.
  • 만약 정적 컨텐츠까지 WAS가 처리한다면 부하가 커지게 되고, 수행 속도가 느려질 것

2. 보안 강화

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

3. 여러 대의 WAS 연결 가능

  • 로드밸런싱을 위해 웹 서버를 사용 할 수 있음
  • 여러 개의 서버를 사용하는 대용량 웹 어플리케이션의 경우 웹 서버와 WAS를 분리하여 무중단 운영을 위한 장애 극복에 쉽게 대응 가능

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

  • 하나의 서버에서 PHP, JAVA 애플리케이션을 함께 사용가능

즉, 웹 서버를 WAS 앞에 두고 필요한 WAS들을 웹 서버에 플러그인 형태로 설정하면 효율적인 분산 처리가 가능함

 

웹 서비스의 구조

클라이언트가 웹 서버에 HTTP 요청을 보내면 웹 서버는 정적인 컨텐츠 요청은 바로 응답하고, 동적인 컨텐츠 요청은 WAS에게 넘겨서 처리하고 결과를 WAS에가 받아 클라이언트에게 넘겨줌

 

 

 

마치며

최근에 면접을 봤는데 Web server와 WAS에 대한 차이에 대한 질문을 받았고 대답하지 못했다.

백엔드 개발자를 처음 준비했을 때부터 알고있던 아주 기초적인 개념인데 다 까먹어버렸다.

이런 기본적인 부분들이 탄탄해야 개발도 안정적으로 할 수 있을텐데 이 점을 간과했다. (물론 기술면접 대응도 더 수월하겠지만ㅇ~)

여튼 취업을 준비하면서 그리고 취업을 하고 나서도 이런 사소하지만 기본적인 부분들을 신경써서 공부해야겠다는 생각이 들었다.

 

그래서 한동안은 기본적인 내용들을 공부해서 블로그에 업로드 하려고 한다 ~.~ 

 

그리고 면접에서 블로그에 남에게 보여주는 글이 아닌 내가 온전히 이해한 글을 쓰라는 피드백을 받았다.

글을 업로드 하는 당시에는 다 이해했다고 생각했지만 내 기억력은 내 생각보다 오래가지 못하는듯,,^^

휘발성이 강한 나의 기억력을 강화시키기 위해서 내가 어떤 글을 썼는지 주기적으로 모니터링 하는 시간이 필요하겠다는 생각을 했다.

 

 

 

 

반응형

'Dev > Web' 카테고리의 다른 글

Nginx  (0) 2023.07.26
당신의 인생은 SSE(Server-Sent Event)를 알기 전과 후로 나뉜다  (0) 2022.09.04