일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 정규표현식
- 웹팩
- scrapping
- 반응형웹
- express
- Modal
- socket.io
- 웹크롤링
- go
- Recoil
- typescript
- react
- sequelize
- 성능최적화
- CDN
- javascript animation
- cicd
- AWS
- npx
- styled-component
- component
- 회고
- graphql
- route
- 포트포워딩
- docker
- Redux
- Today
- Total
프로그래밍 공부하기
Web vs WAS 본문
https://www.youtube.com/watch?v=F_vBAbjj4Pk | https://www.youtube.com/watch?v=NyhbNtOq0Bc |
Web Server와 WAS의 차이가 궁금해져서 위 영상들을 찾아보게 되었다. 미리 정리하자면 Web Server와 WAS는 상황에 따라 변하는 정보를 제공할 수 있는가 라는 관점에서 차이가 있다.
1. Web Server
- Web: 인터넷을 기반으로한 정보를 공유/검색할 수 있게 하는 서비스
- URL(주소), HTTP(통신규칙), HTML(내용)으로 구성된다. - Server: 클라이언트에게 네트워크를 통해 정보/서비스를 제공하는 컴퓨터 시스템
- Web Server: 인터넷을 기반으로 클라이언트에게 웹 서비스를 제공하는 컴퓨터
위 정보를 바탕으로 WebServer와 클라이언트가 어떻게 통신하는지 알아보자. 먼저 클라이언트는 웹서버에게 주소(URL)로 통신규칙(HTTP)에 맞게 정보를 요청한다. 서버는 클라이언트의 요청을 기다리다가 요청(http)이 오면 알맞은 데이터(HTML, CSS, 이미지...)를 응답한다. 이 때 웹 서버에서는 HTML과 같이 정적인 데이터만 줄 수 있기 때문에 DB 조회와 같은 동적인 컨텐츠를 제공할 수 없다는 한계가 있었다.
* HTML은 프로그래밍 언어가 아니다. 프로그램이란 특정 작업을 수행하기 위한 명령어의 모음으로, HTML은 단순히 문서나 데이터의 구조를 표현하기 위한 용도(마크업 언어)로, 명령어가 없으므로 실행할 수 없다.
2. WAS(Web Application Server)
- Web Application: 웹 브라우저에서 실행되는 응용 프로그램
- Web Container: jsp 등을 실행시킬 수 있는 소프트웨어
- Web Application Server: 웹 서버와 웹 컨테이너가 합쳐진 프레임워크
-웹 애플리케이션을 실행시켜 필요한 기능을 수행하고 그 결과를 웹 서버에게 전달
-php, jsp, asp와 같은 언어들을 사용하여 동적인 페이지를 생성 가능
-프로그램 실행 환경과 데이터베이스 접속 기능 제공 => 비즈니스 로직 수행 가능
WAS는 정적 페이지를 제공하는 웹 서버와 프로그래밍 언어를 실행하는 웹 컨테이너가 합쳐진 프레임워크이다. 따라서 클라이언트가 WAS에 정적 페이지를 요청하면 WAS 내의 Web Server에서 처리되고, 동적 페이지가 요청되면 Web Container 단에서 동적 컨텐츠를 생성(프로그램 실행)하는 식으로 처리된다.
WAS 자체로 웹 서버의 역할이 수행 가능하므로 WAS만 두어도 되지만, 일반적으로 Web Server를 앞에 두고 그 뒤에 WAS를 연결하는 형태를 갖는다.(3번의 장점 때문에!)
*Web Server 종류: Apache, Nginx, Microsoft IIS
*WAS 종류: Tomcat, Jeus
*node.js는 WAS일까?: 확실한 답을 찾지는 못했지만 내 생각에 node.js는 WAS가 아니다. node.js는 JavaScript를 웹 브라우저 외의 환경에서 사용하기 위한 런타임이지 웹 서버를 만들기 위한 용도가 아니기 때문이다. 그렇다면 express는 WAS인가? express는 WAS가 맞을 것 같다. express 서버는 정적/동적 컨텐츠를 모두 제공해줄 수 있기 때문이다.
3. WAS의 장점
WAS는 일반적으로 하나의 웹 서버를 앞에 두고 웹 서버에 여러 WAS가 연결된 형태로 되어있다. 이러한 구조는 다음과 같은 장점을 가진다.
- 서버 부하 방지
-정적 컨텐츠는 Web Server, 동적 컨텐츠는 WAS(Web Container)로 분리하여 처리하므로 더 효율적이다.
-> Tomcat(WAS)의 경우 5.5 때 정적 컨텐츠 처리기능이 추가되었는데 순수 Apache(Web Server)를 사용하는 것에 비해 성능적 차이가 없다고 한다. - 보안 강화
-클라이언트와 WAS가 직접 연결되지 않으므로 WAS 설정 파일을 외부에 노출시키지 않는다.
-Web Server가 공격받더라도 중요한 데이터를 처리하는 Web Container가 분리되어 있으므로 더 안전하다.
-웹서버와 WAS에 접근하는 포트가 다르기 때문에 WAS에 들어오는 포트에 방화벽을 적용할 수도 있다. - 분산처리
-웹 서버를 앞에 두고 여러 대의 WAS들을 연결하여 로드밸런싱, 장애 극복(fail over/fail back) 가능
-fail over: 하나의 WAS에 장애가 생기면 해당 WAS만 중지하고, 다른 WAS들이 해당 WAS가 하던 일을 대체한다.
-fail back: 중지되었던 WAS를 다시 재작동한다.
WAS 구조: https://victorydntmd.tistory.com/121
'감상문' 카테고리의 다른 글
의존성을 이용해 설계 진화시키기 (0) | 2021.09.12 |
---|---|
빠르게 성장하는 슈퍼루키로 거듭나기 (0) | 2021.08.06 |
HTTP/1.1, HTTP/2, QUIC (0) | 2021.06.19 |
UI/UX 차이 & UX 디자인 과정 (0) | 2021.06.11 |
Redis (0) | 2021.06.05 |