[Spring WebSocket] STOMP를 활용한 채팅 서비스 토이 프로젝트
·
Spring/WebSocket
`WebSocket`, `SockJS`, `STOMP`를 학습하고 직접 실습해보는 프로젝트를 구상을 했다.개념을 학습하는 것과 직접 코드로 구현하는 것은 완전히 다른 영역이기에 실습해보는 것이 중요하다고 생각한다.  사용 예정 기술 스택 개발 언어 선정개발 언어로는 Java를 선택했다.`Kotlin`도 학습하면 좋겠지만, 제작할 채팅 서비스는개념 학습 후 실습에 가까운 프로젝트이기에 아직 잘 모르는 `Kotlin`을 적용하기에는너무 큰 Learning Curve가 될 것 같았기 때문이다. Framework 선정채팅 서비스를 제작하기 위해서는 당연히 Spring Framework를 활용했다.(다른 Framework를 사용해본적도 없으며 개념 학습을 Spring 기반으로 했다.)  DB 선정DB 선정에 있어..
[MongoDB] MongoDB란?
·
DB/MongoDB
이번에 혼자 `WebSocket`, `SockJS`, `STOMP`에 관해 학습을 진행하며 채팅 서비스를 개발하는 것을 목표로 정했다. 이때 채팅 메시지에 관한 영구 저장소를 선택하기 위해 고민을 했는데 처음 떠오르고 선택하게 된 것은 `MongoDB`이다.대부분?의 사람들이 알고 있듯 채팅하면 `MongoDB`라는 말은 많이 들었을 것이다.하지만, 알고만 있고 그 이유는 특별하게 몰랐다. 또한, 여태까지 `NoSQL` DB는 `Redis`만 사용해왔기에 `MongoDB`는 새로운 접근이였다. 그래서 `MongoDB`에 관해 알게 된 내용들을 정리하려 한다.  MongoDB란?`MongoDB`는 문서 지향적인 `NoSQL` 데이터베이스로, 대량의 비정형 데이터를 저장하고 처리하는 데 사용된다. 문서 지향..
2024-11-04 학습일기
·
개발 기록
2024.11.04 - [Spring/WebSocket] - [Spring WebSocket] SSE vs WebSocket [Spring WebSocket] SSE vs WebSocketSSE와 WebSocket, 그들은 왜 실시간 통신 환경에서 자주 비교될까?우리가 알림과 실시간 채팅 같은 서비스를 구현할 때, 우리는 자연스럽게 두 가지 기술 사이에서 고민한다.`SSE`와 `WebSocket`은 각기hdbstn3055.tistory.com 2024.11.04 - [Spring/WebSocket] - [Spring WebSocket] WebSocket [Spring WebSocket] WebSocketWebSocket 이란?`WebSocket` 프로토콜은 표준 된 방법으로 `서버-클라이언트` 간에 단일..
[Spring WebSocket] STOMP
·
Spring/WebSocket
STOMP의 사용 이유?`WebSocket` 프로토콜은 두 가지 유형의 메시지를 정의하고 있지만,그 메시지의 내용까지는 정의하고 있지 않다. `STOMP`는 `WebSocket` 위에서 동작하는 프로토콜로써, 클라이언트와 서버가 전송할메시지 유형형식내용들을 정의하는 매커니즘이다.  STOMP 란?`STOMP`는 `Simple Text Oriented Messaging Protocol`의 약자로 `TCP` 또는 `WebSocket`과 같은양방향 네트워크 프로토콜 기반으로 동작한다. 이름에서도 알 수 있듯이, `STOMP`는 텍스트 지향 프로토콜이지만, `Message Payload`에는 `Text` 또는`Binary` 데이터를 포함할 수도 있다. `STOMP`는 HTTP 위에서 동작하는 `Frame` 기반..
[Spring WebSocket] SockJS
·
Spring/WebSocket
SockJS는 왜 생겼을까?이전 포스팅에서 클라이언트-서버 간에 `WebSocket` 연결과 메시지 주고 받는 방법에 대해 살펴보았다.그런데, 클라이언트-서버 `WebSocket` 통신이 순탄하게만 진행될 수 있을까?아니다.그럼, 발생할 수 있는 예외 상황은 어떤 것이 있을지 살펴보자. 우선, 모든 클라이언트의 브라우저에서 WebSocket을 지원한다는 보장이 없다. 두 번째로, 클라이언트/서버 중간에 위치한 프록시가 Upgrade 헤더를 해석하지 못해 서버에 전달하지 못할 수 있다. 마지막으로, 클라이언트/서버 중간에 위치한 프록시가 유휴 상태에서 도중에 커넥션 종료시킬 수도 있다.  이러한 문제는 `WebSocket Emulation`을 통해서 해결이 가능하다.`WebSocket Emulation` ..
[Spring WebSocket] WebSocket
·
Spring/WebSocket
WebSocket 이란?`WebSocket` 프로토콜은 표준 된 방법으로 `서버-클라이언트` 간에 단일 TCP 커넥션을 이용해서양방향 통신을 제공한다. 특징기존의 다른 TCP 기반의 프로토콜과 다르게,`WebSocket`은 HTTP 요청 기반으로 WebSocket HandShake 과정을 거쳐 커넥션을 생성한다.(기존의 TCP 3-way Handshake와는 달리 HTTP 요청을 활용해 연결을 시작한 후, 연결이 확립되면 TCP로 전환) 덕분에, 초기 WebSocket HandShake 요청은 추가적인 방화벽 설정 없이 80, 443 포트를 사용하여양방향 통신이 가능하다. 또한 HTTP 규격 그대로 유지할 수 있기 때문에 HTTP 인증, CORS 등을 동일하게 적용할 수 있다는 장점이 있다.  커넥션 F..