AWS로 인한 socket IO 에러
이전 회사에서 채팅 서비스를 개발하며 겪었던 오류가 떠올라 작성하게 되었다.
주변에서도 나만 유일하게 겪은 오류이기에 기억에 남는다.
기존 채팅 서비스는 Socket IO를 기반으로 운영되고 있었고
나 또한 Socket IO를 이용한 개발을 하고자 했다.
하지만 웹소켓 연결 이슈로 1주 하고도 3일을 소모하며 불필요한 작업 지연이 발생하게 되었고
팀장님과 데브옵스분, 백엔드분과 모여 회의한 결과
이건 AWS 문제로 보여진다는 결론을 내렸다.
해당 이슈에 대해 이해를 하기 위해선 HTTP의 통신 구조에 대해 먼저 알 필요가 있다.
일반적으로 HTTP 통신은 단방향 통신으로 클라이언트에서
HTTP 요청을 요청하면 서버는 요청에 대한 응답을 내려주고 끝난다(= 단방향성)
기존의 서버 통신에서는 클라이언트 서버와 백엔드 서버의 가운데에서
AWS가 위치해 하나의 통로 역할을 수행하고 있었다.
하지만 웹소켓을 사용하기로 한 이번에는 상황이 달랐다.
가운데에서 통신 통로로서 역할을 수행하는 AWS가 웹소켓 라이브러리 통신을 시도 시
통신 오류가 발생하도록 관리를 하고 있었기 때문이다.
이 점을 몰랐던 나와 동료분들은 Socket-IO 이외의 라이브러리를 사용해 문제를 해결하려 시도했고,
사용했던 라이브러리 모두 통신 오류가 발생했다. (Socket-IO, client IO 등)
하지만 React에 기본적으로 내장되어있는 webSocket을 사용해
통신을 진행했을 때 그제서야 정상적인 통신이 이뤄지는 것을 확인했다.
깨달은 점
실시간 서비스를 제공할 때 사용하려던 웹소켓 라이브러리에서 알 수 없는 오류가 발생한다면
기본 웹소켓을 사용해보자.