Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

Nonamed Develog

[TIL][240813] 웹 심화 이해 복습 본문

WHAT I LEARN/TIL

[TIL][240813] 웹 심화 이해 복습

노네임드개발자 2024. 8. 13. 21:00

그림 한장과 비유로 이해하는 웹 서버의 구조

1. Web Server Engine

 

웹 서버(Web Server)

  • 웹 서버는 클라이언트(주로 웹 브라우저)에서 요청한 웹 콘텐츠(HTML 페이지, 이미지, 동영상 등)를 제공하는 소프트웨어/하드웨어다. 주로 HTTP(S) 프로토콜을 사용하여 클라이언트의 요청을 수신하고, 요청된 콘텐츠를 찾아 클라이언트에게 응답한다.
    *마치 레스토랑의 웨이터와 같다. 고객(클라이언트)이 메뉴(웹 콘텐츠)를 요청하면, 웨이터는 주방(서버 컴퓨터)에서 해당 메뉴를 가져와 고객에게 제공한다. 주로 사용하는 메뉴판(HTTP 프로토콜)을 통해 고객과 소통하며, 요청된 메뉴를 전달한다.

웹 서버의 주요 구성 요소

웹 서버는 웹 애플리케이션의 출입구와 같다. 모든 클리아언트 요청은 웹 서버를 통해 들어오고, 웹 서버는 이를 적절히 처리하여 응답을 반환한다. 웹 서버는 안정적이고 효율적으로 클라이언트의 요청을 처리해야하며, 동시에 보안도 철저히 유지해야 한다.

  • 수신기 Listener
    웹 서버에서 클라이언트의 요청을 기다리는 컴포넌트이다. 사용자가 웹 사이트를 방문할 때 웹 브라우저가 웹 서버에 요청을 보내고, Listener는 수신하고, 서버 내부의 다른 구성 요소로 전달한다.
    *레스토랑 입구에서 손님이 들어오는 것을 지켜보는 종업원처럼 손님이 들어오면 웨이터가 자리를 안내하고 주문을 받는 역할을 한다.
  • 요청 처리기 Request Handler
    요청을 분석하고, 요청된 작업을 수행한다. 정적 파일(HTML, CSS 등)을 찾거나, 동적 콘텐츠를 생성하는 스크립트를 실행하면서 클라이언트가 무엇을 요청했는지 파악하고 그에 맞게 응답한다.
    *웨이터가 손님의 주문을 받아 주방에 전달하고, 어떤 음식을 준비할지 주방장에게 전달하는 것과 같다. 이 과정에서 어떤 요리를 만들어야 할지(정적, 동적 등) 결정한다.
  • 응답 생성기 Response Generator
    클라이언트의 요청에 대한 결과를 응답 형식으로 생성한다. 응답은 상태 코드, 헤더, 바디로 구성되며, 상태 코드는 요청이 성공했는지 실패했는지 등의 결과를 나타낸다.
    *주방에서 요리가 완성되면 웨이터가 손님에게 서빙하는 과정이다. 요리에는 맛, 향, 그리고 장식(HTTP 응답)이 포함되어 손님에게 제공된다.
  • 캐시 Cache
    자주 요청되는 데이터를 저장하여 빠르게 응답할 수 있도록 도와주는 역할이다. 서버의 부하를 줄이고 클라이언트에게 더 빠른 응답을 제공한다.
    *손님이 자주 주문하는 메뉴는 미리 준비해 요리 시간을 단축할 수 있고 손님에게 더 빠르게 서빙할 수 있다.
  • 로깅 Logging
    요청과 응답에 대한 기록을 저장한다. 관리자는 이 로그를 통해 서버의 상태를 모니터링하고, 문제를 추적할 수 있다.
    *웨이터가 주문과 서빙 과정을 기록해 두는 것과 같다. 이를 통해 언제 무엇을 주문했는지, 어떤 문제가 발생했는지 쉽게 추적할 수 있다.
  • 보안 관리자 Security Manager
    클라이언트의 요청을 검증하고, 적절한 접근 권한이 있는지 확인한다. HTTPS를 통해 데이터를 암호화하고, 인증 및 권한 부여를 관리한다.
    *레스토랑에서 수상한 손님의 신원을 확인하거나, 특정 구역에 들어가는 것을 제한하는 것처럼 보안 담당자는 손님의 요청을 검증하고, 권한이 있는 손님에게만 서비스를 제공하는 것과 비슷하다.
  • 설정 관리자 Configuration Manager
    서버의 다양한 설정(가상 호스팅, 라우팅, 포트 설정)을 관리하는 컴포넌트이다. 
    *레스토랑의 메뉴판, 좌석 배치, 영업 시간 등을 관리하는 매니저와 같다.

 

2. Web Application

 

웹 애플리케이션(Web Application)

  • 웹 애플리케이션은 웹 서버에서 동작하는 소프트웨어로, 클라이언트의 요청을 처리하고 동적인 웹페이지를 생성하는 역할을 한다. 사용자가 입력한 데이터를 처리하고, DB와 상호작용하여 정보를 저장하거나 불러오는 기능을 수행한다.
  • 웹 애플리케이션은 사용자가 직접 상호작용하는 부분을 처리한다. 예를 들어 로그인, 데이터 입력, 상품 구매 등의 기능이 웹 애플리케이션을 통해 이루어진다.

웹 애플리케이션의 주요 구성 요소

웹 애플리케이션은 단순한 정적 웹사이트와 달리, 사영자의 입력을 처리하고, 동적인 데이터를 생성하는 역할을 한다. 이는 웹 서버에서 제공하는 기본적인 파일 제공 기능을 넘어서, 복잡한 비지니스 로직과 데이터 관리를 가능하게 한다.

  • 사용자 인터페이스 User Interface
    사용자와 직접 상호작용하는 화면이나 페이지로 HTML, CSS, JS 등을 사용하여 사용자가 볼 수 있는 화면을 구성한다.
    *레스토랑의 메뉴판과 테이블 세팅과 비슷하다. 손님이 메뉴를 보고 주문을 결정하는 것처럼, 사용자는 웹 애플리케이션의 UI를 통해 필요한 정보를 입력하거나 작업을 요청한다.
  • 비지니스 로직 Business Logic
    애플리케이션의 핵심 기능과 처리 로직을 구현한다. 사용자가 상품을 구매할 때, 상품의 재고를 확인하고, 결제를 처리하며, 주문을 생성하는 등의 로직이 예가 된다.
    *요리사가 주문을 받아 요리를 만드는 과정이다. 어떤 재료를 사용하고, 어떻게 조리할지를 결정하여 최종 요리를 완성하는 것이 비지니스 로직에 해당한다.
  • 데이터 접근 계층 Data Access Layer
    DB와 상호작용하여 데이터를 저장하고 불러온다. DB에 쿼리를 생성하고, DB에서 가져온 결과를 비지니스 로직이나 사용자에게 전달한다.
    *주방에서 사용하는 자료가 저장된 창고와 같다. 요리사가 필요할 때마다 창소에서 재료를 꺼내 요리를 준비하듯이, 웹 애플리케이션은 DB에서 필요한 정보를 가져와 사용한다.
  • 웹 API / Web API
    다른 서비스나 애플리케이션과 상호작용할 수 있도록 API를 제공한다. 외부의 결제 서비스와 연동하거나, 소셜 미디어에 데이터를 전송하는 기능이 예시이다. RESTful API, GraphQL, SOAP
    *레스토랑 주방이 외부 식재료 공급업체와의 관계를 관리하는 것과 비슷하다. 주방에서 요리를 하는 데 필요한 특정 재료가 외부에서 공급되듯이, 웹 애플리케이션도 외부 서비스와 데이터를 주고받기 위해 API를 사용한다.
  • 세션 관리 Session Management
    사용자의 로그인 상태를 관리하고, 각 사용자의 세션을 유지한다. 세션 관리는 사용자의 로그인 정보나 장바구니 정보 등 중요한 데이터를 관리하는데 사용한다.
    *특정 손님이 자주 찾는 레스토랑에서 그 손님의 취향을 기억해두는 것과 비슷하다. 손님이 다시 방문했을 때 더 나은 맞춤형 서비스를 제공할 수 있는 것이랑 비슷하다.
  • 오류 처리 Error Handling
    애플리케이션에서 발생하는 오류를 감지하고 처리하는 역할을 한다. 오류가 발생했을 때 오류 메시지를 제공하고, 필요시 오류를 기록하여 분석할 수 있다.
    *요리 과정에서 실수가 발생했을 때 이를 바로 잡거나, 문제가 생겼을 때 손님에게 사과와 함께 해결책을 제시하는 것과 비슷하다.
  • 보안 Security
    애플리케이션의 보안을 관리하는 역할이다. 사용자 인증, 권한 부여, 입력 검증, 데이터 암호화 등의 기능이 포함된다.
    *레스토랑에서 손님이 안전하게 식사할 수 있도록 보안을 유지하는 것과 같다. 손님의 신원 확인, 결제 정보 보호, 안전한 식자재 사용 등이 예가 된다.

추가 과제

쿠키와 세션의 역할

  • 쿠키와 세션은 사용자의 상태를 유지하고, 사용자를 식별하는데 필수적이다.
  • 웹 애플리케이션은 사용자가 로그인했을 때 정보를 세션에 저장하고, 세션 ID를 쿠키로 브라우저에 저장한다.
  • 사용자가 웹사이트의 여러 페이지를 이동할 때마다 로그인 상태를 유지할 수 있다.

쿠키와 세션의 작동방식

  • 사용자가 웹사이트에 로그인하면, 서버는 세션을 생성하고, 고유한 세션 ID를 부여한다. 이 세션 ID는 쿠키를 통해 사용자의 브라우저에 저장된다.
  • 사용자가 웹사이트 내에서 페이지를 이동할 때마다, 브라우저는 세션 ID를 서버로 전송한다. 서버는 세션 ID를 통해 사용자를 식별하고, 사용자의 로그인 상태나 다른 정보를 유지한다.
  • 온라인 쇼핑몰에서 사용자가 장바구니에 상품을 담으면, 서버는 이 정보를 세션에 저장한다. 따라서 사용자가 다른 페이지로 이동해도 장바구니 정보는 계속 유지된다.

URI란?

  • URI는 웹에서 자원을 식별하기 위한 통합 자원 식별자이다. 웹에서 특정 자원(웹 페이지, 이미지, 동영상 등)을 가리키는 주소이다.
  • URI는 두 가지 주요 구성 요소로 나뉜다.