BackEnd/Spring 4

JWT + WebSocket + Stateless 환경에서 실시간 채팅 구현 시 알아야 할 핵심 정리

실시간 채팅 기능은 일반적으로 HTTP 통신만으로는 사용성이 떨어지기 때문에 WebSocket을 사용한다.하지만 WebSocket은 기본적으로 statefule 프로토콜이기 때문에 JWT 기반의 SessionStateLess 서버 구조에서는 주의해야한다.이번 글에서는 WebSocket의 기본, HTTP와의 차이, 그리고 JWT 기반 Stateless를 어떻게 유지할지까지 실제 개발에 들어가기 전 확인할 이론을 정리한다. 1. WebSocket이란? 서버와 클라이언트가 하나의 연결을 지속적으로 유지한 상태로, 양방향 데이터를 실시간으로 주고받을 수 있는 프로토콜이다.보통 채팅이나 알림, 증권 시세나 게임 서버와 같이 실시간성이 중요한 작업에서 주로 사용한다. 여기서 사용자가 웹소켓을 사용하려고 할 때..

BackEnd/Spring 2025.11.25

서블릿 컨테이너 심화 (멀티스레딩, 부가기능)

0. 서블릿 컨테이너의 멀티스레딩 한 대의 서버 프로세스 안에서 수많은 요청을 동시에 처리하기 위해 컨테이너가 스레드를 이용해 내부적으로 작업을 분산시키는 것. 1. 멀티스레딩스레드(Thread) : 한 프로세스 내에서 독립적으로 실행되는 흐름의 단위멀티스레딩 : 여러 스레드를 동시에 가동시켜 병렬로 작업을 수행하는 방식 멀티스레딩을 사용하는 이유1. 동시처리만약 여러 요청이 동시에 온다면 한 스레드로만 처리하기에 쉽지 않음. 하지만 멀티스레드로 나누면 각각 독립적으로 실행되기 때문에 지연을 최소화할 수 있음 2. 서비스안정성특정 요청이 오류로 인해 멈추게 되더라도 다른 스레드는 계속해서 동작함. 2. 스레드 풀매 요청이 들어올 때마다 새롭게 스레드가 생기고 또 이게 종료된다고 하면 스레드 생성..

BackEnd/Spring 2025.07.07

서블릿 / 서블릿 컨테이너

서블릿이란?쉽게 말하면 자바로 작성된 웹 요청 처리기 이다. 클라이언트가 자바 클래스(HttpServlet)으로 작성된 HTTP 요청을 보낸다면, 서블릿은 해당 요청을 받아 내부적으로 처리한 후 동적인 웹페이지를 생성한다. 서블릿은 정적인 웹페이지와 다르게 동적인 웹페이지라는 특징을 가진다.예를 들어 사용자의 입력, 세션 정보, 데이터베이스 조회 결과 등에 따라 매번 다른 결과를 만들어낼 수 있다.이는 정적인 웹페이지와 다르게 사용자 및 상황 별로 상호작용이 가능한 맞춤 페이지를 만들어낼 수 있다는 장점이 있다. 또한 서블릿은 HTML, JSON, XML 등 다양한 형식의 응답을 지원한다.기본적으로는 HTML의 응답을 지원하는데, 이는 웹 브라우저가 바로 렌더링 할 수 있기 때문이다. 보통 HTML은..

BackEnd/Spring 2025.06.30

[Java] Interface

1. 인터페이스란 무엇인가: 클래스들이 반드시 구현해야만 하는 메소드들을 정리해둔 틀목적 : 다양한 기능을 하는 클래스들 간에 공통적인 기능을 강제하기 위한 것, like 설계도/계약서형태 : 상수 + 추상메소드 + default/정적메소드특징 : 다중구현 가능, 객체 생성(new) 불가능 예시로 Animal이라는 interface와 강아지, 새의 class를 만들어 보겠다.// 인터페이스public interface Animal { // 추상 메소드 선언 public void move();}// Dog 클래스public class Dog implements Animal { // Animal에 있는 move() 메소드 구현하기 @Override public void move() { Sy..

BackEnd/Spring 2025.03.26