일어난 일
코드 상에 Config 변수를 CamelCase로 만들어놓고, viper로 환경변수를 읽어서 주입하도록 되어있다.
임시대응을 위해 코드상에서 환경변수를 바로 주입해서 사용해야 했는데 윈도우 머신에서는 환경변수를 똑같이 카멜 케이스로 주입해도 문제 없이 작동했다.
예를들어 Config 변수 이름이 MyName 이었는데 엔트리포인트 Go 파일에서 다음과 같이 override 할 수있다.
os.Setenv("MyName", "Not markman")
윈도우에서는 이렇게 해도 viper가 해당 envvar를 잘 읽어서 config에 넣어줬다
이제 배치로 여러 프로세스를 한번에 돌리기 위해 Ubuntu 18로 ec2를 셋업하고 돌리는데 환경변수가 적용이 안되더라
이것저것 삽질하다가, 혹시 몰라서 라이브 배포 설정 파일의 환경변수를 보니 다 대문자로(ex. MYNAME) 적혀있어서 그렇게 설정하니 되더라 ㅜㅜ
os.Setenv("MYNAME", "Not markman")
원인 탐구 - WIP
가설들
- Windows 환경변수와 Linux 환경변수 동작 방식이 다르다
- viper가(또는 go 컴파일시) os마다 환경 변수를 받아오는 방식이 다르다
'개발' 카테고리의 다른 글
애자일까진 아니더라도 스프린트가 하고싶어 (1) | 2021.08.14 |
---|---|
[실습] 스프링 부트와 aws로 혼자 구현하는 웹서비스 무작정 따라하기 (완) (0) | 2021.06.09 |
Express 앱에 passport와 Auth0로 계정 기능 추가하기 (0) | 2019.11.24 |