개요

일전에 c로 작성되어 있던 빈도분석 코드를 파이썬으로 변환하고, 이를 다시 flask를 이용하여 웹서비스로 변환한 적이 있다. 이러한 방식이 가능하다면, 학과에 존재하는 많은 코드를 웹으로 옮겨 놓을 수 있기 때문에 좋은 예제가 될 수 있겠다고 생각했다. 하지만 cgi 설정을 위해서는 웹서버(아파치) 설정파일을 만져야 하는 번거로움이 있었다. 한번만 셋팅하면 되기 때문에 한경대 서버에 배포하였으나, 잦은 서버 다운으로 운용하기가 어려웠다.

최근 서버리스로 구현한 서비스를 종종 보았는데, 특히 최근에 notion에 google analytics를 붙이는 글을 본적이 있다. 해당 글에서 now.sh를 이용해서 서비스하고 있는 것을 발견하고, 나도 한번 해봐야겠다는 생각에 덤벼들었다.

결과물은 https://project.taegon.kr/freq-analysis/에서 확인할 수 있다.

작업내용

아주 간단한 모형이고, 텍스트 파일을 읽어서 텍스트 파일을 출력하는 레거시 코드였다. 그래서 프론트엔드는 POST로 값을 넘겨주고, 그 결과를 비동기방식으로 전달받아서 출력하도록 간단하게 작성하였다.

백엔드는 POST로 값을 읽어오는 부분만 해결하면, 간단한 flask 예제로 구현할 수 있었다. 기존 코드가 파일 핸들러에 결과물을 출력하는 방식이었기 때문에, StringIO를 이용하여 기존 코드를 거의 수정하지 않도록 작업을 하였다.

now.sh에 계정을 만들고, cli 프로그램을 설치한 후, 아래와 같이 예제 프로젝트를 cli에서 다운받았다. python-flask 예제코드를 기반으로 작업을 하였다.

now init python-flask

GitHub와 프로젝트를 연결하면, commit되면 자동으로 배포가 실행된다. 이 때 url은 프로젝트이름-git-master.유저아이디.now.sh가 된다. 따라서 본 프로젝트의 url은 rse-api-git-master.taegon.now.sh이다.

관련링크