웹 서버 : http+css 같은 static 내용 serving
WAS : 서버사이드 코드 실행을 통해 dynamic한 내용 serving
<웹 서버>
NGINX, Apache HTTP server 등
Apache HTTP server :
connection 요청마다 프로세스 생성 -> (C10K problem) : 요청이 많아져 connection이 많아지면 메모리 부족, CPU 부하 증가(context switching) // but 모듈구성으로 확장성 good
NGINX : async, event-driven approach. master process가 생성한 worker process들이 작업큐에 있는 작업을 처리하는 구조로, 요청마다 프로세스를 생성하지 않기 때문에 요청당 메모리 사용량 ↓, context switching 비용 ↓. (worker는 일반적으로 core 개수만큼 생성) -> C10K problem 해결, 고성능 // but 설정이 비교적 자유롭지 x
웹서버를 단독으로 쓸때는 정적인 컨텐츠를 서빙하지만, 동적인 컨텐츠가 필요할 경우 WAS에 요청을 전달하여 여 처리(프록시 기능)
<WAS>
- DB 조회나 비지니스 로직 처리 등 동적인 컨텐츠에 대한 요청을 처리
Tomcat : Web server + Servlet 구동환경을 제공하고, Servlet의 생명주기를 관리하여 Servlet Container라고도 불림
Servlet : Java Enterprise Edition의 일부로서, HTTP 요청(GET, POST 등)을 받아 처리하고 HTTP 응답을 반환함.
Spring을 통해 작성한 소스코드 -> 컴파일 -> Servlet Container (Tomcat) 등록 -> HTTP 요청 올 시 Servlet Container(Tomcat) 이 Servlet을 찾고, 쓰레드풀에서 쓰레드를 가져와 처리

웹 서버와 WAS를 따로 두는 이유 : Application Server가 비지니스 로직에 더 집중할 수 있도록 하기 위함, 부하를 분산
'공부 > Web' 카테고리의 다른 글
AWS 사용해 웹페이지 배포해보기 (0) | 2023.03.26 |
---|---|
MongoDB / Flask (0) | 2023.03.25 |
API 활용 / 웹스크래핑 (0) | 2023.03.24 |
Javascript // jQuery // Fetch (0) | 2023.03.22 |
CSS (0) | 2023.03.21 |