본문 바로가기

project/맞춤법 검사 on 카카오톡 챗봇

[카카오톡 챗봇으로 맞춤법 교정기 만들기] 4 - Heroku로 서버 띄우기

728x90

서버 개발을 완료하고 로컬 테스트를 마쳤다면 이제 서버를 온라인 환경에 배포해야 한다.

 

서버 배포를 위해서는 배포 환경을 선택해야 한다.

토이 프로젝트는 클라우드 환경을 추천한다.

Heroku를 선택했다.

 

Heroku는 aws ec2 보다 앱 배포 환경이 친절하다. 앱 운영/배포에 필요한 기능을 제공한다.

ec2처럼 ssh 로그인은 안된다.

 

내용

0. Sign up

Heroku 여기서 가입하면 된다.

1. Create New App

 

create new app

이렇게 하면 앱에 접속이 가능하고 개발한 앱을 배포할 준비가 됐다.

처음에 들어가면 이렇게 뜬다

 

2. 배포 준비

flask 앱 배포를 위해서 heroku 앱 실행 명령 지정(Profile), 실행환경 정의(requriments.txt, runtime.txt)가 필요하다.

 

Procfile에는 heroku에서 해당 앱을 실행할 때 사용할 명령어를 선언한다.

루트 디렉터리에 있어야 한다.

web: python app.py처럼 적어도 구동은 되지만, gunicorn이라는 WSGI 서버를 이용해서 앱을 구동해야 한다.

# Profile
web: gunicorn --bind 0.0.0.0:$PORT app:app

 

 

runtime.txt 는 앱의 python version을 지정한다.

python-3.9.0

requriments.txt 는 package dependency를 저장하면 된다.

pip freeze > requirements.txt

 

 

 

3. 앱 배포하기

heroku에서 앱 배포는 3가지 방법을 지원한다.

- heroku git : 로컬 소스코드를 heroku remote git repository에 커밋

- github : github repository와 연동해서 앱을 배포한다.

- container registry : docker image를 배포한다.

소스코드 관리를 github으로 했기 때문에 간단히 github을 이용해서 배포했다.

github으로 배포하면 배포 브랜치를 선택할 수 있다.

automatic deploys 옵션으로 실시간 동기화를 할 수 있다.

Wait for CI to pass before deploy 옵션은 CI 서비스(ex. travis.ci)가 돌고 나서 heroku가 앱을 배포하도록 한다.

또한 수동으로 특정 브랜치를 직접 배포할 수도 있다.

github 배포 시 옵션

 

4. 스킬 서버 테스트

카카오 챗봇에서 스킬 서버가 잘 동작하는지 테스트를 해야 한다.

카카오 오픈 빌더에서 스킬에 Heroku URL을 기재하면 된다.

그리고 요청할 파라미터로 교정을 원하는 문장을 적고 스킬 서버로 전송하면 맞춤법 교정 결과를 확인할 수 있다.

 

결론

작은 토이 프로젝트는 heroku를 이용하면 쉽게 앱 배포가 가능하다.

간단한 기능은 챗봇을 이용해서 제공하는 것도 좋은 것 같다.

 

소감

직접 운영되는 서버를 개발해보기 위해서 해당 프로젝트를 진행했다.

직접 앱을 온라인으로 배포하는 것은 처음이라서 자잘하게 겪은 것이 많다.

python Flask 서버 개발이 java spring과는 많이 다르다는 것을 느꼈다.

카카오톡 맞춤법 교정 챗봇을 사용자가 어떻게 알았는지 모르겠지만 사용자가 자꾸 늘어난다.

사람들이 카카오톡에서 맞춤법 검사기능에 대한 갈증이 있던 것 같다.

실제 운영되는 서버를 개발하면 개발에서 많이 배운다는데, 그런 환경이 되어가는 것 같아서 좋다.

 

참고

[Heroku] Get started with Python

⌨️github repository