일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- jvm
- 모두를 위한 딥러닝
- 라인플러스
- 라인
- 파이썬
- 벤쿠버
- 백준
- DP
- 프로그래밍언어론
- 스타벅스
- binary search
- C/C++
- 스프링 프레임워크
- 릿코드
- STL
- leetcode
- BFS
- 알고리즘
- dfs
- 시애틀
- 다이나믹프로그래밍
- C++
- Python
- 딥러닝
- 머신러닝
- Java
- Spring Framework
- 백트래킹
- 프로그래머스
- spring
- Today
- Total
케이스윔의 개발 블로그
웹 서버(Web Server)와 WAS 본문
서버구축을 시작하려할 때 들었던 고민이 있었다. 서버 내부 클래스를 나누거나 모듈을 두는 이런 구성들에 대한 기준은 어떻게 세워야하지? 특정 기능을 구현하려고 서버를 구축해야했는데 처음 계획을 세울 때 어떻게 큰 모듈을 나눠서 구성하고 계획해야하는지가 고민됐다. 그래서 그 당시 구글링 했던 단어는 '서버와 데이터 처리를 나누는 기준' 이었다. 그리고 들어봤었지만 명확하지 못했던 웹서버와 WAS에 대한 내용을 알게 됐고 이 개념을 바탕으로 계획을 세웠었던 것 같다.
1. 웹서버
: 일반적으로 웹서버라고 하면 클라이언트의 전반적인 요청에 대한 서비스를 제공하는 아키텍처를 말한다고 할 수 있다. 그런데 WAS와 함께 언급이 된다면 좀 더 구체적으로 설명을 할 수 있다. 웹 서버는 클라이언트가 서버에 요청을 하면 html이나 이미지와 같은 정적인 컨텐츠를 제공하는 서버이다. 클라이언트의 요청이 올 때 가장 앞에서 요청에 대한 처리를 담당한다. 클라이언트가 요청한 컨텐츠가 정적컨텐츠라면 바로 요청에 대한 응답을 하고, 정적컨텐츠가 아니라면 WAS에 처리를 요청하고 WAS가 처리를 완료했다면 해당 컨텐츠를 받아 웹서버가 응답해준다.
ex) Apache, nginx
2. WAS(Web Application Server)
: 동적인 컨텐츠를 제공하기 위해서 만들어진 어플리케이션 서버이다. 예를 들면 데이터베이스 조회라던가 어떠한 동적인 처리가 요구되는 컨텐츠 일 경우 WAS가 처리한다. 컨테이너라고도 부른다! 웹서버로부터 요청이 온다면 컨테이너가 받아서 처리를 하게 된다.
ex) Tomcat, Jeus, Jboss
즉, 웹서버와 WAS의 차이를 찾아본다면 동적인 컨텐츠의 처리유무이다.(WAS는 정적인 처리도 가능하지만 부하가 많이 걸린다고 알고 있음)
왜 두개로 나누어서 처리를 할까?
사용자가 원하는 요청이 무엇일지 모르기 때문이다. 사용자가 '할' 수도 있는 요청에 대해 미리 값을 만들어 놓고 서비스를 하기에는 자원이 부족할 것 이다.(수많은 요청들에 대해 다 만들어둬야 할테니..) 따라서 사용자의 요청을 보고 서비스 제공을 위한 응답을 만들어야 하는데 서버가 데이터 처리도 해야하고, 정적 컨텐츠 처리까지 맡는다면 자원이 부족해서 효율성이 부족할 것이다. 따라서 웹서버를 두어서 정적인 컨텐츠를 처리하도록 하고 WAS를 통해 동적 컨텐츠를 처리하도록 해서 효율적으로 요청에 대한 서비스를 하도록 나누었다고 생각한다.
'Study' 카테고리의 다른 글
[PL] Exception handling(예외 처리) (0) | 2018.12.15 |
---|---|
Webhook 이란 무엇인가? (0) | 2018.11.21 |
[DB] transaction의 Level of isolation (0) | 2018.10.05 |
[Jupyter] ipynb 파일 html 로 변환하기 (0) | 2018.08.08 |
[Django] Elasticsearch, Kibana와 연동하기 (2) | 2018.07.29 |