⌨️ Free Tier 사용 시 발생한 문제
아무래도 AWS에서 Free Tier로 제공해 주는 인스턴스의 성능이 달리다 보니, 작은 애플리케이션을 띄울 때도 메모리 초과로 인한 문제점이 발생했다.
해당 부분을 기존 틀에서 크게 벗어나지는 않는 방식으로 해결한 방법을 써보려 한다.
1. Free Tier 사용 시 문제점 파악
사진으로 남겨두지 못한 점이 아쉽다. 우선 인스턴스에서 어떠한 문제점이 발생한다면 첫째로는 모니터링을 통해 해당 부분을 찾아낼 수 있다.
1.1. ERROR 문제점 파악하기
AWS에서는 생각보다 친절하게 트러블슈팅을 도와주고 있다
Troubleshoot instances with failed status checks - Amazon Elastic Compute Cloud
On some systems, you disable SELinux by setting SELINUX=disabled in the /mount_point/etc/sysconfig/selinux file, where mount_point is the location that you mounted the volume on your recovery instance.
docs.aws.amazon.com
해당 docs를 활용하여 문제점을 파악한 결과 나의 인스턴스는 메모리가 문제였다.
1.2. 해결 방안 고민
문제점이 메모리에 있는 것을 캐치한 순간 해결방안은 어렵지 않다.
온프레미스의 환경이었다면, 램을 늘리면 된다. 하지만 우리는 클라우드 환경이고 Free Tier를 사용하다 보니 인스턴스의 램을 늘리는 것에 대한 비용에 반발감이 있을 것이다.
그때 활용 가능한 것이 swap 영역이다.
swap은 원래는 Linux 자체의 해결방안이다. 단순히 EC2 인스턴스를 리눅스로 사용하고 있기에, 같은 방법을 적용했을 뿐이다.
1.3. Swap 메모리 영역 생성
다행스럽게도 이러한 문제를 겪는 사람들이 적지는 않은 것 같다.
그도 그럴것이 Free Tier 1G의 램은 정말 적기는 하다. 많은 사람들이 메모리로 인한 문제를 겪었을 것이기에
Swap 메모리 영역 생성 또한 aws의 docs에 자세히 나와있었다.
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-store-swap-volumes.html
Instance store swap volumes - Amazon Elastic Compute Cloud
You must prepend /dev/ to the device name listed by lsblk. Your device may be named differently, such as sda3, sde3, or xvde3. Use the device name for your system in the command below.
docs.aws.amazon.com
전체적인 흐름은 이렇다. swap 메모리를 생성해서 사용하도록 세팅 후
인스턴스가 재부팅되어도 바로 해당 기능을 사용하도록 세팅해주는 것이 전부다.
코드를 복사하려다가 docs를 참고하는 것이 습관이 되면 더 좋을 것 같아 블로그에서 코드는 제외하려고 한다.
1.4. 문제 해결 능력도 중요하지만 문제 인지 능력도 함양
문제 해결도 당연 중요하지만, 이번 트러블에서는 문제 인지 능력이 굉장히 중요하단 걸 알았다.
쉽게 말해 선임이나, 사수가 나에게 어떠한 문제를 해결하라고 지시를 내려주는 것과
프로젝트 간 문제가 발생한 것을 나 스스로가 찾아서 해결하는 것은 난도의 차이가 천차만별일 것이다.
우리는 문제가 A라는 것을 안다면 A의 해결책은 쉽게 찾지만
문제가 A라는 것을 인지하지 못한다면 해결책을 찾는 데는 많은 시간이 걸린다.
이번 일이 그랬다 나에게는, 처음에는 서버가 자꾸 죽는 것이 어떤 문제인지 몰라 방황했고,
내가 인스턴스 생성을 효율적으로 하지 못했나 하는 생각에 aws 기초 서적들을 살펴보았다.
하지만 마땅한 해결책이 없었고 결국 EC2를 하나하나 눌러보면서 배우기 시작했다.
그 결과 모니터링에 나의 인스턴스의 문제점을 기록해주는 것이 있다는 것을 알았고,
docs를 타고 들어가 해당 문제를 직면할 수 있었다.
이 처럼 사소하고 쉬운 문제도 처음엔 굉장히 어렵게 느껴지기 마련이다.
그렇기에 앞으로도 문제를 인지하고 해결하는 능력을 다방면으로 길러야겠다는 생각이 들었다.
2. 피드백
- 문제점에 대해 원인을 찾고, 해결해나가는 것에 대한 구체적인 기록을 생활하기 (지금보다 더 구체적으로 쪼개보기)
- 인프라적인 측면에서의 해결책과 함께, 인프라 아키텍처(서버 성능을 향상하는 것은 가장 쉬운 해결책이므로) 부분에서 성능 향상을
- 고민해 보기 -> 트래픽 분산이라던지, 메모리 점유율을 낮출 수 있는 방법들?
🌟REFERENCE
aws docs: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-store-swap-volumes.html