예전에 공모전에 참가하며 설정파일에 모든 주소들이 공개되어 해커가 db를 싹다 암호화해버린 경험이 있었다. 그래서 당시에는 결국 repository를 private로 진행했고 이후 공모전이 끝나고 나서 public으로 전환한 기억이 있다.
사실 이러한 문제를 알고 있었기 때문에 과연 프로젝트를 공개적으로 배포하기 위해서는 무엇을 해야하는지 여러가지 방안을 고민해보게 되었다. 이때 사용가능한 방법을 몇개 생각해보았다.
- ${key}사용하여 환경변수로 application.properties를 작성한다.
이 방법을 사용하는 경우 로컬에서 매번 실행시 java -jar -Dusername=root target/SendOwl-0.0.1-SNAPSHOT.jar 식으로 실행해주어야 한다. 나는 intellij를 사용하는데 구성옵션을 바꿔주면 상당히 편하게 테스트가 가능해진다. 그러나 팀원이 intellij를 사용하지 않고 어떻게 세팅해야할지 더 오래걸릴 수 있기 때문에 고민이 되었다.(실행/디버깅 구성에서 환경변수를 추가해주면 된다.) - application.properties를 jenkins서버에 관리하여 빌드 전에 파일을 바꿔치고 빌드를 진행하고 배포한다.이 방법으로 진행하면 무식하기는 하지만 팀원의 환경에 상관없이 바로바로 적용이 가능하고 향후 수정에도 어려움이 덜하다.
고민끝에 우선은 2번째 방법으로 진행하고 향후 문제가 발생하거나 개선의 여지가 생길때 바꾸어야 되겠다.
우선은 jenkins서버에 내가 원하는 원격 DB서버의 환경이 적힌 application.properties를 넣어준다.
이후에 cat 명령어로 실제 서버 스펙이 적힌 application.properties를 로컬환경의 application.properties환경에 덮어준다. 그리고 나서 Maven 빌드를 실행하여 jar 파일을 만들어 준다.
그리고 나서 build후 조치로 원하는 파일을 서비스 서버에 날려준다.
'스프링 부트 REST API 개발일지' 카테고리의 다른 글
[Redis] 조회수를 캐시를 적용했지만 속도가 느린 문제 해결 (0) | 2022.05.27 |
---|---|
[스프링] spring MVC life cycle (0) | 2022.04.25 |
JWT (Json Web Token) (0) | 2022.04.05 |
[SpringBoot] DTO를 어떻게 관리해야할까? (0) | 2022.04.05 |