본문 바로가기
Python

[파이썬으로 웹개발] wsgi, 내가 플라스크 개발하는데 그런 거까지 알아야 되니?

by 돈민찌 2021. 10. 19.
반응형

[파이썬으로 웹개발] 내가 개발하는데 그런 거까지 알아야 되니?

오늘날 거의 모든 파이썬 웹 프레임워크는 웹 서버와 통신하기 위한 (유일한 수단은 아니지만) 주요 수단으로 WSGI를 사용합니다. 이것이 Django, Flask 및 기타 많은 인기 있는 프레임워크가 수행하는 방식입니다. 

웹은 월드 와이드 웹의 줄임말로, www, w3, web 등으로 쓰입니다. 1989년 3월 컴퓨터 과학자인 팀 버너스 리가 만들었습니다. 그리고 저작권의 모든 부분을 공개하면서 웹이라는 것이 폭발적으로 세계에 퍼지고 쓰이게 되었습니다. 1993년에 웹은 약 1,400만 명의 사용자와 100개의 웹사이트 가 있는 초기 단계였습니다. 페이지는 정적일 수 밖에 없는 상태였지만 최신 뉴스 및 데이터 같은 동적 컨텐츠를 계속해서 생성할 필요가 있었습니다. 이에 대한 응답으로 Rob McCool과 기타 기여자들은 NCSA(National Center for Supercomputing Applications) HTTPd 웹 서버 (Apache의 전신)에 CGI(Common Gateway Interface)를 구현했습니다 . 이것은 별도의 애플리케이션에서 생성된 콘텐츠를 제공할 수 있는 최초의 웹 서버였습니다. 

그 이후로 인터넷 사용자 수는 폭발적으로 증가했고, 현재 존재하는 웹에 생성된 페이지 수는 1,898,192,672 건 (2021년10월19일 오후10:15분 기준 - 대한민국 GMT+9)이고, 그 사용자 수는 같은 시각 기준 5,080,625,094 명입니다. 

새로운 프로그래밍 언어를 배우거나 아예 코딩을 처음 배울 때, 개발자는 그것을 세상에 내놓을 방법을 당연스레 알고 싶어 합니다. 이렇게 폭발적으로 증가하고 있는 월드-와이드-웹이 그 대상이 되는 것은 당연한 수순일 것입니다. CGI 는 서버 요청 시마다 새로운 프로세스를 생성해야 해 메모리와 CPU를 심하게 낭비했기 때문에 실용적이지 못했고, 개발자들은 대안을 찾아 헤맸습니다. 2003년, Phillip J. Eby는 PEP-0333 , Python 웹 서버 게이트웨이 인터페이스(WSGI)를 제안했습니다 . Python 응용 프로그램과 웹 서버 간에 높은 수준의 범용 인터페이스를 제공하는 아이디어였습니다. 

Python3 버전의 출시와 함께 WSGI 인터페이스 역시 업데이트되었고, 이에 따라 Django, Flask와 같은 많은 파이썬 웹프레임워크가 WSGI(Web Server Gateway Interface)를 사용해 웹과 파이썬 서버를 연결하기 시작했습니다.

이미지 출처 이미지 클릭

WSGI 튜토리얼에 의하면 WSGI는 서버와 파이썬 애플리케이션이 통신하는 인터페이스의 사양일 뿐이라고 합니다. WSGI는 파이썬 코드들을 웹 서버가 이해할 수 있게 해줍니다. 웹 브라우저가 데이터를 요청하면 그에 맞는 웹 서버는 리그에 맞는 리소스를 반환해야 하고, 이 때 사용하는 WSGI의 종류로는 mod_wsgi, gunicorn 등이 있습니다. 또 웹 서버의 종류로는 Apache와 NGINX(엔지-넥스) 등이 있습니다.

플라스크는 파이썬으로 만든 웹 프레임워크입니다. 오픈소스 소프트웨어 개발자인 아민 로나허가 만들었으며 Pocoo파이썬 오픈소스 개발자팀) 프로젝트에 속합니다. 더 세세하게는 Click, Jinja, ItsDangerous, Werkzerg 등과 함께 PALLETS 프로젝트에 속합니다. (플라스크가 의존하는 라이브러리이기도 합니다.) Werkzerg의 WSGI 툴킷과 Jinja의 템플릿 엔진에 기반을 두고 있습니다.

플라스크는 "마이크로 웹 프레임워크"로써, 데이터베이스, 폼 검사와 같은 타 프레임워크에서 제공하는 기능들을 포함하고 있지 않습니다. 그래서 장고와 같은 다른 웹프레임워크와 비교해 작고 귀여운 취급을 받기도 합니다. 하지만 플라스크는 장고에서 '기본적으로' 제공하는 기능들을 대부분 외부에서 해결할 수 있습니다. 이것이 플라스크가 가벼운 이유인 동시에 쉽게 접근할 수 있는 파이썬 웹 프레임워크가 된 근거일 것입니다. 마이크로-라고 해서 무시해서는 안됩니다. 오픈소스 생태계에서 이를 커버할 수 있는 만큼의 충분한 익스텐션들이 제공되고 있고, 아예 함께 개발되었지만 기본적으로 포함되지 않은 애드온들도 많습니다. 기획 단계에서 충분히 청사진을 그린 후에 개발을 시작한다면 장고처럼 MVT가 갖춰진 웹사이트를 만들 수도 있고, 전혀 그렇지 않은 가벼운 테스트 사이트를 5초 만에 만들 수 있는 점. 그런 점이 플라스크를 배워야 할 수많은 이유 중에 하나가 아닐까 생각합니다.

현재 플라스크 프레임워크를 위해 Pypi에 등록되어 있는 모듈들만 해도 990건이 있습니다. (아래 참고)

 

Search results

The Python Package Index (PyPI) is a repository of software for the Python programming language.

pypi.org

 

반응형

댓글