코딩공부

웹 서버와 웹 어플리케이션 서버, Gunicorn, Nginx / TIL_221101

Dong_Devlog 2022. 11. 1. 20:01
  • 웹 서버와 웹 어플리케이션 서버 차이
  • 정적(Static) vs 동적(Dynamic)

정적(Static)

- image, html, css, javascript 파일과 같이 컴퓨터에 저장되어 있는 파일들을 의미

- 웹 서버에서 요청에 알맞은 파일을 반환하며, 항상 동일한 페이지를 반환

- 웹 서버에서 제공

- 서버는 nginx와 apache를 주로 사용

 

동적(Dynamic)

- 들어온 요청에 맞게 동적으로 만들어진 컨텐츠를 의미

- 데이터베이스, 서버 내 로직 등을 활용해 만들어진 컨텐츠를 반환

- 웹 어플리케이션 서버에서 제공

- 서버로는 톰캣 getty, undertow이 있음

 

  • 웹 서버와 웹 어플리케이션 서버 차이

웹 서버(web server)

웹 서버는 일반적으로 정적인 컨텐츠를 제공하고 동적인 컨텐츠 제공을 위해 요청을 WAS에 보내고, WAS가 처리한 결과를 클라이언트에게 전달

 

- 클라이언트가 요청한 정적인 컨텐츠를 HTTP를 통해 제공해주는 서버

- 클라이언로부터 들어온 요청에 대해 사용자 인증을 처리하는 역할을 함

- 요청한 파일이 없거나 문제가 발생하면 특정한 코드 값을 전달

 

웹 어플리케이션 서버(web applicateion server)

다양한 서버 내 알고리즘, 비즈니스 로직, DB 조회 등 클라이언트 요청에 따라 동적인 컨텐츠를 제공하는 서버, 프로그램

 

- 프로그램 실행 환경과 데이터베이스 접속 기능을 제공

- 여러 개의 트랜잭션을 관리

- 업무를 처리하는 비즈니스 로직 수행

 

  • Gunicorn
  • WSGI

파이썬 애플리케이션이 웹 서버와 통신하기 위한 인터페이스로 웹 서버에서의 요청을 해석하여 파이썬 애플리케이션 쪽으로 던지는 역할을 수행한다.

 

  • Gunicorn

Gunicorn은 python WSGI로 서버로 WSGI란 python으로 작성된 웹 어플리케이션과 python으로 작성된 서버 사이의 약속된 인터페이스 또는 규칙이라 보시면 됩니다. 간단히 말하면 WSGI 서버와 웹 어플리케이션이 WSGI의 규칙에 따라 작성되면, 웹 어플리케이션 입장에서는 내부 구현과 상관 없이 자유롭게 WSGI 서버를 골라서 사용할 수 있는 유연성을 제공한다.

 

  • Nginx 

가벼우면서도 강력한 프로그램을 목표로 개발된 오픈 소스 웹 서버 프로그램. 클라이언트로부터 요청을 받았을 때 요청에 맞는 정적 파일을 응답해주는 HTTP web server로 활용되기도 하고, reverse proxy server로 활용하여 WAS 서버의 부하를 줄일 수 있는 로드 밸런서로 활용되기도 한다.