스프링 입문 강의를 듣던 중, 웹 서버와 웹 어플리케이션 서버에 대한 개념이 부족한 것 같아 정리해보았다. 내용은 예전에 공부했던 네이버 부스트코스의 웹 프로그래밍 풀스택 강의 필기 내용을 참고했다.
1. 웹 서버 (Web Server)
-
웹 서버는 보통 소프트웨어를 말하지만, 웹 서버 소프트웨어가 동작하는 컴퓨터를 말하기도 한다.
-
웹 서버의 가장 중요한 기능은 클라이언트가 요청하는 HTML 문서나 각종 리소스를 전달하는 것이다.
- 리소스가 존재하지 않거나 문제가 발생하면 에러 메시지를 보낸다.
-
웹 브라우저나 웹 크롤러가 요청하는 리소스는 컴퓨터에 저장되어 있는 정적인 데이터거나 동적인 결과가 될 수 있다.
- 정적인 데이터: 이미지, HTML 파일, CSS 파일, JS 파일 등
- 동적인 데이터: 웹 서버에 의해서 실행되는 프로그램을 통해서 만들어진 결과물
- 웹 크롤러: 네이버 등의 검색 사이트에서 다른 웹 사이트 정보를 읽어갈 때 사용하는 소프트웨어
1) 웹 브라우저와 웹 서버
- 웹 브라우저가 웹 페이지를 요청하면 웹 서버는 웹 페이지를 응답한다.
2) 웹 서버 소프트웨어의 종류
- 가장 많이 사용하는 웹 서버는 Apache, Nginx, Microsoft, Google 웹 서버이다.
- Apache 웹 서버는 Apache Software Foundation에서 개발한 웹서버로, 오픈소스 SW이며 거의 대부분의 운영체제에서 설치 및 사용이 가능하다.
- Nginx는 차세대 웹 서버로 불리며 더 적은 자원으로 더 빠르게 데이터를 서비스하는 것을 목적으로 만들어진 오픈소스 SW이다.
3) 클라이언트/서버 구조
- 클라이언트는 서비스를 제공하는 서버에게 정보를 요청하여 응답 받은 결과를 사용한다.
4) DBMS
- Database Management System
- 다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 소프트웨어
- DBMS는 주로 서버처럼 동작한다.
→ 때문에 DBMS에 접속해서 동작하는 클라이언트 프로그램이 한때 많이 생겼다.
→ 클라이언트 무거워지고 보안의 문제, 로직 변경시 매번 클라이언트 재배포 해야 하는 문제 등 여러 문제 발생
→ 미들웨어 등장.
5) 미들웨어 (MiddleWare)
- 클라이언트 쪽에 비즈니스 로직이 많을 경우, 클라이언트 관리 (배포 등)로 인해 비용이 많이 발생하는 문제가 발생한다.
- 비즈니스 로직을 클라이언트와 DBMS 사이의 미들웨어 서버에서 동작하도록 함으로써 클라이언트는 입력과 출력만 담당하도록 하였다.
- 미들웨어: 클라이언트와 DBMS 사이에 또 다른 서버를 두는 방식.
2. WAS (Web Application Server)
- WAS는 일종의 미들웨어로 웹 클라이언트 (보통 웹 브라우저)의 요청 중 보통 웹 애플리케이션이 동작하도록 지원하는 목적을 가진다.
- 웹은 처음엔 정적인 컨텐츠만 보여줬다. 웹이 동적 컨텐츠도 보여줄 수 있도록 많은 기능을 요구받으면서 웹과 DBMS 사이의 미들웨어가 필요해졌는데 이런 미들웨어가 바로 WAS이다.
- WAS의 기본 기능 3가지
1. 프로그램 실행 환경과 DB 접속 기능을 제공
2. 여러개의 트랜잭션(논리적인 작업단위)을 관리한다.
3. 업무를 처리하는 비즈니스 로직을 수행한다.
+ 웹서버의 기능도 제공.
3. 웹 서버 vs WAS
- WAS도 보통 자체적으로 웹 서버 기능을 내장하고 있다.
- 현재는 WAS가 가지고 있는 웹 서버도 정적인 컨텐츠를 처리하는데 있어서 성능 상 큰 차이가 없다.
- 규모가 커질 수록 웹 서버와 WAS를 분리한다. 그 목적은 장애 극복 기능인 경우가 많다.
- 주로 웹 서버는 정적 컨텐츠, WAS는 동적 컨텐츠를 웹 브라우저에게 전송
- 웹 서버는 상대적으로 WAS보다 간단하게 구성되어있다. 앞단에 웹 서버를 두면 장애 극복 기능 UP
참고