가끔 aws인스턴스가 메모리 문제로 벽돌이 되어버리는 상태가 발생했다…
돈이 많았으면 걱정하지 않았겠지만 저렴한 요금제를 쓰기 때문에 언제든 부하가 걸리면 벽돌이 되어버릴 수 있다.
현재 aws 인스턴스에는 팔만코딩경을 위한 백엔드서버가 돌아가고 있다. 서비스에 직접적으로 연관된 백엔드는 아니기 때문에 실시간 서버 상태는 중요하지 않지만, 서버가 죽으면 팔만코딩경을 효율적으로 사용하기 어렵기 때문에 관리가 필요했다.
이전까지는 운영진이 직접 팔만코딩경 블로그에 들어와 최근게시글 addon등이 동작하지 않는 것을 직접 확인해야 서버가 죽었다는 것을 판단할 수 있었다. 하지만 매일 운영진이 모니터링을 할 수 없기 떄문에 해결책을 생각해보았다.
해결책 나열해보기
사실 많은 방법들이 생각났다. 결국 인스턴스 자체가 죽은 것은 api를 호출해봐야 알기 때문에 api를 어디서 호출할지 어떤 주기로 호출할지가 중요했다.
•
crontab을 활용해 주기적으로 호출하기
•
github action을 활용하기
•
ios 단축어를 활용하기
crontab을 활용해서 만드는 것을 가장 먼저 떠올렸다. 하지만 피드백을 받는 것이 조금 어려웠다. crontab을 활용해서 만든다고 해도 만약 서버가 죽었을 때, 어떻게 개발자에게 알려줄 수 있을지 고민이 되었다.
그래서 github action을 사용하는 방법을 다시 생각해보았다. action을 사용하면 이메일로 피드백을 받을 수 있을 것이라고 생각했다. 그런데 결국 action을 활용하면 단지 api호출 한번만 하면 되는 서비스에 너무 많은 작업이 필요했다. 시험기간이기에 트레이드오프도 고려해야했다… ㅜㅜ
그래서 마지막으로 생각한것이 ios 단축어를 활용한 서버 상태 체크이다. 단축어를 활용하면 휴대폰 푸시 알림으로 실패했을 때 나에게 빠르게 알려줄 수 있을 것 같았다.
몇달 전 단축어에 어떤 기능이 되는지 확인하다가 url 요청이 가능한 것을 보고 해당 요청을 활용하면 되지 않을까 라고 생각했다.
iOS 단축어 URL 요청을 활용해 응답 받아보기
작은 휴대폰으로 개발하면 엄청 답답했을 것 같은데 역시 맥은 호환성이 좋았다.. mac 단축어 어플을 활용하면 자동으로 휴대폰과 동기화가 되기 때문에 mac을 활용해서 바로 단축어 어플을 켜 보았다.
빠르게 새 단축어를 만들어서 URL 콘텐츠 가져오기를 실행해 보았다. 기대한 것 보다 결과가 더 잘 나왔다!!
그런데 텍스트로만 나오니까 이 결과를 활용하기가 어려웠다. 그러다 출력 아래 부분의 버튼을 눌러 보았더니 URL 콘텐츠를 사전 타입으로 가져오고 있는 것을 확인할 수 있었다!!
그래서 빠르게 사전과 관련된 명령어를 찾아보았다. 입력 값으로 부터 사전을 가져올 수 있는 명령어가 있었다. 해당 API가 최근 게시글 6개를 가져오는 API였기 때문에 이제 이 사전의 개수가 6개인지만 판단하면 실제로 API가 정상적인 개수를 호출하는지까지 확인할 수 있었다!!
마침 개수 세기명령도 있어서 바로 넣어봤더니 결과가 잘 나왔다!! 단축어 스크립트가 생각보다 엄청 잘 되어있다고 느끼는 순간이였다.
마지막으로 분기를 추가해서 실패했을 때, push 알림이 뜰 수 있도록 설정했다
API 호출에 실패했을 경우 아래와 같이 push 메세지가 출력된다!!
이제 이 단축어를 원하는 시기에 실행할 수 있도록 자동화 설정을 휴대폰에서 해주면 끝이다. 나는 6시간 마다 동작하도록 설정했고, 오전 6시에는 실행되지 않도록 설정했다!
끝!