daily

23.03.20. MongoDB

Juhyuck 2023. 3. 20. 23:18
728x90

Issue

스파르타코딩클럽의 웹개발 종합반 강의 막바지에 HTML+CSS+JS ↔ Flask ↔ MongoDB로 만든 간단한 웹페이지를 AWS Beanstalk을 이용해 배포하는 과제를 진행했는데, Localhost에서 작동하던 웹페이지였으나, AWS에 올리니 CPU점유율이 100%가 넘어가면서 warning, severe가 발생.

우선 배포한 웹페이지에 접속은 되었으나, 기능은 동작하지 않는 상태.


Try&Error

30분 정도 어떻게 하나 하고, Beanstalk의 환경을 지우고, 애플리케이션을 지우고, 다시 설치해 보고, 다르게 만들어보고 했으니 시간만 흐르고 같은 상황이 반복되었고... 정신을 차리고 콘솔 로그를 천천히 살펴봤다. 

 

Failed to load resource: the server responded with a status of 500 (INTERNAL SERVER ERROR)

Uncaught (in promise) SyntaxError: Unexpected token '<', "<!doctype "... is not valid JSON

POST (AWS beanstalk url) 500 (INTERNAL SERVER ERROR)

Uncaught (in promise) SyntaxError: Unexpected token '<', "<!doctype "... is not valid JSON

 

위 메시지로 구글링을 통해서도 별다른 방법이 찾아지지 않았고... 천천히 읽어보니 "인터널 서버에 문제가 있다. Post로 주고받고 해야 하는데 서버 문제가 있다. 뭘 받았는데 유효한 JSON 형태가 아니다"

 

서버...  Flask 프레임워크를 사용한 Python 코드가 로컬에서는 잘 작동했으나 AWS에서는 안 된다는 말은 Python 코드 자체의 문제를 배제할 수 있고 그럼 MongoDB와 연결하는 문제일 것으로 추측했다.


Solution

MongoDB의 네트워크 접근(Network Access)을 살펴보니, 내 로컬 IP만 허용한 것을 확인하고, 0.0.0.0으로 전체를 열어줬더니 정상작동을 했다. 

(참고로 궁금해서 왜 0.0.0.0 이 전체 IP를 허용하는 의미인지에 대해서 찾아봤다. 링크)


Learned

- 사용하는 서비스의 초기 설정할 때 자세히 읽어보자.

(강의를 따라갔더니 대충 넘겼으나, 강의는 예전 UI로 설명해서 놓쳤다.)

- 오류 메시지를 검색한다고 답이 나오는 것은 아니다.

(특히, 일반적인 오류일 때 더 그럴 것,
내 경우는 INTERNAL SERVER ERROR, Unexpected token '<', "<!doctype "... is not valid JSON)

- 오류 메시지를 근거로 천천히 유추해 보자.

(Localhost에서는 됐는데... AWS에서 왜 안되지? 안될만한 게....? 아, MongoDB구나!)