1주차의 주요 주제는 CI/CD였다.
기본적으로 주어진 키워드는 github action
, aws ecr
, aws ecs
,docker
가 가장 중요한 키워드였던 것 같다.
나의 경우 docker와 github action은 조금은 써봤지만 aws ecr, ecs는 사용해보지않아서 어떻게 해야할 지 모르기때문에 튜토리얼처럼 가장 기본적인 것들부터 해보려고했다.
task-definition.json
task definition의 경우 ecs에서 어떤 작업을 할것인지 정의하는 파일로, 이미지는 무엇을 쓸건지, cpu, 메모리 등 많은 것을 제어할 수 있다.
그렇기 때문에 민감한 정보들이 많다고 생각이 들었다. (accountId, ecr image, region 등..)
그러나 예제들을 보면 죄다 task-definition.json에서 json부분을 루트 폴더에 복붙하세요!
라고 되어있길래 보안적인 부분은 생각하지 않을수가 없었다.
-> aws cli를 이용하여 task-definition을 불러와서 json파일로 만들어서 사용하는 방법을 사용했다.
이 방식의 경우 따로 퍼블릭하게 노출되지 않고 action단계에서 불러와서 바로 만들기때문에 조금 더 안전하다고 생각이 들었지만, 조금 더 좋은 방법이 없을까에 대해서 생각이 들었다.
-> 코치님한테 물어봤을 때 aws cli에서 update service를 이용하라고 하셨다. https://docs.aws.amazon.com/cli/latest/reference/ecs/update-service.html 개인적인 생각으로 이방법이 조금 더 깔끔하지 않을까 싶은데 아직 시도는 안해봤다.
환경변수 관리
환경변수의 경우 나는 몇가지 경우의 수가 있다고 생각했다.
위 4개정도가 있다고 생각했는데, 1번이나 2번을 사용하려고 했을때 어떤걸 선택해야할지 모르겠어서 물어봤을 때 정답은 없는 것 같았다. 다들 개인적인 의견으로는 1번이 좋을 것 같다라고 생각하셨는데
익숙하기도 하고 레포지토리 단위라면 github secret에 하는것도 괜찮다고 말씀해주셨다.
나 또한 1번과 2번 둘다 사용했을때 둘다 비슷한 것 같아서 1번을 선택했다.
github secret에 환경변수를 전부 저장하고 docker image build할때 넣어주는 방식을 선택했다.