Heroku, ClearDB 사용법

마코레·2022년 4월 14일
1

백엔드개발

목록 보기
1/18

작년 여름방학때부터 쫌쫌따리 개발해온 아프디망고의 서버배포를 위해 최근에 Heroku를 사용해서 배포하고, clearDB를 사용하여 서버와 연결하였다. 정말 완벽한 Today....I Learned는 아니지만서도...I Learn은 맞으니까 적어보려고한다.


Heroku를 사용한 이유

일단 당연하게도 첫번째 이유는 돈 때문이다.
배포서비스에는 종류가 다양하지만...아프디망고같은 경우에는 실제로 구글 플레이에 출시할 예정이었고, 또한 지원받는 금액이 전무했기때문에 무료 배포 서비스가 필요했다.
그중에 heroku가 가장 인기가 많고 참고할 자료가 많아 선택하게되었다.
Heroku에 연결할 수 있는 애드온들이 굉장히 많은데, 그중에 무료 DB 호스팅 애드온도 있다.
ClearDB인데, 제약사항이 존재하지만, 절대로 내가 원하지않는데 과금이 되지 않기때문에 유용하다고 느꼈다.


사용 방법

Heroku에 무슨 AWS RDS를 연결하겠다는둥 복잡한일만 하지 않는다면 사용방법은 굉장히 간단하다!

1. new app 생성

Heroku에 로그인을 한 후, 오른쪽 위에 있는 new를 클릭해서 새로운 헤로쿠앱을 생성한다.
기본적으로 region은 무조건 US이다. 무료버전에서는 US와 Europe만 가능하므로 그냥 US로 가자.

2. Resources에서 ClearDB 추가 및 연결

Resources에 들어가서 ClearDB라는 애드온을 찾아 추가한다.
어떤 app하고 연결할거나 할때 1번에서 생성한 본인 app이름 적어주면된다!!

그러면 이제 생성한 mysql을 어떻게 로컬 mysql workbench로 접근하냐고 하면,
1. cmd창을 켜서 heroku login을 먼저한다
2. heroku config을 치면 헤로쿠에 있는 설정들에 대한 정보가 다 뜨면서 CLEAR_DATABASE_URL도 뜬다
3. 그 url 내용을 하나하나 뜯어보면 호스트명과 비밀번호와 유저명을 알아낼 수 있다.

mysql://[user name]:[password]@[Host name]/[password2]?reconnect=true

이런식으로 heroku안에 필요한 값들을 적는곳이 있다. mysql workbench에서 DB설계를 모두 완료한 후, 백엔드와 연결을 할때는 굳이 백엔드 코드 안에 적어줄 필요없다. cleardb같은경우는 아까 봤던 그 url이 저기안에 적혀만있으면 오케이

3. 미리 개발 완료한 백엔드 코드 준비하기

본인이 배포하려고 하는 프로젝트를 만들어놓는다~

4. Deploy 하기

heroku에는 배포방식이 총 3가지가 있다 :
git으로 배포하는거, 내 깃허브 레포랑 연결하는거, 그리고 마지막으로 신원미상의(?)방법이다.
주로 앞에 2개로 진행하는거같다.
clearDB를 쓰는경우 중요한 비밀번호등이 다 heroku 웹서비스에 적혀있고 깃허브코드에는 없으므로 그냥 깃허브 배포방식이 가장 편할것같다.

근데 문제는 나같은 경우는 처음에 RDS와 연결하겠다고 삽질을 많이해서 코드안에 비밀번호가 있었기때문에 깃허브에 노출되지않는 git방식으로 배포를 진행하였고, 그후로도 계속 git으로 배포중이다. 이미한번 비밀번호를 적은채로 배포를 했기때문에 이걸 깃허브로 옮기면 노출이 되기 때문이다...다른여러분들은 절대 이상한짓하지말것..!

그래서 그냥 배포한 백엔드 폴더 복제해서 비밀번호파일만 삭제하고 깃허브에 한방에 올려놨다.
이거는 실제로 헤로쿠와 연결된 폴더는 아니고 그냥 깃허브 전시용...

참고로 배포방법에 대한 자세한 방식은 heroku에서 다 자세히 알려주고있다. 코드하나하나 적혀있으니 보고 그대로 따라치면된다.


기타 알아둬야할점

무료버전의 경우 heroku는 하루에 16시간까지 사용하능하며 30분동안 트래픽이 없는경우 sleep mode에 들어간다. sleep mode의 단점은 다시 깨는데 시간이 좀 걸려서 30초까지 걸릴 수 있다.

사용자입장에서 게임을 켰는데 서버연결만 30초면 꺼버릴 수 있기때문에 Kaffeine을 이용하면 좋다.

※ 30분마다 깨워주는 서비스이다. 딱 말처럼 카페인작용! 깨우지않는 bed time같은것도 설정가능하기때문에 아까얘기했던 16시간을 지키기위해 8시간을 언제 재울지 정해놓을수도있다.



헤맸던 점

처음에 clearDB의 존재를 몰랐기때문에 그냥 전에 하던거처럼 AWS의 RDS를 사용하려고 했다.
막무가내로 전에 하던것처럼 spring boot의 application쪽에 비밀번호 적어놓고 heroku로 배포하려는데 계속 실패했다...그런식으로는 절대 안되는것같다.

그냥 깔끔하게 cleardb사용하던지, heroku에서 기본은 postgreSQL이라고 한다.
그걸 사용하는 방식으로 heroku는 진행해야할것같다.

ClearDB같은 경우는 1시간동안 가능한 question수가 3600으로 제한이 되어있다. 이걸 모른채로 아프디망고를 출시했었는데, 초반에 홍보때문에 사용자가 한 50명쯤 몰렸더니 순식간에 제한이 차서 게임 속 랭킹보드가 뜨지 않는 오류가 있었다...ㅎㅎ... 이걸 해결하려면 과금을 하든지, 아니면 어플안에서 DB에 쿼리보내는일을 적게 만들어야할것같다. ClearDB 무료 쓰시는데 실서비스화할거면 무조건 DB요청횟수를 줄이도록 코드짜시길!!

profile
새싹 백엔드 개발자

0개의 댓글