웹 서버, WAS, Web App, WSGI 대체 뭐가 다를까?

vinca·2023년 11월 13일
2


Web Server

Web Server란 클라이언트로부터 HTTP 요청을 받아 정적인 콘텐츠(HTML 파일, 이미지, CSS, JavaScript 등)를 제공하는 서버이다.

만일 동적인 데이터가 필요한 경우에는 해당 요청을 웹 애플리케이션 서버(WAS)에 전달한다.

Web Server의 대표적인 예로는 Apache HTTP Server, Nginx 등이 있다.

동적 컨텐츠란?

  • 비즈니스 로직(사용자 로그인, 쇼핑몰에서의 주문, 결제)
  • DB내의 데이터를 조회
  • 사용자 로그인의 로그인 세션 관리 / 참고자료 : [쿠키와 세션]

Web Application (Web framework)

Web Application이란 Django, Flask와 같은 파이썬 프레임워크이다. 일반적으로 통용되는 프레임워크라는 점에 중점!💡

이들은 비즈니스 로직, 데이터 베이스 연동 등의 기능을 제공하여 동적인 콘텐츠의 생성을 도와준다.

🧐 Flask, Django가 웹 서버가 아니라고?!

그렇다. 우리가 알고있는 Flask는 사실 웹 서버도 , WAS 서버도 아닌 엄밀히 말해 웹 애플리케이션(프레임워크)이다.

웹 서버가 동작하는 것이 아닌, 웹을 구성할 수 있게 해주는 "도구"인 것이다.

좀 더 명확하게는 Flask에는 개발용 서버가 내부에서 동작하므로, 이는 프레임워크 + 개발용 WAS 서버라고 할 수 있다.

위 화면을 보면 실제로 서버가 동작하긴 하나, development server 즉, 이것은 개발용 서버이므로 제품 배포 시에는 WSGI 서버를 사용하라는 주의 문구를 확인할 수 있다.

🪅 WSGI란?
파이썬 기반 WAS 서버 프로토콜.

📟 WSGI 서버란?
WSGI 프로토콜을 사용하는 WAS 서버의 일종으로 waitres, Gunicorn, uWSGI 등이 있다.

즉, 해당 주의 문구 WSGI를 따르는 WAS 서버를 사용하라는 의미이다.


Web Application Server (WAS)

이러한 Web Application띄우고, 이용하는 서버가 바로 Web Application Server(WAS)이다.

WAS는 웹 서버에서 처리하지 못하는 동적 컨텐츠를 처리하여 이를 웹 서버에게 전송한다.

WAS의 예시

  • 파이썬의 WSGI 서버들
    (waitress, Gunicorn, uWSGI)

  • 자바의 Apache Tomcat
    (주로 Java Servlet, JavaServer Pages (JSP) 기술을 이용하여 WAS서버를 구성함)

  • Node.js 기반의 Express.js
    (웹 프레임워크이나 일부 경우 WAS로 사용)


전체 정리

전체적인 웹의 통신과정에서의 그림을 보면 다음과 같다.

먼저 맨 앞에 웹 브라우저(크롬, 사파리, 파이어폭스 등)와 연결된 웹 서버가 있고 이들은 정적 콘텐츠를 관리한다.

그리고 이러한 웹 서버의 뒤에는 동적인 컨텐츠(DB)를 처리해주는 WAS 서버가 존재하게 된다.

이러한 WAS 서버는 django, Flask와 같은 웹 애플리케이션을 실제 서버상에 띄우고, 이를 이용하여 비즈니스 로직을 좀 더 유연하게 처리하고, DB와의 연결을 통해 데이터를 처리한다.

profile
붉은 배 오색 딱다구리 개발자 🦃Cloud & DevOps

0개의 댓글

관련 채용 정보