서론Chatting Server를 구현할 일이 생겼습니다. 기본적으로, Chatting은 서버와 클라이언트 간 세션 수립을 기반으로 작동하며, 양방향 통신에 의해 로직이 이루어지는 Websocket프로토콜을 사용합니다.(Websocekt프로토콜이 나오고, HTTP API를 사용한 Polling은 사실상 실시간 채팅에 사용하는 서비스가 있을지 의문인데, 생각보다 채팅 구현관련 레퍼런스를 찾아보면 Polling과 관련한 내용도 자주 볼 수 있었네요.. why..? 굳이..?) Chatting Server를 구현하려면 높은 리소스를 잡아먹는 도메인 특성상, 또한 서버와 Connection이 가능한 클라이언트 수가 제한이 되기 때문에 서비스의 규모가 증가함에 따라 'Scale-out'은 필수적이기 때문에, ..
Programming/Development
서론 프로젝트 진행 도중 SpringBoot에서 실시간 데이터를 받아오기 위해 외부 API에 웹소켓으로 연동을 하였습니다.외부 api에 소켓 연결을 하여 실시간 데이터를 받아오는 로직은, 기본적으로 마켓 데이터를 실시간으로 제공하는 서비스 특성 상 핵심 기능이었습니다.따라서, 네트워크 연결 실패, 혹은 서버 문제로 인하여 외부 서버에 소켓 연결이 끊길 경우 실시간 데이터를 받아오지 못하는 치명적인 결함이 발견되었습니다.이 문제를 해결하기 위해 연결이 끊길경우 재접속 연결요청을 주기적으로 실행하는 로직이 필요했습니다. 문제 코드public class UpbitWebsocketClient extends WebSocketClient { private final ObjectMapper objectMapp..
현대 서비스 회사들이 많이 애용하는 세션에 관하여 설명을 드리려합니다.JWT Token을 활용한 로그인방법도 있지만, 이번 시간에는 Session 로그인이 어떠한 과정에 의해 활용이되는지 알아보는 시간을 갖도록하겠습니다. 우선, 세션과 쿠키라는 두 가지의 용어에 대한 이해가 필요합니다. 먼저, 왜 쿠키와 세션을 사용하여야 하는가?이에대한 답변을 내놓으려면, http 프로토콜의 특징을 먼저 알아야 하는데, 간략히1. 비연결 지향(클라이언트가 서버에 요청했을 때 그 요청에 맞는 응답을 보낸 후 연결을 바로 끊는 형식)2. Stateless (상태정보를 유지 안함 - 첫번 째 통신에서 데이터를 주고받았다 하여도, 두 번째 통신에서 이전 데이터를 유지하지 않음)의 한계로 인해 사용한다고 알고있으면 되겠습니다. ..
이번 포스팅에서는 JWT token이 무엇인지, 어떠한 방식으로 작동하는지에 대하여 짚어보는 시간이 되겠습니다. 토큰 인증 방식우선, JWT Token을 이해하기 전, Session기반 인증 방식과, 토큰 인증 방식을 이해하여야 합니다. Session기반 인증방식서버의 세션을 사용하여 인증을 하는 방식으로, 서버측(서버 메모리(RAM)이나 데이터베이스)에서 사용자의 인증정보를 관리 및 처리하는 인증 방식을 말합니다. 이에따라 클라이언트가 요청할 때 마다 해당 요청자의 SessionID값을 스토리지에서 탐색하는데 오버헤드가 발생하여 사용자가 증가하면 할수록 성능저하 문제를 일으킬 수 있습니다. Token기반 인증 방식이러한 Session기반의 인증방식의 단점을 개선하기위하여 Token기반 인증방식이 만들..