Web (거미줄) → World Wide Web (전세계로 퍼진 거미줄)
Web Server와 WAS 둘의 공통점은 아래와 같습니다.
그럼 둘이 뭐가 다르냐구요?
Web Server는 두가지를 가리킬 수 있습니다.
우린 여기서 1. 로 생각할 겁니당.
HTTP Server (HTML), FTP Server (files), EMAIL Server (email) 등의 공통점은?
🌐 Web Server는 정적 데이터를 반환한다 !
⇒ 이미 정해져있는, 서버가 가지고 있는 = 정적 콘텐츠를 제공하는 것에 적합
ex. 블로그, 사전, 사진, 파일 등
❓ 그럼 클라이언트가 요청할 수 있는 건?
어떤 정적 파일이 필요한지 지정해서 요청!
Web에서 무슨 일을 하는 Server = Web Server 확장판
요청에 따라 단순히 가지고 있는 파일을 가져다주는 역할에서 끝나지 않고 뭔가 더 처리한다!
🌐 Web Server + 비즈니스 로직 = Web Application Server
동적 콘텐츠 생성, 애플리케이션 로직 및 다양한 리소스와의 통합을 지원
⇒ 요청 기반으로 사용자가 원하는 데이터를 생성하거나 기존 데이터를 가공해서 전달할 수 있다.
WAS는 DB, 인공지능 등과 같은 다양한 리소스와 통합해서 동적 콘텐츠를 생성합니다.
근데 이 바쁜 WAS가 정적 콘텐츠까지 줘야한다면?
그걸 저멀리 있는 클라이언트에 전달까지 해야한다면??
심지어 서버니까 클라이언트 요청 분산하면서 부하 관리도 해줘야한다면???
그러려면 캐싱도 해야한다면????
양쪽에서 너무 시달린다~ 그러다 해야할 일도 제대로 못하고 죽는다!
WAS는 이미 복잡한 처리하니까 그것만 집중해! 나머지는 Web Server가 처리할게!
물론 WAS가 Web Server의 확장이기 때문에 이것도 가능합니다.
결국 Client 요청 분산과 응답 등의 역할을 할 가벼운 서버를 앞에 배치한 것입니당
Web Server | Web Application Server | |
---|---|---|
task | 간단한 요청에 응답 제공 | DB, 서비스 등 복잡한 콘텐츠 제공 |
protocol | HTTP 기본 (FTP, SMTP도 지원) | HTTP 포함 많은 프로토콜 지원 |
content | HTML 페이지, 이미지, 비디오 등의 정적 콘텐츠 | 실시간 업데이트, 개인화 정보 등의동적 콘텐츠 |
multi threading | 일반적으로 지원하지 않음 | 요청 동시 처리를 위해 지원 |
AWS 웹 서버와 애플리케이션 서버의 차이점은 무엇인가요?
nginx = 웹 서버 프로그램/소프트웨어 + 경량화/고성능이 목표 + 기타 웹서버에 필요한 기능 지원
➕ Apache httpd, Lightspeed 등 다른 웹서버 프로그램도 있다~
프로젝트 폴더의 settings.py가 있는 config 폴더를 확인하면 wsgi.py
와 asgi.py
가 있습니다.
저는 Django에서 wsgi - gunicorn 조합으로 배포했고 gunicorn은 다음과 같습니다.
= Python WSGI HTTP Server for UNIX
django에서 지원하는 wsgi를 살려서 gunicorn으로 django application을 WAS로 동작하게끔 하고 → nginx로 client 요청을 받고 응답을 넘겨줄 겁니당.
python manage.py runserver
쓰면 안돼요?
"""
HTTP server that implements the Python WSGI protocol (PEP 333, rev 1.21).
Based on wsgiref.simple_server which is part of the standard library since 2.5.
This is a simple server for use in testing or debugging Django apps. It hasn't
been reviewed for security issues. DON'T USE IT FOR PRODUCTION USE!
"""
대충 django 프레임워크 개발에 집중할 거라 디버깅용으로 켤 수 있는 서버를 제공해줄텐데 그거에 신경은 안 쓸거고 실배포용으로는 안전하지 않으니 쓰지 마라~ 는 얘기입니다.
nginx 왜 썼어요?
위에서 언급한 [ Client ↔ Web Server ↔ WAS ↔ DB 등 ] 구조에서 리버스 프록시를 담당하고 nginx의 다양한 기능들 중 SSL/TLS로 HTTPS를 지원해주었습니다.