개발자 과정 기록 및 일기

내가 잘못한 게 아니었다니 (aws 가 그럴 수도 있지, 프리티어잖아 한잔해)

킹갓왕동현 2024. 8. 3. 17:02

전에 팀 프로젝트를 할 때

요청 반환시간이 늦어지는 경험을 종종 했었다.

 

그 당시에는 다같이 하나의 완성품을 정해진 기한 내로 만들어야 된다는 압박에

코드를 손봐서 더 빠르게 작동하게끔 하기보다는

다음 기능, 또 다음 기능을 만들어야지 하는 생각으로 프로젝트를 진행했었다.

 

그런데 이번 프로젝트는 좀 달랐다.

주어진 시간은 일주일이라 매우 짧지만 바로 그 점 때문에

기존에 수업하며 비슷하게 만들어 본 게시판을 또 만들기로 했고,

혼자 하는 프로젝트라 완성에 대한 부담감도 적었다.

 

배운 것과 기존에 내가 짰던 코드를 참조해서 비교적 수월하게 작업하고 있었는데,

또 요청 반환시간이 늦어지는 상황이 발생했다.

 

처음엔,

느려짐이 발생한 타이밍이 묘하게 쿼리를 복잡하게 짜는 타이밍과 맞물려서

지난 프로젝트나 수업에서 다뤘던 쿼리보다 꽤나 더 복잡한 동적 쿼리를 작성했으니

코드의 복잡도가 문제인가 보다 생각하고 코드를 리팩토링하기 시작했다.

 

그래서 공식문서나 블로그, GPT 등 이것저것 알아보며 코드를 고치고

여러가지 방면에서 고려를 해봤는데,

이상하게 고치면 고칠수록 점점 더 느려졌다.

 

그래서 원인을 파악하기 위해 더 알아보고 코드를 수정할 부분이 있는지 검토하면서

EXPLAIN 을 써서 SQL 요청들의 반환시간을 체크해보기도 하고,

각 동적 쿼리에서 불러지는 속성들에 INDEX 를 생성해보기도 하고,

PROCESSLIST 를 써서 대기열에 올라가 있는 프로세스들중

오래걸리는 것으로 보이는 것들도 삭제해봤지만 효과는 미미했다...

 

심지어 이런 작업을 거치면 거칠수록 더 느려졌는데,

그러다 이제는 아예 느려지다 못해 연결이 안되기 시작했고,

이 순간부터 내 잘못이 아님을 의심했다.

 

그래서 AWS 프리티어, AWS 요청 느려짐 등 정보를 알아보다가

나와 거의 동일한 증상을 겪는 사람의 글을 찾았고,

그 분의 해결 절차를 따라해봤고, 해결이 됐다!

 

방법은 인스턴스를 Stop 하고, stop 되길 기다렸다가 Start 해서 ip 주소 자체를 재할당 받는 것이었다.

그 글에 ip 주소가 바뀌려면 꼭 Reboot 하지 말고 Stop 했다가 Start 하라고 나와있었는데,

직접 Reboot 를 해보지 않고 바로 Stop 하고 기다렸다가 Start 를 해서

정말로 Reboot 시에는 ip 주소가 안바뀌는지 여부는 모르겠다만 아마 맞을 것 같다!

그러니까 굳이 Stop 한 이후에 Reboot 와 Start 를 따로 두지 않았을까...

 

아무튼 그렇게 ip 주소를 바꾸고 나니 정말로 속도가 말도 안되게 빨라졌다.

 

그런데 여기서 의문이 생겼다.

ip 주소가 바뀌면 기존 주소에 있던 데이터들이 다 날라가서 데이터베이스를 새로 만들 걱정을 했는데,

신기하게 바뀐 주소에서도 그대로 데이터들이 남아있었다.

 

그래서 이부분에 대해 GPT 와 얘기를 해보면서 스스로 추측을 해본 결과 이러한 대답을 내놓을 수 있었다.

 

"공인 ip(Puplic ip) 는 새로 할당 받은 게 맞지만, aws 에서 관리하는 내부 ip(Private ip) 는 바뀌지 않았기 때문에,

aws 에서는 내부 ip 로 나를 식별하여 데이터를 보내주어서 데이터베이스가 유지된 것이고,

응답속도가 개선된 건, 전에 할당 받아서 쓰던 공인 ip 주소에 문제가 있었기 때문일 것이다."

 

라는 결론을 스스로 내려봤고 아마 더 자세히 공부하면 확신하게 되겠지만,

지금 상황에서도 저게 거의 맞다고 생각된다.

 

이번 경험을 통해 느낀 것은,

정처기를 공부하면서 DHCP 나 NAT 등 네트워크 지식을 어설프게나마 열심히 공부했는데,

이러한 문제를 해결하면서 문제의 원인과 해결 방법을 찾고 이해하는 것에 큰 도움이 된다는 것이었다.

 

그리고 배우지 않은 것에서 문제가 발생했을 때 해결하는 것이 이렇게나 기분 좋고 뿌듯한 일이구나. 라는 걸 깨달았다.

 

 

 

어쩌다보니 생각보다 글이 길어졌는데, 얼른 다시 프로젝트 하러 가봐야겠다 ㅎㅎ 이러다 완성 못할듯