본문 바로가기
Python

[파이썬으로 웹개발] 플라스크 geolocation api 사용하기: Use a producttion WSGI server instead.

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

플라스크는 꽤나 좋은 웹개발 프레임워크다. 사용법도 직관적이고, 폴더 구조도 까다롭지 않게 정리할 수 있는 툴을 제공하며, 기본적으로 갖추고 있는 기능이 많지만 그만큼 해야할 일도 많은 장고랑 비교하면 천사나 다름없다.

플라스크는 스파르타코딩클럽에서 수업을 들으면서 알게 된 라이브러리이다. 그만큼 외부에서 주요 스택으로 다뤄지는 모습을 못봤다는 얘기일 수도 있고, 아니면 파고들어서 배울만큼 복잡하고 어렵지 않아서 그런 것일 수도 있다. 스파르타코딩클럽의 웹개발 종합반과 웹개발 심화반은 모두 파이썬 플라스크를 웹프레임워크로, 몽고디비를 데이터베이스로 사용해서 직관적이고 접근하기 쉬운 커리큘럼을 가지고 있다. 그리고 내가 아는 바로는 스파르타코딩클럽 홈페이지 자체가 플라스크로 운영되는 것으로 알고 있다.수천명이 드나드는 홈페이지를 구성할 수 있는 프레임워크이면서 동시에 입문강의에서 주도구로 사용할 만큼 쉬운 프레임워크. 배워보지 않을 이유가 없다.

많은 개발 입문자들이 개발을 파이썬부터 배우고, 나도 역시 그랬다. html, js, css가 결국엔 웹을 구성하는데 가장 주요한 요소인 것은 알았지만, 많은 입문 강의들이 파이썬을 가르치고 있었고, "hello world"를 출력하는 데만 봐도 훨씬 적은 타이핑으로 구현이 가능한 프로그래밍언어라니, 당연히 매력적이었다. 그래서 이것저것 자료구조, 객체지향, 알고리즘을 공부하고 머신러닝도 강의를 들어보았지만, 그 과정에서 배운 웹크롤링 말고는 "당장 이걸 어디에 써야하지"라는 고민을 하지 않을 수가 없었다.

혹시 그때의 나와 같은 고민을 하고 있는 사람들이 더 있다면, 그때 내가 접했던 장고 보다는 플라스크로 파이썬 웹개발을 한번 해보라 권하고 싶다. 장고나 플라스크나 jinja2를 사용하는 점을 비롯해 여러 닮은 점이 많지만, 초급 단계에서 배우는 것은 단연 플라스크가 쉽다. 간단하게 html 파일을 연결하기만 하는 것도 가능하고, 아예 텍스트만 있는 서버를 가동(...)할 수 있다. 여기에 더해서 jsonify를 통해 웹에서 주로 사용되는 객체 데이터 교환방식인 JSON rest api를 쉽게 익힐 수 있기까지 하니 추천하지 않을 이유가 없다. 실제로 플라스크를 처음 사용해본게 두달도 안된거 같은데 이번에 만든 프로젝트도 꽤나 기성 웹사이트처럼 보일만한 요소들이 많으니까 확실히 재미가 있다. 역시 뭐라도 만들어내면서 느는게 코딩이니까.

그래서 이번에 작업한 프로젝트에서는 사용자의 위치를 받고, 그 위치를 기반으로 주변 배달 맛집을 카드형태로 보여주는 것을 주기능으로 하고 있었다. 그런데 문제에 부딪혔다. geolocation api는 보안상의 문제로 대부분의 최신 브라우저에서 https 프로토콜이 아니라면 허용해주지 않는 문제점이 있었다. 하지만 꽤나 개발이 진행된 다음에 생각이 나기도 했고, 계속해서 AWS 인스턴스 하나를 포트포워딩만 해서 웹사이트라고 내놓는 것도 내키지 않았고, 곽영호 튜터님께 조언을 구해서 어떤 식으로 접근을 하고 구글링을 해야할지 듣게 되었다.

그 과정에서 얻게 된 지식을 정리를 해보고자 한다. 간단한 날씨 위젯 기능조차 구현할 수 없는 http 프로토콜 배포의 단점을 극복하려는 과정이니 나름 뜻깊은 내용이라 말이 많을 것 같음.

초반에 참고한 블로그들.

 

Ubuntu Nginx 환경에서 CertBot을 사용하여 https 사용하기

CertBot 패키지를 사용하여 Nginx 서버에 https를 적용하는 방법을 알아보도록 합시다.

velog.io

 

 

최신 Let’s Encrypt SSL 인증서 발급 방법 4가지 정리 | 꿈꾸는섬

마케팅 경영 사례 연구 및 트렌드 탐구

happist.com

 

 

ubuntu에 nginx 설치하고 ssl 적용하기

프로젝트를 진행하는 중 팀장님께 도메인에 SSL을 적용하라는 미션을 받았다. 미션을 해결하기 위해 DB와 서버를 띄우는 AWS Ubuntu Instance에 접근해서 Nginx를 설치하고 Let'Encrypt를 사용해서 SSL 인증

velog.io

일단은 대략적인 구조를 말하자면, 다음과 같다.

 

갑자기 어디서 튀어나온 wsgi냐면, 이렇게 플라스크 공식 문서에서도 호스팅 서버로 wsgi를 사용하기를 권장하고 있기 때문이다. 

로컬 컴퓨터에서 실행할 떈 출력되지 않지만 우분투에서 플라스크를 실행할때 자세히 보면 배포 단계에서는 직접적으로 플라스크를 열어둔 서버를 포트 포워딩만 하는 것이 아니라 "wsgi 서버 사용을 권장"하고 있는 문구가 보일 것이다.

그러니 마이크로 웹프레임워크 플라스크를 더 잘 활용하고, 안전하게 배포할 수 있는, 그래서 더 쾌적하고 안전한 사용자 경험을 제공할 수 있는 wsgi와 nginx, 그 밖에 개념들까지 천천히 다뤄보겠다. (aws 인스턴스를 한 열댓개를 갈아치우면서 삼일을 꼬박 쏟은 작업이라 할 말이 많다...)

반응형

댓글