CS 59

[Spring]Front Controller, Dispatcher Servlet, Spring MVC 처리 Flow

Front Controller MVC 구조에서 함께 사용되는 디자인 패턴 중 하나로, 애플리케이션의 진입점(entry point) 역할을 수행하는 컨트롤러.클라이언트가 보내는 모든 요청을 자신이 먼저 받게 되고, 이러한 요청들을 세부 컨트롤러에게 전달하는 역할을 수행한다.Dispatcher Servlet은 spring에서 Front Controller 패턴을 구현한 것이다 Spring MVC 처리 Flow 0. 서블릿 초기화 (WAS 기동 시)Spring Boot나 Spring Web MVC 프로젝트가 시작될 때DispatcherServlet은 Servlet으로 등록되어 있고, web.xml 또는 Spring Boot의 자동 구성을 통해 초기화됨초기화 시점에 HandlerMapping, HandlerAd..

CS 2025.04.03

[Backend] JSP

JSP(JavaServer Pages)Java 기반 웹 페이지 생성 기술로,HTML 코드 안에 Java 코드를 삽입할 수 있게 해주는 서버 사이드 웹 프로그래밍 기술이다.JSP는 Java EE(Jakarta EE)의 일부로, 웹 애플리케이션에서 동적인 HTML 페이지를 만들기 위해 사용되었지만,현재는 유지보수, 구조적 한계, 현대적 웹 개발 트렌드에 뒤처져 거의 사용되지 않는다.  JSP 작동 방식브라우저는 서버에 JSP 파일 요청 서버는 브라우저의 요청에 해당하는 JSP 파일이 서버측에 있는지 조회 후, 존재하면 서블릿(Servlet) 으로 변환서블릿 코드를 컴파일해서 .class 파일 생성서블릿이 실행되면서, HTML을 생성HTML을 클라이언트에게 전송즉, jsp 코드의 return 값은 HTML 코..

CS 2025.04.02

RestTemplate, WebClient, RestClient, FeignClient

Spring에서 HTTP 통신을 수행하는 방법에는 여러 가지가 있다.많이 사용되는 세 가지 방법(RestTemplate, WebClient, RestClient)과이외에 사용 가능한 HTTP 통신 방법까지 정리하려고 한다.   1. RestTemplate (Spring 3~4)✅ 특징동기(Synchronous) 방식의 HTTP 클라이언트RestTemplate 객체를 사용하여 간단한 API 호출이 가능Spring 5 이후로는 권하지 않는 방법 RestClient 알아보기 (RestTemplate이 Deprecated 된다고요?)Spring Boot 3.2에 새롭게 추가된 RestClient에 대해 알아보자.spring docs의 RestTemplate에 대한 설명에 위와 같은 NOTE가 추가되었다. Spr..

CS 2025.02.15

[CS]cache: Redis VS Memcached

Redis와 Memcached는 둘 다 분산 캐시로 사용되는 인메모리 데이터 저장소이지만 여러 차이점들이 존재한다.데이터 구조Redis단순한 key-value 저장소뿐만 아니라 다양한 데이터 구조를 지원 다양한 종류의 데이터 처리에 적합하다.문자열, 리스트(List), 해시(Hash), 셋(Set) 등Memcached오직 단순한 key-value 데이터 구조만 지원한다. 문자열(String)만 저장할 수 있다. 영속성 (Persistence)Redis: 영속성(Persistence) 을 보장한다. Memcached: 영속성을 보장하지 않는다. 복제(Replication) 및 클러스터링(Clustering)Redis복제 기능을 제공하며, 클러스터링을 통해 여러 서버 간에 데이터를 분산 처리할 수 있다.이를..

CS 2024.09.25

[CS] JWT와 Session의 차이

JWT (JSON Web Token)JSON 포맷 형식으로 사용자 인증 정보를 담고 있는 토큰 기반 인증 방식이다.클라이언트 측에서 상태 정보를 유지하고, 이후 요청 시 헤더에 포함시켜 서버에 전송한다.(쿠키로 전송할 수 있으나 XSS(Cross-Site Scripting) 공격에 당할 수 있으므로 사용하지 않는것이 좋다.)서버는 클라이언트가 전달하는 토큰을 검증하여 인증을 처리한다.구조Header: 토큰 타입과 서명 알고리즘을 포함한다Payload: 사용자 정보를 포함한다.Signature: 헤더와 페이로드를 비밀키로 서명하여 토큰의 변조여부를 확인할 수 있게 한다.장점상태 비저장성 (Stateless): 서버가 사용자 상태를 따로 유지할 필요가 없으므로, 확장성에 유리하다.분산 처리에 적합: 서버에 ..

CS 2024.09.25

[CS] REST, RESTful API란?

REST는 "Representational State Transfer"의 약자로, 웹의 장점을 최대한 활용하면서 분산 시스템을 설계하기 위한 원칙과 패턴을 제시한다.  REST의 주요 개념1. 자원(Resource)   - REST에서는 해당 소프트웨어가 관리하는 모든 것이 자원이다. 자원은 URI(Uniform Resource Identifier)로 식별한다.    - 예를 들어, 사용자를 나타내는 자원은 `/users`와 같이 표현할 수 있다. 2. 표현(Representation)   - 자원은 다양한 형태로 표현할 수 있다. 일반적으로 JSON, XML, HTML 등을 사용한다.    - 클라이언트는 서버에서 자원의 표현을 받아 상태를 전송받는다. 3. 상태 전이(State Transfer)   ..

CS 2024.05.24

[Network] 실시간 통신 - webSocket

webSocket 서버 - 클라이언트 간 언제든 양방향 통신 및 데이터 전송이 가능하도록 Socket Connection을 유지하는 기술이다. SNS, LoL같은 멀티플레이어 게임, 구글 Doc, 증권거래, 화상채팅 등 Real-time web application구현을 위해 널리 사용되고 있다. 연결단계 1. HTTP 통신을 통해 서버에 연결한다. (일반 웹 브라우저에서 서버로의 일반적인 HTTP 요청과 응답과 동일) 2. 연결 후, webSocket을 사용하여 실제 양방향 통신을 위한 Socket Connection을 설정한다. HTTP Upgrade header를 사용하여 HTTP 프로토콜에서 WebSocket 프로토콜로 전환(WebSocket HandShake) 3. webSocket연결 후, H..

CS 2024.01.31

[Network] 실시간 통신 - AJAX(polling, long polling, streaming)

통신을 하기 위해서는 3-way handshake를 통해 연결하는 과정을 거치고, 데이터 전송 후, 4-way handshake를 통해 연결을 끊는 과정을 거친다. 이 3-way handshake와 4-way handshake과정은 4계층의 TCP통신을 통해 이루어지고, HTTP통신은 7계층에서 데이터를 전송하는 부분만 담당한다. 즉, OSI 4계층에서 3-way-handshake로 연결과정을 거치고 7계층에서 HTTP 기반으로 데이터 전송을 하고 다시 4계층에서 4-way-handshake로 연결을 끊는 과정을 거친다. HTTP통신은 TCP통신과는 다르게 일반적으로 클라이언트가 서버에게 요청을 보내고, 서버가 클라이언트에게 응답을 보내는 단방향 통신이다. 오늘은 실시간 양방향 통신에 대한 기술들을 정리..

CS 2024.01.31

[Network] Load Balancing, Clustering (로드밸런싱, 클러스터링)

로드밸런싱 서버에 들어오는 요청을 여러 대의 서버로 분산하여 부하를 고르게 분담하는 것을 말한다. 이를 통해 단일 서버에 부하가 집중되는 것을 방지하고, 전체 시스템의 안정성과 성능을 향상시킬 수 있다. 로드 밸런서를 통해 요청을 전달할 서버를 선택하는 여러 가지 알고리즘을 사용할 수 있으며, 균등하게 분산하는 것이 일반적인 방식이다.(로드밸런서는 소프트웨어로도 구현이 가능하다.) 이외에도 한 서버가 다운되더라도 다른 서버에서 서비스를 지속하여, 사용자들은 불편함 없이 서비스를 이용할 수 있다. 오픈소스 로드밸런서 중 많이 사용되고 있는 것은 HAProxy이다. 하지만 클라이언트의 연결 정보를 저장하는 세션이 로드밸런싱을 통해 하나의 서버 장비에 저장이 되는 경우, 추후 다른 서버로 접속하게 되면, 해당..

CS 2024.01.30

메시지 큐(MQ; Message Queue)

메시지 큐(MQ; Message Queue) 프로세스 혹은 프로그램 간에 데이터를 교환할 때 사용되는 통신 방법 중 하나. 메시지 지향 미들웨어(MOM; Message-Oriented middleware)를 구현한 서비스를 메시지 큐(MQ)라고 한다. 간단하게는 메시지를 임시로 저장하는 간단한 버퍼라고 생각할 수 있다. 메시지 브로커를 구현할 때 사용하는 기술이다. 메시지 지향 미들웨어(MOM; Message-Oriented middleware) 비동기 메세지를 사용하는 프로그램 간 데이터 송수신을 의미한다. (이후로는 MOM으로 칭함) AMQP(Advanced Message Queuing Protocol) MOM을 위한 개방형 표준 통신 프로토콜. 응용 계층의 MOM 표준이며 메시지 브로커를 통해 메시..

CS 2024.01.30