웹 애플리케이션 이해 - HTML, HTTP API, CSR, SSR, 자바 백엔드 웹 기술 역사

2021. 6. 25. 16:56·교육 및 인강/스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

인프런 김영한님의 스프링 강의다.

20년전 서블릿 시절부터 시작되는 내용으로 스프링까지 오는 과정을 이야기한다.

1섹션 - 웹 애플리케이션 이해를 정리하며, 자세한 설명이 궁금하면 수강을 권장한다.  

 

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의

웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., 원

www.inflearn.com


HTML, HTTP API, CSR, SSR

정적 리소스

- 이미 생성되고 고정된 HTML 파일, CSS, JS, 이미지, 영상 등을 제공

 

HTML 페이지

- 동적으로 필요한 HTML 파일을 생성해서 전달

- 웹 브라우저는 HTML 해석.

HTTP API

- HTML과 비슷지만 데이터를 전달한다.

    - 주로 JSON 형식 {"주문번호":100, "금액":5000} 을 사용한다.

- 다양한 시스템에서 호출

- 데이터만 주고 받기 때문에 UI화면에서 필요하면 클라이언트가 별도로 처리해야한다.

 

서버 사이드 렌더링(SSR), 클라이언트 사이드 렌더링(CSR)

SSR - 서버 사이드 렌더링

- HTML 최종 결과를 서버에서 만들어 브라우저에 전달

    - 주로 정적인 화면에 사용

관련기술) JSP, 타임리프 -> 백엔드 개발자

 

CSR - 클라이언트 사이드 렌더링

- HTML 결과를 자바스크립트를 사용해 웹 브라우저에서 동적으로 생성해서 적용

    - 주로 동적인 화면에 사용, 웹 환경을 앱처럼 부분부분 변경가능

예) 구글지도, Gmail, 구글 캘린더,

관련기술) React, Vue.js -> 웹 프론트엔드 개발자

* 참고

- React, Vue.js를 CSR + SSR 동시에 지원하는 프레임워크도 있음

- SSR을 사용하더라도, 자바스크립트를 사용해서 화면 일부를 동적으로 변경 가능

 

* 어디까지 알아야할까요?

- 백엔드, 서버 사이드 렌더링 기술 (간단해서 2,3일이면 실무가능) 

    - JSP(거의 사장됨), 타임리프(지금 스프링이 미는 중)  

    - 화면이 정적이고, 복잡하지 않을 때 사용

- 웹 프론트엔드, 클라이언트 사이드 렌더링 기술

    - React, Vue.js

    - 복잡하고 동적인 UI 사용

    - 웹 프론트엔드 개발자의 전문 분야

- 선택과 집중

    - 백엔드 개발자의 웹 프론트엔드 기술 학습은 옵션

    - 백엔드 개발자는 서버, DB, 인프라 등등 수 많은 백엔드 기술 공부가 필요

    - 웹 프론트엔드도 숙련에 오랜 시간 필요


자바 백엔드 웹 기술 역사

과거 기술

- 서블릿, 1997

    - HTML 생성이 어려움

- JSP, 1999

    - HTML 생성은 편리하지만, 비즈니스 로직까지 많은 역할 담당

- 서블릿, JSP 조합 MVC 패턴 사용

    - 모델, 뷰, 컨트롤러로 역할을 나누어 개발

- MVC 프레임워크 춘추 전국 시대, 2000~2010년 초

    - MVC 패턴 자동화, 복잡한 웹 기술을 편리하게 사용할 수 있는 다양한 기능 지원

    예) 스트럿츠, 웹워크, (구)스프링 MVC

 

현재 사용 기술

- 애노테이션 기반의 스프링 MVC 등장 (MVC 프레임워크 춘추 전국 시대 마무리)

    - @Controller

- 스프링 부트의 등장

    - 과거에는 서버에 WAS를 직접 설치하고, 소스는 War파일로 만들어 WAS에 배포

    - 스프링 부트는 서버(톰캣9)를 내장 -> 빌드결과에 WAS 서버포함, 빌드 배포 단순화

 

최신 기술 - 스프링 웹 플럭스(WebFlux)

- 장점

    - 비동기 넌 블러킹 처리

    - 최소 쓰레드로 최대 성능, 쓰레드 컨텍스트 스위칭 비용 효율화

    - 함수형 스타일로 개발, 동시처리 코드 효율화

    - 서블릿 기술 사용안함

 

- 단점

    - 기술적 난이도 높음

    - 아직은 RDB 지원 부족

    - 일반 MVC 쓰레드 모델도 충분히 빠름 (장비가 고성능) 

    - 실무에서 보기 힘듬

 

자바 뷰 템플릿 역사

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

- JSP : 속도 느림, 기능 부족

- 프리마커(Freemarker), 벨로시티(Velocity) : 속도 문제 해결, 다양한 기능

- 타임리프(Thymeleaf)

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

    - 스프링 MVC와 강력한 기능 통합

    - 최선의 선택 (성능은 프리마커, 벨로시티가 더 빠름)

'교육 및 인강 > 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술' 카테고리의 다른 글

서블릿(Servlet) - HttpservletResponse 기본 사용법, HTTP 응답 데이터 단순 텍스트 & HTML & API JSON  (0) 2021.06.28
서블릿(Servlet) - API 메시지 바디 : 단순 텍스트, JSON  (0) 2021.06.28
서블릿(Servlet) - HTTP 요청 데이터 : 개요, GET 쿼리 파라미터, POST HTML Form  (0) 2021.06.27
서블릿(Servlet) - 서블릿 환경 구성, HttpServletRequest 개요와 기본 사용법  (0) 2021.06.25
웹 애플리케이션 이해 - WS, WAS, Servlet, 멀티 쓰레드  (0) 2021.06.25
'교육 및 인강/스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술' 카테고리의 다른 글
  • 서블릿(Servlet) - API 메시지 바디 : 단순 텍스트, JSON
  • 서블릿(Servlet) - HTTP 요청 데이터 : 개요, GET 쿼리 파라미터, POST HTML Form
  • 서블릿(Servlet) - 서블릿 환경 구성, HttpServletRequest 개요와 기본 사용법
  • 웹 애플리케이션 이해 - WS, WAS, Servlet, 멀티 쓰레드
loop-study
loop-study
오늘도 공부하자
  • loop-study
    개발 공부할래?
    loop-study
  • 전체
    오늘
    어제
    • 분류 전체보기 (187)
      • 목표 및 회고 (26)
      • 세미나 & 워크샵 (1)
      • 교육 및 인강 (67)
        • TDD, Clean Code with Java (5)
        • ATDD, 클린 코드 with Spring (6)
        • DDD 세레나데 (3)
        • 인프라 공방 (6)
        • 이규원의 현실 세상의 TDD (19)
        • 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 (18)
        • 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 (0)
        • 모든 개발자를 위한 HTTP 웹 기본 지식 - 김영한 (8)
        • 코딩으로 학습하는 GoF의 디자인 패턴 (1)
        • 스프링 시큐리티 완전정복 6.x (1)
      • 서적 (62)
        • 객체지향의 사실과 오해 (1)
        • 객체지향과 디자인패턴 (7)
        • 만들면서 배우는 클린 아키텍처 (3)
        • 테스트 주도 개발로 배우는 객체 지향 설계와 실천 (1)
        • 오브젝트: 코드로 이해하는 객체지향 설계 (17)
        • 리팩토링 : 코드 구조를 체계적으로 개선하여 효율적인 리팩터링 구현하기 (0)
        • 토비의 스프링 (3)
        • 엔터프라이즈 애플리케이션 아키텍처 패턴 (9)
        • 개발자의 글쓰기 (1)
        • 소프트웨어 장인 (17)
        • Real MySQL 8.0 (2)
        • JVM 밑바닥까지 파헤치기 (0)
      • 개발 & 방법론 (29)
        • Java (13)
        • TDD (5)
        • ATDD (3)
        • DDD (6)
        • 인프라 (2)
        • SQL (0)
      • 개인이야기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

    • 백엔드 로드맵
  • 인기 글

  • 태그

    스프링
    Test Driven Development
    마틴 파울러
    Patterns of Enterprise Application Architecture
    추상화
    김영한
    넥스트스탭
    이규원
    java
    TDD
    테스트 주도 개발
    스터디
    자바
    소프트웨어 장인
    오브젝트
    fastcampus
    장인정신
    객체지향
    현실세상의 TDD
    엔터프라이즈 애플리케이션 아키텍처 패턴
    study
    인프라공방
    조영호
    nextstep
    인프런
    모든 개발자를 위한 HTTP 웹 기본 지식
    ATDD
    DDD 세레나데
    백기선
    JUnit
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
loop-study
웹 애플리케이션 이해 - HTML, HTTP API, CSR, SSR, 자바 백엔드 웹 기술 역사
상단으로

티스토리툴바