우아한 테크 유튜브를 보며 포스팅을 시작한다!
Web Server
Web Server : 웹 브라우저(클라이언트)로 부터 HTTP 요청을 받아 HTML 문서와 같은 정적 컨텐츠를 제공하는 프로그램
기능 :
1) 정적 컨텐츠 요청 시
- 정적 컨텐츠(html, jpeg, css) 제공 가능
2) 동적 컨텐츠 요청 시
- WAS(Web Application Server)로 전달하여 WAS가 처리한 결과를 클라이언트에 전달
정적 페이지의 흐름은 다음과 같다.
말 그대로 정적(요청 인자 값에 상관없이 달라지지 않는 컨텐츠) 컨텐츠이며, 어느 사용자 요청이든 항상 동일한 컨텐츠이다.
ex) html, css, image
이해를 돕기 위해 다음 사진을 보자
사용자 3명이 같은 요청을 해도 3명 모두 같은 응답이 나오게 되는 것!
이것이 정적 컨텐츠라고 할 수 있다.
WAS: Web Application Server
WAS : DB 조회 등 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 프로그램
기능 :
클라이언트로부터 HTTP 요청을 받을 수 있음(대부분 WAS는 Web Server 내장)
요청에 맞는 정적 컨텐츠(html, jpeg, css)를 제공할 수 있음
동적 컨텐츠는 정적 컨텐츠와 다르게 요청 인자에 따라 컨텐츠가 바뀔 수 있다
동적 페이지의 흐름은 다음과 같다.
정적 컨텐츠는 웹 서버를 통해 바로 전송이 되었다면, 동적 컨텐츠는 Servet, JVM이 포함되어 있는 WAS를 통해 사용자에 따라 동적으로 데이터를 변환하여 전송한다!
이해를 돕기 위해 다음 사진을 보자
사용자에 따라 이름과 주소가 변환되어 출력된다
만약 Web Server와 WAS를 같이 사용한다면 무엇이 좋을까?
1. 책임 분할을 통한 서버 부하 방지(정적 컨텐츠: Web Server / 동적 컨텐츠: WAS)
2. 로드밸런싱(여러 대의 WAS)
- 요청을 여러 WAS가 나누어서 처리할 수 있도록 설정
3. Health check
- 서버에 주기적으로 HTTP 요청을 보내 서버의 상태를 확인
- Interval: ex. Interval -> health check를 통해 서버 상태를 확인하는 요청을 날리는 주기
- Fails: ex. fails=3 -> 3회 연속 실패하면 서버가 비정상이라고 인지
- Passes: ex. passes=2 -> 서버가 다시 복구되어 요청이 2번 연속 성공하면 서버가 정상으로 인지
4. 보안
- 리버스 프록스를 통해 WAS를 외부에 노출하지 않을 수 있음
- 다음은 리버스 프록시의 예시이다.(외부에서 WAS를 접속하려면 항상 Web Server를 통해야 한다)
마치며... WAS를 깔짝해봐서 그런지 우아한테크 영상을 보면 다 새로웠는데 익숙한 내용이 있어서 반가웠다!
발표자분도 WAS를 이용해서 인스턴스를 만들어다고 하는데 Web Server를 면접 중에 알게되어서 공부하게 되었다고 한다.
발표를 들으며 궁금한 점이 생겼었는데, 마지막 사진(리버스 프록시)를 보면 Web Server를 꼭 통해서 접근하도록 하게끔 한다고 하였다. Web Server와 WAS와는 다른 것인데 WAS를 배울 때, public 인스턴스와 그 내부 private 1과 2 인스턴스를 보는 거 같았다.. 애매하게 아는 탓이어서 그런가 뭔가 더 헷갈리는 거 같다. 인스턴스를 생성하고 그걸 구성할 때 Web Server랑 WAS로 나눌 수 있는 것인지 한번 알아보고 다음주에 수정하도록 하겠다!