자바 백엔드 웹기술의 역사

김원종·2023년 11월 28일

자바 웹 기술 역사 과거기술

  • 서블릿 - 1997
    • HTML 생성이 어려움
  • JSP - 1999
    • HTML 생성은 편리하지만, 비즈니스 로직까지 너무 많은 역할 담당
  • 서블릿 , JSP 조홥 MVC 패턴 사용
    • 모델 , 뷰 컨트롤러로 역할을 나누어 개발
  • MVC 프레임워크 춘추 전국 시대 - 2000년 초 ~2010년 초
    • MVC 패턴 자동화, 복잡한 웹 기술을 편리하게 사용할 수 있는 다양한 기능 지원
    • 스트럿츠, 웹워크 , 스프링 MVC (과거 버전)

자바 웹 기술 역사 현재 사용 기술

  • 애노테이션 기반의 스프링 MVC 등장
    • @Controller
    • MVC 프레임워크의 춘추 전국 시대 마무리
  • 스프링 부트의 등장
    • 스프링 부트는 서버를 내장
    • 과거에는 서버에 WAS를 직접 설치하고 , 소스는 War파일을 만들어서 설치한 WAS에 배포
    • 스프링 부트는 빌드 결과(Jar)에 WAS 서버 포함 -> 빌드 배포 단순화

자바 웹 기술 역사 최신기술 스프링 웹 기술의 분화

  • Web Servlet - Spring MVC

    • 스프링 MVC는 기본적으로 서블릿으로 기반으로 동작 서블릿 위에서 스프링MVC를 올려서 동작하는 방식이라 HTTP 서블릿 리퀘스트, 리스폰스 등을 다 사용할수 있다!
    • 웹 컨테이너에는 멀티스레드 라는 장점이 있어 여러 개의 스레드가 동시에 해결할 수 있는 장점들을 웹 서블릿 스택으로 사용할수있다 우리가 일반적으로 사용하는것!
  • Web Reactive - Spring WebFlux

    • 최신기술!!

자바 웹 기술 역사 최신기술 - 스프링 웹 플럭스(WebFlux)

  • 특징
    • 비동기 넌 블러킹 처리
    • 최소 쓰레드로 최대 성능 - 쓰레드 컨텍스트 스위칭 비용 효율화
      • 만약 CPU 코어가 4개가 있을때 쓰레드 개수를 CPU코어나 거기에 플렉스 하나정도를 맞춘다. 그래서 정말 고효율로 쓰레드를 CPU개수에 딱 맞췄기 때문에 쓰레드는 계속 돌아갈수 있는것이다. 그럼 Context Switching 비용이 거의 들지않는다!
    • 함수형 스타일로 개발 - 동시 처리 코드 효율화
    • 서블릿 기술 사용 X
      • Netty라는 웹 프레임워크가 있는데 그걸 가지고 구현된다.다른걸로도 교체 가능!
  • 그런데!!
    • 웹플럭스는 기술적 난이도 매우 높음
      • 지금까지 짜던 거와 다르게 함수형 스타일로 코드를 짜야하고 비동기 넌 블러킹에 대한 개념도 이해해야함!
    • 아직은 RDB 지원 부족
      • 관계형 데이터 베이스 쪽에 지원이 아직은 많이 부족하다
    • 일반 MVC의 쓰레드 모델도 충분히 빠르다!
    • 실무에서는 아직 많이 사용하지는 않음(전체 1% 이하)
    자바 뷰 템플릿의 역사 HTML을 편리하게 생성하는 뷰 기능
  • JSP
    • 속도 느림, 기능 부족
  • 프리마커 (Freemarker), Velocity(벨로시티)
    • 속도 문제 해결, 다양한 기능
  • 타임리프(Thymeleaf)
    • 내추럴 템플릿 : HTML의 모양을 유지하면서 뷰 템플릿 적용 가능 -
    • 스프링 MVC와 강력한 기능 통합
    • 최선의 선택, 단 성능은 프리마커 , 벨로시티가 더 빠름
profile
개린이

0개의 댓글