[TIL][01.20] 컴퓨팅 패러다임 역사, 웹 기술 발전, CGI, HTML, 3-Tier 아키텍처

2025. 1. 20. 21:19· [LG 유플러스] 유레카/Today I Learned
목차
  1. Computing Paradigm의 변천과 Web 기술의 발전
  2. 웹 어플리케이션의 요청 처리 흐름
  3. 3-tier architecture
  4. B2B 시스템의 프로토콜, 데이터 형식
  5. JS
  6. 모던 웹 특징
  7. 프론트 서버와 백엔드 서버가 구별된 경우 흐름
  8. 클라이언트 요청과 응답 처리 과정
  9. 서블릿
  10. 비즈니스 로직을 분리하는 이유
  11. MVC 패턴
  12. 백엔드의 비즈니스 로직 처리 과정
  13. Spring과 Spring Boot
  14. HTML

Computing Paradigm의 변천과 Web 기술의 발전

컴퓨팅 프로그래밍의 변천의 모토 = 개발자 편의성에 의해 (개발자가 뭔가 불편하고 귀찮을 때 이를 해결할 방법을 제시하는 방향으로 발전)

  1. Program 기법 측면
    개발자에게 편한 방법으로 발전
  2. 구조적 측면
    http→응답이 텍스트라서 개발자 입장에서 편함→ 웹이 대두

HTML : 정적 리소스

CGI : 동적 리소스, 기능 구현

기존의 CGI(C, Cobol 등)는 프로세스단위라서 비효율적 → thread 기반으로 개선됨

플랫폼 종속성 (platform dependent) : 서버 플랫폼 확장 시 기존 서버 플랫폼의 양식을 따라야 하는 것

thread도 동일한 플랫폼 종속성 문제를 가짐 → 자바로 platform independent 구현 : 자바는 웹 겨냥이기 때문에 JVM을 통해 플랫폼 독립성을 유지할 수 있음

  • 자바 : 플랫폼 독립적, 쓰레드 기반
  • Servlet : 자바 기반의 CGI
  • Text: 내가 직접 쓴 문자나 코드
  • Context: 내가 직접 작성하지 않은, 상황이나 환경 정보

웹 어플리케이션의 요청 처리 흐름

클라이언트에서 URL로 요청 → 해당 아이피, 포트의 웹 서버로 요청을 전송 →

  1. 정적 파일인 경우 : 웹 서버에서 직접 처리
  2. 동적 컨텐츠인 경우 : 웹 서버는 요청을 웹 컨테이너로 전달하고, 서블렛에서 요청 처리

→ 클라이언트로 응답 반환

(서블렛은 웹 컨테이너 내에서 실행됨)

3-tier architecture

  • 클라이언트 티어 : 사용자의 요청을 서버로 전달, 서버로 부터 받은 응답을 보여줌
  • 비즈니스 티어 : 클라이언트에서 받은 요청 처리, 응답 반환
  • 리소스 티어 : 데이터 저장소와 상호작용

클라이언트 티어(웹브라우저)가 비즈니스 티어(웹 서버)에 요청 → 비즈니스 티어(웹 서버)는 리소스 티어에 접근하여 요청 처리 → 클라이언트 티어에 응답 반환

B2B 시스템의 프로토콜, 데이터 형식

B2B 시스템에서 프로토콜은 http, 형식은 XML로 데이터를 주고받음

B2B에서 사용하는 언어가 다름(시스템1 에서는 자바를 쓰고, 시스템 2에서는 C를 사용하는 경우) → 프로토콜을 정해야함 → 각각 프로토콜을 만들기 어려움, 귀찮음 → http 사용 → b2b이므로 웹페이지를 그리는 html이 방식을 사용할 필요가 없음 → XML을 사용

XML : 데이터를 구조화하고 저장하는데 사용되는 마크업 언어

html(내용)은 DOM으로 해석

css(표현)는 css엔진으로 해석

js(동작)는 js엔진으로 해석

DOM : 브라우저가 HTML을 표현하고 조작하기 위해 사용하는 도구, 트리 구조

JS

기존 js엔진이 많은 양의 js를 처리하기에는 느림

V8 엔진 : 크롬에서 JS성능을 개선해서 빨라짐

Node.js : V8이 속도 빠르니까 서버용으로 만듦

JS는 간단하고 유연했으나, 규모가 커질수록 에러 발생 확률 증가

TypeScript : js의 유연함이 단점이 되는 문제를 해결

Angular, React, Vue.js …

리액트는 프레임워크로 발전

CSR : html은 비어있고, js는 꽉 차있음. js로 html을 동적으로 그려냄

SSR : 서버에서 html을 만들어서 보여줌

모던 웹 특징

  1. 컴포넌트기반 : 대규모 어플리케이션에서 유지보수 및 확장성 증가
  2. 상태관리 필요 : 데이터 흐름 예측, 일관성 유지, UI 갱신 효율성 증가

프론트 서버와 백엔드 서버가 구별된 경우 흐름

브라우저에서 프론트 서버로 요청 보냄 → 프론트 서버에서 html 반환 → html에 포함된 js에서 XHR을 http 요청으로 백엔드 서버로 요청 → 백엔드 서버에서 요청 처리 후 응답 반환

클라이언트 요청과 응답 처리 과정

  1. 클라이언트(브라우저)에서 웹 서버에 http로 요청 전송
  2. 웹 서버(하드웨어와 OS 기반으로 동작) 요청 수신, 정적 파일이면 웹 서버에서 바로 응답 반환, 동적 데이터면 서블릿으로 전달
  3. 서블릿에서 JavaSE, JavaEE를 사용해 응답 생성
  4. 웹 서버로 응답 반환
  5. 웹 서버가 클라이언트로 응답 반환

서블릿

서블릿의 구조 : 요청분석 → biz(비즈니스) → 응답

서블릿에 비즈니스 로직을 포함시키면 코드가 복잡해지고 관리 어려움 → 비즈니스 로직을 서블릿 밖으로 분리 → 재사용성, 유지보수 향상

비즈니스 로직을 분리하는 이유

  1. http는 속도가 느림
  2. 속도 개선을 위해 http가 아닌 Socket 연결이 필요
  3. http가 아닌 요청(다른 UI)을 받기 위해서는 서블릿내의 비즈니스 로직을 처리하는 방법 필요
  4. 서블릿은 HTTP 요청을 처리하는 자바 프로그램
  5. 근데 서블릿으로 요청을 바로 보낼 수 없기 때문에 biz를 서블릿 밖으로 따로 꺼내 처리할 수 있도록 만듦
  6. 따라서 biz는 여러 환경에서 reuse 가능하도록 객체지향적으로 프로그래밍
  7. 재사용은 구조가 개선되더라도 다 뜯어고치지 않아도 되도록 하는 것

서블릿은 클라이언트 요청을 처리해서 응답을 생성함 → 서블릿 내부 구조는 요청 분석, 비즈니스 로직 수행, 응답 생성 → 서블릿은 중개자 역할이므로 비즈니스 로직까지 포함하면 관리 어려움 → 비즈니스 로직을 분리 → 재사용성 증가, 코드의 복잡성 감소, 유지보수 및 확장성 향상

MVC 패턴

비즈니스 로직(Model)을 분리하여 프레젠테이션(View)과 제어(Controller)의 독립성 유지 → 유지보수, 확장성 향상

비즈니스 로직은 시큐리티, 트랜잭션, 영속성을 관리해야함 → JavaEE에서 제공하는 EJB를 통해 처리가능하지만 복잡함 → Spring으로 대체

biz(Model)는 시큐리티(sec), 트랜잭션(tx), 영속성(per)이 필요 → 3가지 합해서 안정성이라고 함

백엔드의 비즈니스 로직 처리 과정

백엔드 서버(프레젠테이션)에서 요청을 받음 → 프레젠테이션에서 요청을 분석해 백엔드 비즈니스 서버로 요청 → 백엔드 비즈니스 서버에서 이를 처리하는데, 시큐리티, 트랜잭션, 영속성을 설정할 수 있는 기능을 JavaEE에서 제공 → 이를 이용해 안정성 향상 하도록 구현 → 이 응답을 백 프레젠테이션으로 응답 → 백 프레젠테이션 서버에서 클라이언트로 응답 반환

Spring과 Spring Boot

biz 로직 코드는 얼마 안됨, 시큐리티, 트랜잭션, 영속성 처리 코드가 많음 → 이를 JavaEE의 EJB가 제공

EJB는 어려움 → 이를 쉽게 한 게 Spring

스프링은 외부 라이브러리(시큐리티, 트랜잭션, 영속성)를 가져와서 사용할 수 있음

원래는 톰캣을 깔아야 하는데, 스프링은 내장 톰캣을 사용할 수 있게 함 → JavaEE 스택이 필요 없어짐 → 이를 Spring Boot

enterprise : 대규모 조직의 복잡한 요구를 해결하는 소프트웨어 시스템

스프링같은게 엔터프라이즈 애플리케이션을 개발 할 수 있게 함

HTML

html은 표준 마크업 언어

마크업이란 <>처럼 생긴걸 말함

<!DOCTYPE html> → HTML5 버전을 의미함

'[LG 유플러스] 유레카 > Today I Learned' 카테고리의 다른 글

[TIL][02.03] ES6, SSR, CSR, SSG, SOP, CORS  (0) 2025.02.04
[TIL][01.24] JS, 배열, function, object, 생성자, Event, 반복문, Collection  (0) 2025.01.24
[TIL][01.23] BootStrap, JavaScript, let, var  (0) 2025.01.23
[TIL][01.22] CSS, BootStrap  (0) 2025.01.23
[TIL][01.21] HTML, form, HTTP, React, Next.js, CSS  (0) 2025.01.21
  1. Computing Paradigm의 변천과 Web 기술의 발전
  2. 웹 어플리케이션의 요청 처리 흐름
  3. 3-tier architecture
  4. B2B 시스템의 프로토콜, 데이터 형식
  5. JS
  6. 모던 웹 특징
  7. 프론트 서버와 백엔드 서버가 구별된 경우 흐름
  8. 클라이언트 요청과 응답 처리 과정
  9. 서블릿
  10. 비즈니스 로직을 분리하는 이유
  11. MVC 패턴
  12. 백엔드의 비즈니스 로직 처리 과정
  13. Spring과 Spring Boot
  14. HTML
'[LG 유플러스] 유레카/Today I Learned' 카테고리의 다른 글
  • [TIL][01.24] JS, 배열, function, object, 생성자, Event, 반복문, Collection
  • [TIL][01.23] BootStrap, JavaScript, let, var
  • [TIL][01.22] CSS, BootStrap
  • [TIL][01.21] HTML, form, HTTP, React, Next.js, CSS
leeemingyu
leeemingyu
leeemingyu
ye
leeemingyu

블로그 메뉴

  • GitHub
  • Instagram
    전체
    오늘
    어제
    • 전체보기 (68)
      • GDSC (4)
        • 실시간 채팅 구현 (4)
      • [LG 유플러스] 유레카 (63)
        • Today I Learned (37)
        • 코딩테스트 (22)
        • 프로젝트 (4)

    공지사항

    인기 글

    최근 댓글

    최근 글

    hELLO · Designed By 정상우.v4.2.2
    leeemingyu
    [TIL][01.20] 컴퓨팅 패러다임 역사, 웹 기술 발전, CGI, HTML, 3-Tier 아키텍처
    상단으로

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.