autoscaling을 하기위한 launch template을 생성할 때 필요한 이미지를 cloudformation으로 생성하려다가 이 이미지는 미리 만들어야 된다는걸 깨달았다.(cloudforamation으로 이미지를 못 만듦)
그러다가 우연찮게 이번 프로젝트를 하며 생긴 문제에 대한 해결책을 찾았다.
이번 프로젝트때 autoscaling을 이용할 때 launch template을 이용하는데 launch template의 이미지는 계속해서 업데이트해줄 수 없는 문제가 생겼다.
업데이트 해야되는 이유 두가지
시간이 지날수록 pull할게 많아지는 프로젝트 소스
oao프로젝트의 autoscaling과정은 어느 정도 cpu가 임계치에 도달한 후 시간이 지나면 scale out이 되는데 생성되는 인스턴스는 userdata로 github에서 git pull origin master로 프로젝트 소스를 당겨오는데 이 때 이미지는 항상 고정되어있고 프로젝트 소스는 항상 업데이트 되므로 시간이 지날수록 pull할 양이 많아진다. 물론 해결방법으로는 수동으로 image를 꾸준히 업데이트 해주면 되지만 귀찮았음.
프로젝트의 환경들의 버전
프로젝트의 환경은 거의 없기도 하고(기껏해야 nodejs,nvm,pm2,포트 리다렉팅정도) 거의 바뀌지도 않았지만 혹시 바뀌어야 될 수도 있기 때문에 업데이트할 필요성이 생긴다.
이미지 관련해서 서비스들을 찾다보니 자동으로 이미지업데이트를 해주는 aws image builder라는 서비스가 있었다.
그래서 image builder를 이용하려하니까 ami와 docker이미지를 이용하는 두 가지 방법이 있길래 두 가지 방식으로 다 해보려한다.(시간많음)
어쨋든 시간도 많고 트러블 슈팅이기도 하고 옛날부터 이미지 생성할 때 ami와 docker의 차이를 몸소 느끼고 싶었어서 하고있었던 cloudformation은 잠깐 빠이빠이하고 docker좀 만져봐야겠다.
앞으로 할거
docker로 프로젝트와 똑같은 환경의 인스턴스생성하면서 docker익숙해지기(ami로 생성하는 인스턴스와 뭐가 다른건지 생각)
ami와 docker 중 뭐가 덜 귀찮게 하고 더 많이 해주는지 aws image builder로 이미지 업데이트