inblog logo
|
p4rksk
    JavaSpringFrameWork

    05.CV패턴

    박선규's avatar
    박선규
    Jan 26, 2024
    05.CV패턴
    Contents
    채팅 서버를 예시로 이해
    🌟
    알아두고 가야할 전에 배웠던 지식 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

    p4rksk

    RSS·Powered by Inblog