친구가 예전에 공부할 때 책을 그렇게 권장하지는 않는다고 했었던 기억이 있다. 사람들이 대부분 공부할 때는 책을 가지고 공부를 해야 나중에 잊었을 때 금방 기억할 수 있게 도와주고 모르는 부분만 슥 볼 수 있기에 선호도가 높은 걸로 알고 있는데, 이번 aws공부를 하면서 친구가 왜 그런 말을 했는지 알 것 같다.(물론 지금 글을 쓰는 목적이랑 관련이 없지만 또 아예 없는건 아니니까..)
에러가 나는 것은 다음과 같았다. ec2에서 git으로 가져온 프로젝트를 테스트 하는데 (명령어 ./gradlew test)테스트 코드에서 자꾸 통과를 못하더라.
우리는 로컬환경에서 시작했기 때문에 rds연결을 새로이 해주어야 한다. 앞서 진행한 것들은 환경을 만들어준 것이지 연결된 것이 아니기 때문에 프로젝트를 실행했을 때 자연스럽게 h2가 아닌 mysql(RDS)로 연결을 해주어야 한다. 그렇기에 가장 중요한 것은 application.yml 혹은 application.properties파일이다.
우리는 .gitignore파일을 통해서 보안이 중요한 application-oauth.properties나 application-real-db.properties 파일은 깃에 올려놓지 않았다. 그래서 ec2에서 확인해보면 해당 파일들이 없는 것을 알 수 있다.(당연하다) 그러면 이것들을 직접 생성해주고 이 파일들을 읽을 수 있도록 해주어야 한다.
자 이제 뭐가 문제인지도 알았고 해결을 어떻게 해야하는지도 알았다. 우선적으로 yml파일에 들어가면
우리는 이전에 datasource를 h2로 잡았기 때문에 위와 같이 되어있을텐데 모두 주석 처리 해주자. 그리고 real-db파일에 우리가 세팅해둔 mysql에 관한 정보들을 읽을 수 있도록 해주면 된다.
필자는 그것을 우선 profile.include를 통해서 읽으려고 했다.
이렇게 세팅하면 intellij에서는 문제없이 돌아간다. 문제는 ec2 터미널에서 작업할 때이다. 그때는 git이 불러온 프로젝트이기 때문에 oauth, real-db파일은 외부에 있다.
필자는 git을 아직 잘 모르기 때문에 최대한 프로젝트는 커밋한 부분에서 건들이지 않도록 하고 싶었다.(예전에 괜히 손댔다가 버전 차이가 있어서 문제가 어쩌구 저쩌구..)이걸 읽을 방법이 필요했는데 책에서 보면 deploy파일을 통해 읽히는 것 같았다. 근데 test는 그것보다 우선적으로 실행되는 것인데 build 전에 읽어야한다고 생각했다.
그래서 생성한 파일들의 위치를 직접 application.yml파일에 입력시켜 읽을 수 있도록 해주었다.
완료!
이런 부분이 문제가 생길거다..라는 문구도 없기 때문에 생으로 찾아내야한다. 어디가 문제고 무엇을 해결해야하는지까지. velog에 작성하는 것이 새 버전의 책을 작성하는 것 같다는 생각이 든다. (책으로 공부하는 것에 부정적이지는 않다. 다만 이런 단점이 있다는걸 이번 공부를 통해 깨달은 것 뿐...)