가장 큰 문제가 있었다.
현재 내가 도커와 쿠버네티스, 로드벨런싱을 적용한 배포 환경에 대해 이해가 없다는 것이다.
코드에 이슈가 생긴 부분은 내 파트인데, 이게 배포환경과 섞이면서 테스트 결과가 달라지다 보니,
로컬에서 아무리 테스트를 해도 의미가 없었고,
로컬에서는 애초에 disconenct가 작동하지 않았다.
애써 disconnect를 작동하게 하려고 이것 저것 해봤지만(setTimeout으로 호출, 서버 껏다키기, 새로고침)
동일한 disconnect 작동이 아니기 때문에, 확인이 불가했다.
무조건 쿠버네티스 환경에서 테스트를 해봐야 의미가 있었고,
현재의 나는 할줄 모르고,
그걸 배우느라 1달을 보낸 팀원분을 봣기 때문에,
이 에러 해결을 위해 잠깐 본다고 다룰수 있진 않을 것 같았다.
그래서 일단 팀원분과 소통하며 빌드를 기다리기로 했다.
로그가 추가된 파일을 빌드해서 함께 로그를 확인해 보는데,,
뭔가 굉장히 이상했다.
이전에 이미지 빌드해서 배포했던 콘솔이 여전히 나오고 있었다.
근데 방금 이미지 빌드해서 배포한 그 내용의 콘솔도 나오고 있었다.
과거와 현재가 공존하는 상황!!
이해할수가 없었다.방금 새로 빌드했는데!!
완전히 새로 빌드하셧다고 했는데!!ㅠㅠㅠ
알고보니 이게 빌드할때 캐시가 이슈가 있을 수 있다고 한다.
도커 이미지 빌드 과정에서 캐시를 사용하여 빌드 시간을 단축시킵니다.
이 과정에서 이전 빌드 단계의 결과가 새 이미지에 포함될 수 있으며,이로 인해 예상치 못한 로그 출력이 발생할 수 있습니다.
docker build 명령어를 사용할 때 --no-cache 옵션을 추가하여 캐시를 사용하지 않고 이미지를 빌드합니다.
이렇게 하면 모든 빌드 단계가 새롭게 실행되어 캐시로 인한 문제를 방지할 수 있습니다.
--no-cache 옵션을 적용해서 테스트를 다시 진행한 결과,
들쭉날쭉인 문제는 해결 되었지만, 여전히 문제는 처리되지 않았다.
방송이 메인화면에서 안보였던 이슈가 있었던 것은
방송종료를 누르지 않았는데 disconnect되면서 end 함수가 실행되어
live방송의 status를 바꿔주며 방송이 메인화면에서 안보였던 상황이였고,
쿠버네티스 적용 배포환경에서 어떤 이유로 disconnect 되는지 조차 파악이 안되었다.
이때부터였을까,, 로그를 매우 많이 찍기 시작했다.
코드를 보는게 로그때문에 어지러워 졌지만, 현재 빠르게 문제해결을 하기 위해서는
추적할 수 있는 장치를 많이 만들어놔야 겠다고 생각했다.
또한 어떤 상황에서든 disconnect가 일어날 수 있으니, 이를 처리해 주는 애가 필요하다고 생각했는데,
예를들면 이렇다.
유저가 언제나 커넥션이 좋으면 좋겠지만, 좋지 않은 환경이라면, 끊김 현상이 발생할 수 있다.
이때 유저의 채팅이 끊겼다가 다시 연결될때 입력이 가능해야는데, 현재의 로직으로는 불가하다.
그래서 배포쪽에서의 해결과, 로직 단에서 해결이 필요하다고 생각했다.
일단 자료조사를 해본 바로는,
메세지 브로커, 로직의 변경 등을 고려해야 겠다는 생각이 들었다.
여러번 테스트 해본 결과, 소켓 연결이 끊긴 후 유저가 채팅을 보내면 화면에 보이지 않는다.
그러나 욕설이나 도배를 하면, alert가 작동한다.
레디스에 저장도 한다. 그런데 이 저장을 페이지 새로고침 해서 다시 연결한 이후에 작동하는 듯 했다.
근데 종종 이 내용이 사라지는 경우가 있었다.
소켓이 tcp 통신을 하는것과 관련이 있을까 싶었는데, 어쨋던 저 내용이 사라지면 안되니깐,
메세지 보장을 해주는 메세지 브로커를 사용해야 할까? 싶었다.
로직의 변경같은 경우,
유저가 disconnect 될때 유저 정보를 저장해서 ,
해당 정보를 가지고 유저가 다시 연결할때 뭔가 로직을 처리해 주면 된다는 이야기를 들어 시도해 보려 한다.
일단 오늘은 여기까지,,
'TIL' 카테고리의 다른 글
24/02/16 TIL __ 실시간 시청자수 계산 오류(유저테스트) (0) | 2024.02.16 |
---|---|
24/02/15 TIL __ XSS 공격이 들어온다면(유저테스트) (0) | 2024.02.16 |
24/02/08 TIL __ socket io disconnect 되서 입력 불가 이슈(1) (0) | 2024.02.08 |
24/02/07 TIL __ 레플리케이션 (0) | 2024.02.07 |
24/02/06 TIL __ 메세지 브로커 와 소켓 어뎁터 (1) | 2024.02.06 |