Logs/Groupin 프로젝트 진행 일지

[Spring/Backend] 프로젝트 개발 5주차. 배포 지옥과 프로젝트 마무리

Jonnie 2022. 8. 15. 17:28

우여곡절 끝에 백엔드 기능 개발을 마치고 프론트와의 연결을 위해 배포를 진행했다.

 

배포를 위해 AWS EC2와 Heroku 중 어떤 것을 사용할지 고민하게 되었다.

 

AWS를 사용해보고 싶었으나 서버에 직접 설정해주어야 하는 것들이 많고 무엇보다 전에 Free Trial 해제를 안 해서 과금할 뻔하여 힘들었던 경험이 생각나서 이번 프로젝트에서는 간단하게 Heroku를 사용해보았다.

 

Heroku는 Git에 올라가 있는 레포지토리를 기준으로 서버에 올려주어서 작업하던 환경에 쉽게 연결할 수 있고, 무료로 사용할 수 있는 ClearDB가 있어 좋은 선택지가 되었다.

(로컬에서 MariaDB로 작업을 했어서 Heroku에 제공되는 DB 중 MariaDB 기반의 JawsDB를 사용하고자 했으나 무료 용량이 5MB였나밖에 되지 않아서 우리 프로젝트는 배포했을 때 Connection이 많아서 불가능하다고 떠서 포기했다..)

ClearDB 또한 MariaDB와 비슷하게 MySQL을 기반으로 작동하므로 별다른 문제 없이 실행할 수 있어서 다행이었다.

→ 로컬에서 사용하던 DB 기반으로 연결이 가능한 형태도 찾았는데 시간이 부족한데 에러가 자꾸 터져서 포기했다. 내 MariaDB야 힘내 젭발...

 

 

국내 서비스 중 클라우드 타입(cloudtype)이라는 선택지도 괜찮아 보였는데 초반에 뭘 잘못 건드렸는지 계속 빌드에 실패해서 포기했다..ㅎ 다음에 간단한 서비스 배포할 때 사용해보려 한다

 

Heroku 배포는 공식 가이드를 기반으로 진행했는데 Procfile 파일 설정을 안 해줘서 한 3시간 헤매고, DB 연결 안 해줘서 또 3시간 헤맸다. 바보다.

https://devcenter.heroku.com/articles/getting-started-with-java

 

Getting Started on Heroku with Java | Heroku Dev Center

Deploy a Java app in minutes with this tutorial. In this step, you install the Heroku Command Line Interface (CLI). You use the CLI to manage and scale your applications, provision add-ons, view your recent application logs, and run your application locall

devcenter.heroku.com

전에 동아리 활동으로 Heroku 배포를 하며 만났던 에러를 기록해놨는데 동일한 에러가 발생해서 비슷하게 해결하는 방향만 생각하다가 다른 문제임을 인지하는 데 시간이 오래 걸려서 더 힘들었다...과거의 경험이 나를 발목 잡는 경험이라니. 멍청했지만 나름의 교훈을 얻었으니 만족스럽다.

 

Heroku에서 DB를 사용하기 위해선 결제수단을 등록해두어야 하는데 결제 수단 등록할 때 의외의 어려움을 겪기도 했다.

Postal Code를 입력하는데 어떤 우편 번호를 넣어도 계속 잘못된 postal code라고 에러가 나서 홧김에 서울로 해봤는데 됐다(?)

City도 Seoul은 인식이 됐다 안 됐다 자꾸 에러가 나서 그냥 강남으로 해보니 성공했다.

 

카드를 등록하면 소액의 금액이 잠깐 출금됐다가 바로 다시 입금되는데 안 쓰는 체크카드로 했다가 넣어둔 돈이 없는 것을 몰랐어서 다시 입력하는 것 때문에 약간의 번거로움도 있긴 했다.

 

 

이렇게 등록에 성공하고 테스트 후 깃헙에 push 했는데 깜빡하고 테스트하던 그대로 push 해서 db url, id, pw가 노출되었다.

밤새고 새벽 5시인가에 눈 반쯤 뜨고 push한 잘못이다

 

다행히 메일에 온 Gitguardian의 메일을 깨자마자 바로 봐서 커밋을 되돌리고 다시 push 해두었다

 

이제 API 테스트하고 프론트와 연결만 마치면 프로젝트가 끝난다..! 프론트가...알아서 해줄거야!!!

 

시간 되면 서비스 아키텍쳐나 기능들 정리해서 리드미 써야지

리드미 쓰는 게 제일 재밌다