일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Docker 원리
- error:0308010C:digital envelope routines::unsupported
- bfs
- 문자열
- 클래스
- 너비 우선 탐색
- 파이썬
- 최장공통부분수열
- Python
- lazy evaluation
- 최장공통부분문자열
- dfs
- 그래프 이론
- 구현
- 나는 바보야...
- Container vs VM
- 일단 시도
- 그래프 탐색
- 모듈러 연산 분배법칙
- 배낭 문제
- db replication
- LCS 알고리즘
- 깊이 우선 탐색
- npm start
- 그래프탐색
- 수학
- 동적 계획법
- 다이나믹 프로그래밍
- 정처기 필기
- 냅색 알고리즘
Archives
- Today
- Total
Save my data
웹 서버와 웹 애플리케이션 서버의 차이에 대한 포스트 본문
부제 : Django 에서 사전 설정을 하지 않으면 정적 파일을 처리하지 않는 이유
위의 질문에 대해 얘기하자면, Django 자체는 웹 서버가 아니고 웹 애플리케이션 프레임워크 이기 때문이다.
Django 개발 환경에서 간소하게 웹 서버 처럼 동작시킬 수는 있지만, 보안 및 성능 이슈가 있을 수 있기 때문에 권장하지 않는다(라고 공식적으로 얘기하고 있다).
웹 서버와 웹 애플리케이션 서버의 차이를 알기 이전에, 필요한 지식인 정적 컨텐츠와 동적 컨텐츠의 차이에 대해 짚고 넘어가야 한다.
정적 페이지(Static pages) 와 동적 페이지 (Dynamic pages) 의 차이
정적 페이지
- html, css, javascript, image 같은 컴퓨터에 저장되어있는 파일들
- 해당되는 요청이 올 때마다 미리 저장되어있던 그대로 반환이 된다.
동적 페이지
- DB에 따라 달라지거나 서버 내부 로직에 의해 가공된 것들
- 해당되는 요청이 오면 조건에 맞게 만들어져서 반환된다.
웹 서버와 웹 애플리케이션 서버의 차이는?
웹 서버 (Web server) 의 역할
- 정적 컨텐츠를 클라이언트에게 전달해준다.
- 클라이언트의 요청을 웹 애플리케이션 서버에 전달하고, 웹 애플리케이션이 처리하여 반환한 요청을 다시 클라이언트에게 돌려준다.
웹 애플리케이션 서버 (Web Application Server, WAS) 의 역할
- 클라이언트로부터 온 동적 컨텐츠 요청을 만들어 반환한다.
정말 간략하게 표현하자면,
클라이언트 - 웹서버 - 웹 애플리케이션 서버
위와 같은 구조로 표현할 수 있고, 요청의 종류에 따라서 WAS 까지 가는지 혹은 웹서버에서 처리하는지가 결정된다.
위 구조에서 어떤 사람은 웹 서버를 제외한 채,
클라이언트 - WAS
위와 같은 구조로 사용하는 경우도 있지만,
그렇게 되면 웹 서버를 분리하여 사용시 (이것을 리버스 프록시 구조라고 한다) 얻을 수 있는 다음의 이점들을 얻을 수 없다.
- 리버스 프록시 구조를 통해 얻을 수 있는 이점들
- 효율성 강화
- WAS 는 정적 컨텐츠 처리 같은 사소한 작업까지 하기에는 너무 바쁘다.
- 웹 서버는 정적 파일(HTML, CSS, JS 등)을 처리하고, 동적인 데이터를 처리하는 WAS는 백엔드 로직을 처리하므로 두 서버를 분리해서 부하를 분산함으로써 성능을 향상시킬 수 있다.
- 보안성 강화
- 웹 서버는 클라이언트와의 통신을 담당하고 WAS는 애플리케이션 로직을 처리하므로, 두 서버를 분리함으로써 보안성이 높아진다.
- 확장성 강화
- 웹 서버와 WAS를 분리함으로써 애플리케이션을 확장하는 데 유연성을 높일 수 있다.
- 관리 용이성
- 각 서버를 독립적으로 관리하는 것으로 서버 운영, 유지 보수, 문제 해결 등을 더욱 쉽게 할 수 있다.
- 효율성 강화
웹 서버를 구축하는데 사용되는 프로그램은 대중적으로 다음과 같다.
(https://ko.hostadvice.com/marketshare/server/)
- Apache
- Nginx
- IIS
'개인공부' 카테고리의 다른 글
오버헤드(Overhead) (0) | 2023.09.12 |
---|---|
Docker와 VM의 차이 (0) | 2023.09.12 |
(리액트)error:0308010C:digital envelope routines::unsupported 해결 (0) | 2023.05.24 |
정처기 필합 후기 (0) | 2023.03.13 |
신입 개발자로서 보았던 첫 면접에 대한 회고 (0) | 2023.03.08 |
Comments