웹 기술

  • 1997 - 서블릿
    • HTML 생성이 어려웠음
  • 1999 - JSP
    • HTML 생성은 편리했지만, 비즈니스 로직까지 전부 함께 들어있어 너무 많은 역할을 담당했음
  • 2000년 초 ~ 2010년 초 - 서블릿, JSP 를 조합한 MVC 패턴
    • Model, View, Controller 로 역할을 나누어서 개발
    • MVC 패턴 자동화, 복잡한 웹 기술을 편리하게 사용할 수 있는 다양한 기술을 지원했음
    • 스트럿츠, 웹워크, Spring MVC (과거)
  • 현재
    • Annotation 기반 Spring MVC
      • @Controller
      • 사실상 이 기술이 나오면서 다양하게 MVC 프레임워크가 나오던 것이 막을 내림
    • Spring Boot
      • Spring Boot 는 빌드 결과(Jar) 에 WAS 서버를 포함 → 빌드 배포가 단순화됨. 즉, Spring Boot 는 서버를 내장함
      • 과거에는 서버에 직접 WAS 를 설치하고, 소스는 War 파일을 만들어서 WAS 에 배포하였음

Spring WebFlux

요즘은 Servlet 을 자주 사용하고 있지만 새롭게 등장하고 있는 기술

특징

  • 비동기, 논블럭킹
  • 최소 쓰레드로 최대 성능 → 컨텍스트 스위칭 비용이 효율화됨
    • 거의 CPU 개수에 맞추기 때문에 별로 들지 않음
  • 함수형 스타일로 개발 → 동시 처리 코드가 효율화됨
  • 서블릿 기술 사용 X → Netty 사용

단점

  • 기술적 난이도 높음
  • RDB 지원 부족
  • 일반 MVC 쓰레드 모델도 충분히 빠름
  • 실무에서 아직 많이 사용 안 함 (전체 1% 이하)

 

뷰 템플릿

HTML 을 편리하게 생성하는 뷰 기능

JSP

속도가 느리고 기능 부족

권장하지 않음

프리마커(Freemarker), 벨로시티(Velocity)

속도 문제 해결, 다양한 기능

타임리프(Thymeleaf)

HTML 모양을 유지하면서 뷰 템플릿 적용 가능 (내추럴 템플릿)

  • Spring MVC 와 강력한 기능 통합
  • 최선의 선택 (성능은 프리마커, 벨로시티가 더 빠름)