실전 프로젝트 회고

 

프로젝트를 진행하면서 내게 제일 도전적인 기능은 채팅기능이였다.

다대다의 채팅 기능은 채팅의 제일 기본적인 기능이였기에 큰 문제 없이 연결되었다. 

하지만,

회원 비로그인시 또는 채팅방에서 나갔을 때 실시간으로 메세지알림을 주기 위해

해당 회원의 socket.id가 언제 생기고 언제 사라지는지를 직접 확인해봐야했다.

 

회원이 채팅방에 들어오면서 받는 socket.id는

브라우저를 새로고침하면 socket.id가 지속적으로 변경이 되었다. 

그래서 socket.id와 회원의.ID를 지속적으로 확인할 수 있게 db에 저장했고,

매번 채팅방에 들어올때마다 socket.id를 새로 고쳐줬다.

 

 

Websocket 과 socket.io를 정확이 구분을 못지었던 것같아 간략하게 이 둘의 차이점을 찾아보았다. 

Websocket 과 socket.io 차이점
Websocket은 양방향 소통을 위한 포로토콜이다.
프로토콜은 쉽게 말하자면, 서로 다른 컴퓨터끼리 소통하기 위한 약속 정도로 이해하면 된다.
 
반면, Socket.io는 양방향 통신을 하기위해 웹소켓 기술을 활용하는 라이브러리이다.
어찌보면 자바스크립트의 jQuery의 관계가 비슷하다고 할 수 있다. 그렇기 때문에 socket.io가 같은 기능을 구현하더라도 약간 느리지만, 많은 편의성을 제공한다. 또한, java, C++, Python 등 여러 언어들의 라이브러리 또한 지원한다.

 

Socket.io 라이브러리 안에 websocket이 있고,

socket.io 가 websocket보다 (지금은 많은 차이는 없지만) 호환이 잘 되기 때문에 잘 사용한 것같다.

 

Websocket
-      HTML5 웹 표준 기술
-      매우 빠르게 작동하며, 통신할 때 아주 적은 데이터를 이용함
-      이벤트를 단순히 듣고, 보내는 것만 가능함

Socket.io
-      표준 기술이 아니며, 라이브러리임
-      소켓 연결 실패 시, fallback을 통해 다른 방식으로 알아서 해당 클라이언트와 연결을 시도함
-      방 개념을 이용해 일부 클라이언트에게만 데이터를 전송하는 브로드캐스팅이 가능함

 

 

 

 

프로젝트 끝났으니깐, 말하는 아쉬운점.

하지만, 생각보다 더 많은 기능들을 도전하지 못했던 것이 너무 아쉽다.

프로젝트가 마무리되면서, 점점 서버에 대한 고민이 시작됬다.

 

'서버는 잘 작동이 되고 있는건가?'

'채팅을 사용하면 데이터가 미친듯이 쌓일텐데, 괜찮은건가?'

'사람들이 몰려와도 내 서버는 잘 버틸 수 있는가?'

'대체 어떻게 하면 그 결과를 볼수 있지?'

 

 

그 중 제일 아쉬운 것은 Nignx로 IP차단

 

배포를 시작하고 나니, 무자비하게 채팅을 하거나 테스트게시물을 올렸다. 그것 말고도 서버를 나쁜의도로 사용하기 위해 들어오기 때문에 IP차단이 필요하다고하여 IP차단을 염두해두고 있다.

Nginx로 IP 차단하려고 했지만, Nginx의 reverse port 가 적용이 안되서 사용된 포트라고 이슈를 뿜어내더니 결국에는 

'ERR_CONNECTION_REFUSED' 에러가 났다. SSL인증을 했는데도 나는 에러면 웹 시간이 맞지 않아서 나는 에러였다.

이 문제를 해결하려면 프론트분들한테 요청을 드려야했던 것같은데, 이것도 확실하지 않고 다음날의 최종 발표회에 준비하기 위해서 마무리를 지었다. 여러모로 이것저것 시도할 수 있는 시간들이 충분하지 않아 아쉬웠다.

 

 

 

어떤 개발자가 되고 싶은가

백엔드의 가장 큰매력은 결과를 수치로 볼 수 있는 것이 아닌가 싶다.

결과 값을 보기 위해서 그에 따른 엄청난 공부가 필요하겠지만

결과 확실히 있는, 데이터로 보는 개발자가 되고 싶다.

 

 

+ Recent posts