05.CV패턴

박선규's avatar
Jan 26, 2024
05.CV패턴
🌟
알아두고 가야할 전에 배웠던 지식 1. “디스패처 서블릿(dispatcher servlet)”“톰캣(tomcat)”new 해준다.“스프링(Spring)”“디스패처 서블릿(dispatcher servlet)”을 만들어준다. 2. “디스패처 서블릿”에서 URL 받은걸 “파싱(Parsing)”해주고 조건문을 사용해야 하는 것“리플렉션(Reflection)”으로 해준다. 3. “디스패처(dispatcher)”는 라우팅의 역할만 하기 때문에 굳이 “템플릿 엔진”을 쓸 필요가 없다.

프록시 서버(Proxy Server)

  • 단일 진입점의 역할로 하나의 서버를 따로 둔다.
  • 쓸데없는 것을 거르고 캐싱하는 역할을 한다.

CV 패턴

CV 패턴에 대해 알기 전 어떤 것을 패턴이라 하는가? 강제성을 가지고 있어야 “패턴”이라 한다. 이것은 나중에 보여주는 코드에서 “포워드(forword)”를 쓰는 것인데 이를 “CV패턴”이라 한다.
💡
  • “CV 패턴”“View”와 “Controller”의 약자를 합친 것이다. cv패턴은:forntcontroller를 통해서 view(jsp파일)를 찾아가는 패턴
 
mvc:cv패턴에서 dao가 추가된거다.
  • 일반적인 “MVC(Model-View-Controller) 패턴”Model을 제외하고 웹 어플리케이션을 만들기 위해 사용된다.
  • “MVC 패턴”을 배우기 위한 밑거름이며 나중에 자세히 알게 되는 부분이다.

채팅 서버를 예시로 이해

채팅 서버는 실시간으로 되어야 하기 때문에 상태를 계속 유지해야한다!

스테이트풀(Statefull)

  • 채팅 서버는 계속 상태가 유지되어야 하기 때문에 “스테이트풀”이다.
  • 스테이트풀은 이전 상태 또는 세션의 정보를 기억하고 이를 통해 현재의 작업을 처리하는 특성을 말한다.
스테이트풀 상태를 유지하기 위해서는 폴링 기법을 이용한다!

폴링 기법

  • 내부적으로 새로 고침을 계속 하는 것이다.
  • 단점은 과부화, 시간 설정에 따른 반응 차이 등이 있다.
만약 채팅 중 귓속말을 해야 하는 경우에는 어떤가? 타겟팅으로서 시간에 굉장히 예민한데 이런 경우는 폴링 기법은 힘들고 전이중으로 다시 바꿔야한다! 하지만 이렇게 바꾸면 웹 서버가 감당을 못하는데 그 이유는 전이중이 폴링 기법보다 과부화가 크기 때문이다! 머리를 좀 써보면 부화를 줄일 수 있는 방식이 있다! 클라이언트1 요청 후 리퀘스트 선을 끊고 리퀘스트 선만 연결한다. 클라이언트2 에서 다른 데이터를 보낼 시 바로 버퍼로 리스폰스로 쏴주는 것이다. 이를 “SSE”라고 한다. → 클라이언트가 서버를 끊을 때까지 진행 push 서버이다. → 다른 점은 리퀘스트를 끊는다는 차이점이다! 그럼 “SSE”에 대해 알아보자!!

서버 센트 이벤트(Server Sent Events, SSE)

  • 서버에서 클라이언트로 실시간 데이터를 단방향으로 스트리밍하는 기술이다.
  • 클라이언트에서 연결을 끊을 때까지 서버의 데이터를 지속적으로 받을 수 있다.
 
서버 센트 이벤트는 단점으로는 클라이언트가 연결을 끊기 전까지 계속 연결이 되어 있는 것인데 이는 “웹플럭스(WebFlux)”를 사용 시 해결이 가능하다! 웹플럭스는 원하는 목표치 만큼 채우기 전까지 연결이 되는 것인데 원하는 목표치를 설정하여 직접 끊지 않고 목표치가 만족 되었을 때 자동으로 끊기게 사용이 가능하다! 그럼 “웹플럭스”에 대해 알아보자!!
 

웹플럭스(WebFlux)

  • 비동기 및 넌블로킹 방식으로 웹 애플리케이션을 개발 할 수 있게 해준다.
  • 요청 처리의 효율성을 높힌다.
 
이렇게 채팅 서버를 예시로 연결 방식에 대해 알아보았다!
 
👉
정리

스테이트풀(Stateful)

채팅 서버는 사용자 간의 메시지 상태를 유지해야 하므로 스테이트풀합니다.

폴링 기법

폴링은 주기적으로 서버에 요청을 보내 새로운 데이터가 있는지 확인하는 기법입니다. 하지만 실시간 통신에는 부적합할 수 있어요.

전이중 통신(WebSockets)

실시간 채팅에 더 적합한 방식으로, 클라이언트와 서버 간에 양방향 통신을 가능하게 해줍니다.

서버-센트 이벤트(Server-Sent Events, SSE)

서버에서 클라이언트로 실시간 데이터를 단방향으로 스트리밍합니다. 클라이언트가 연결을 끊을 때까지 서버는 데이터를 지속적으로 전송해요.

웹플럭스(WebFlux)

스프링에서 제공하는 반응형 프로그래밍을 위한 웹 프레임워크로, 비동기적이고 넌블로킹 방식으로 웹 애플리케이션을 개발할 수 있습니다. 웹플럭스는 데이터를 스트림으로 처리하여 높은 처리량을 달성할 수 있어요.
 
Share article
RSSPowered by inblog