Devops

프리티어 EC2 성능과 도커 이슈

maxwithjude 2025. 3. 4. 18:24

문제 발생

문제 상황 : 교육장에서 지원해준 성능 좋은 EC2가 만료되고 포트폴리오용으로 띄우고자 AWS 프리티어 t2.micro로 돌리려고 했는데 xlarge 인스턴스에선 잘 돌아가던게 안 된다. ㅎㅎ 

 

무한빌드 시작... 빌드하다 터진게 분명하다. 

하긴 빵빵한 메모리와 cpu에서 돌리다가 1코어 1gb 메모리로 내려오다니 얼마나 힘들었니..

문제 분석

요구사항 : 기존 프로젝트를 포트폴리오용으로 띄우면 좋겠다는 팀원들 나도 좋기때문에 해보려고 했는데.. 아무래도 docker로 띄우다보니 t2.micro의 1gib 메모리로는 부족한가보다...

 

그래서 서버를 돌릴 수 있으면서 최소비용으로 하고싶은데.. ec2 의 t2.small과 t2.medium 월 예상 가격이 각각 월 30000원, 월 76000원이었다. 취준생이 포폴용으로 띄우는데 돈을 많이 쓰기 힘들었고 팀원들의 의견도 매번 물어봐야 했다. 비용을 낮추고 싶었다.

 

AWS LIGHTSAIL

그러다가 교육장의 컴퓨팅 서비스가 lightsail이었던 걸 기억해 lightsail 인스턴스의 가격을 알아보기 위해 LIGHTSAIL 사이트에 방문했다.

테스트해보려던 2gb 메모리를 제공하는 인스턴스가 월 12달러에다가 90일 무료까지 제공하다니! 심지어 CPU도 2개다 1년을 띄운다고 가정하면 꽤 많이 세이브할 수 있을것이다.

 

물론 CPU의 모델을 보긴해야겠지만 현 상황에선 최선으로 보인다.

 

 

하지만 만약 2gb 메모리 인스턴스에서도 안 된다면 어떻게할지 의견을 나누었다. 일단 최적화를 해보고 그래도 안 되면 포트폴리오용으로 6개월 컴퓨팅 서비스를 이용하기로 합의했다.

 

빌드 최적화

그렇다면 최적화는 어떻게 할 것인가?

 

swap이라는 디스크를 메모리로 가져와 쓰는 방법이 있다고 한다. 하지만 메모리는 초고속 DRAM이라 SWAP으로 가져온 디스크는 메모리에 비해 엄청 느리다. 일단 성능 좋은 인스턴스 사용해보고 안 되면 고려해봐야겠다.

 

결과

프리티어 인스턴스에서는 안 되던 빌드가 성공했다. (2CPU, 2GB MEMORY)

 

근데 주변 전공자 친구한테 물어보니 프리티어여도 swap 메모리를 쓰면 돌아간다고 한다. 프리티어를 쓰면 비용이 안 들수 있을 것 같다.

 

프리티어 인스턴스를 다시 발급받고 스토리지를 30gb로 받았다.

 

성공

swap 메모리를 2gb로 늘려서 빌드해보니 성공했다.

실제 유저들이 많은 운영 서비스가 아니므로 가능한 조치였다.

근데 확실히 xlarge 인스턴스 쓰던 때보다 엄청 느려진게 웹 사이트에서도 체감이 되었다.