Featured image of post Golang 으로 만든 웹 어플리케이션 Heroku에 배포하기

Golang 으로 만든 웹 어플리케이션 Heroku에 배포하기

요즘 공부도할겸 golang 으로 끄적끄적 만들어보고 있는게 있습니다. 그 중 일부는 웹 환경으로 구성하고 heroku에 띄울 생각인데, 루비처럼 사전에 세팅이 필요한 부분들이 있어서 내용 정리해둡니다.

Pre-setting

우선, GoLand 같은 IDE를 쓰더라도 빌드 로그 떄문에 커밋까지만 IDE에서 하는게 개인적으론 편합니다. 어차피 각종 명령 때문에 heroku client 설치가 필요하니 이참에 한번 깔아줍시다.

Install heroku cli

On Mac

1
brew install heroku

On Ubuntu 16+

1
sudo snap install heroku --classic

On Windows

설치가 되면 $ heroku 형태로 heroku 앱들을 제어할 수 있습니다.

Install Dependency

다음으론.. 디펜던시 잡아주기 위해 godep을 깔아서 디펜던시를 잡아줍니다.

Install godep

1
go get -u github.com/tools/godep

set dependency

1
godep save ./...

Write Procfile

자 거의다 왔습니다. Rails는 gem file 설정부터 원래 레일즈 배포에서 하는짓들(db:migrate 등..)을 heroku 명령을 넣어주어 처리해야하는데, go의 경우는 Procfile이란 어떤 파일을 실행할지 결정해주는 파일을 통해 지정한 바이너리를 실행시킬 수 있습니다.

Procfile에서 사용하는 타입이 몇가지가 있는데, 이 중 web은 LB와의 매핑을 해줄 수 있는 지시어로 보통의 경우 web을 많이 사용하게 되실 것 같습니다.

Procfile

1
web: yourbinaryname

Command

1
echo "web: testapp" > Procfile

Make/Push Heroku App

자 그럼 이제 heroku에도 앱을 만들어줘야합니다. (그냥 git repo 만든다고 생각하시면 편합니다.)

1
heroku create mytestapp

만들어주시고, git remote를 앱의 이름으로 지정한 후 heroku로 푸시를 해주시면 자동으로 배포됩니다.

Setting Git

1
2
3
4
git init .
git add *
git commit -m 'first init'
heroku git:remote -a mytestapp

Push!

1
git push heroku master

배포가 완료되면 Procfile에 따라서 지정된 바이너리가 실행됩니다. (보통 main.go?)

Conclusion

루비만 거의 5년가까이 쓰다가 다른 언어를 해보려고 하니 아직 손에 좀 익지는 않습니다. 다만 golang 은근히 재미있습니다. 혹시나 관심 있다면 한번 해보시는 것도 추천드립니다. 아무튼 heroku 배포는 이정도면 쉽게 하실 수 있을것 같네요.

Licensed under CC BY-NC-SA 4.0
Last updated on Apr 26, 2022 00:20 +0900