본문 바로가기

Java Programming/Jsp

웹서버와 소캣통신 차이

<웹서버와 소캣통신>


일반적으로 웹서버의 한계라 하면.. 클라이언트의 요청(request)이 있을때만 서버가 응답(response)하여 통신이 가능할뿐, 서버가 먼저 요청하고 클라이언트로부터 응답받을 수 없는 단향뱡적인 통신이라는 점입니다. 또한 비연결지향형 이기 때문에 데이터 전송 부분 외에도 서버에 연결하는 시간 비용이 추가로 들어가는 단점이 있습니다. 따라서 단순히 클라이언트가 필요할때만 서버에서 접근하는 "콘텐츠" 위주의 데이터를 사용하고자 할때는 웹서버가 용이하겠죠. 예를 들자면 게시판 같은 구조.(클라이언트가 필요할때만 서버에서 접근해서 게시판 자료를 가져오지요)


하지만 위에서 말씀드렸듯이 서버와 클라이언트가 언제든지 양방향으로 필요한 데이터를 요청하고 보내고자 할때는 소켓서버를 이용하게는게 좋습니다. 실시간으로 양방향 데이터 통신이 필요할때, 가령 채팅처럼 서로 바로바로 통신하고자 할때 처럼 말이예요.


하지만 신뢰성있고 고용량의 데이터을 주고 받고 다수 사용자를 수용하는 소켓서버를 만들기는 쉽지만은 않습니다.

따라서 구글에서는 구현하기 쉬운 웹서버를 이용하여, 양방향 통신을 할수 있도록 GCM (google cloud messaging) 서비스를 제공하고 있지요. 소켓서버와 웹서버를 동시에 운영하는 방식인데요. 소켓 서버는 단순히 서버가 특정 클라이언트와 통신이 필요하다는 아주 간단한 텍스트 메세지만 전달하고 이를 전달받은 클라이언트는 웹서버에서 접속함으로써, 쌍방향 통신을 가능하도록 구현한 기술입니다.

안드로이드 업데이트, 메세징 프로그램들이 이러한 방식으로 만들어져 있지요. 

물론 GCM 방식도 웹서버의 한계인 클라이언트와 서버간 양방향 통신에 대한 단점을 커버하기위해 등장했지만 여전히 웹서버를 사용하기 때문에 속도면에서는 소켓서버에는 따라갈수 없습니다.


결론, 

클라이언트에서 필요할때만 서버에 접근해서 데이터를 가져오면 된다 (+ 속도는 크게 신경쓰지 않는다) 하면 웹서버를

서버와 클라이언트간 양방향의 빠른 데이터 통신이 필요하다! 하면 소켓서버를 만드시면 됩니다.