1. 서브모듈 개념
기존에 .env 파일을 이용해 환경변수를 관리했을 때는 아래와 같은 단점이 있었다.
- 여러 작업자가 각각 env 파일을 가지고 있어 주기적으로 동기화를 해야했다.
- application run 혹은 test run을 할 때 인텔리제이의 edit configuration을 통해 추가 설정을 해야했다.
- github secrets에 등록 해야할 환경 변수가 너무 많았다.
따라서 이런 단점을 해소하고자 git submodule을 이용해 환경 변수를 레포지토리로 관리하게 되었다.
서브모듈은 아래 그림과 같이, github repository 내에 또다른 sub repository가 있는 형태이다.

- main repository의 하위 폴더이자, 별도의 repository로 관리된다.
- .gitmodules라는 파일에, 어느 경로의 서브모듈이 어느 폴더에서 관리되는지 명시할 수 있다.
- 서브모듈을 private repository로 만들면 권한있는 사용자만 내용을 확인할 수 있다.
따라서 기존 .env 파일을 사용할 때와 달리, 여러 작성자가 파일을 나눠가질 필요도 없고 인텔리제이에서 추가 설정을 할 필요도 없다. 게다가 서브모듈에 환경변수 내용을 직접 명시하므로 secrets에 등록할 변수도 많이 적어진다는 장점이 있다.