요즘 공부도할겸 golang 으로 끄적끄적 만들어보고 있는게 있습니다. 그 중 일부는 웹 환경으로 구성하고 heroku에 띄울 생각인데, 루비처럼 사전에 세팅이 필요한 부분들이 있어서 내용 정리해둡니다.
Pre-setting
우선, GoLand 같은 IDE를 쓰더라도 빌드 로그 떄문에 커밋까지만 IDE에서 하는게 개인적으론 편합니다. 어차피 각종 명령 때문에 heroku client 설치가 필요하니 이참에 한번 깔아줍시다.
Install heroku cli
On Mac
|
|
On Ubuntu 16+
|
|
On Windows
- 64bit: https://cli-assets.heroku.com/heroku-x64.exe
- 32bit: https://cli-assets.heroku.com/heroku-x86.exe
설치가 되면 $ heroku
형태로 heroku 앱들을 제어할 수 있습니다.
Install Dependency
다음으론.. 디펜던시 잡아주기 위해 godep을 깔아서 디펜던시를 잡아줍니다.
Install godep
|
|
set dependency
|
|
Write Procfile
자 거의다 왔습니다. Rails는 gem file 설정부터 원래 레일즈 배포에서 하는짓들(db:migrate 등..)을 heroku 명령을 넣어주어 처리해야하는데, go의 경우는 Procfile이란 어떤 파일을 실행할지 결정해주는 파일을 통해 지정한 바이너리를 실행시킬 수 있습니다.
Procfile에서 사용하는 타입이 몇가지가 있는데, 이 중 web은 LB와의 매핑을 해줄 수 있는 지시어로 보통의 경우 web을 많이 사용하게 되실 것 같습니다.
Procfile
|
|
Command
|
|
Make/Push Heroku App
자 그럼 이제 heroku에도 앱을 만들어줘야합니다. (그냥 git repo 만든다고 생각하시면 편합니다.)
|
|
만들어주시고, git remote를 앱의 이름으로 지정한 후 heroku로 푸시를 해주시면 자동으로 배포됩니다.
Setting Git
|
|
Push!
|
|
배포가 완료되면 Procfile에 따라서 지정된 바이너리가 실행됩니다. (보통 main.go?)
Conclusion
루비만 거의 5년가까이 쓰다가 다른 언어를 해보려고 하니 아직 손에 좀 익지는 않습니다. 다만 golang 은근히 재미있습니다. 혹시나 관심 있다면 한번 해보시는 것도 추천드립니다. 아무튼 heroku 배포는 이정도면 쉽게 하실 수 있을것 같네요.