Skip to content

Latest commit

 

History

History
132 lines (109 loc) · 7.12 KB

01_01_Web_구조와_상호작용.md

File metadata and controls

132 lines (109 loc) · 7.12 KB

웹 서버, 웹 애플리케이션 서버, 클라이언트 구조와 상호작용

목차

소개

웹 기술의 기본적인 이해를 위해, 웹 서버, 웹 애플리케이션 서버, 클라이언트의 구조와 이들이 어떻게 상호작용하는지 살펴보겠습니다. 이 문서에서는 각 구성 요소의 역할과 동작 원리를 설명합니다.

1. 클라이언트

클라이언트의 역할

  • 사용자 인터페이스: 사용자가 상호작용하는 웹 페이지를 제공합니다.
  • 웹 브라우저: 웹 페이지를 요청하고 표시하는 소프트웨어(예: Chrome, Firefox, Edge).

동작 원리

  1. URL 입력: 사용자가 웹 브라우저에 URL을 입력합니다.
  2. HTTP 요청: 웹 브라우저가 서버에 HTTP 요청을 보냅니다.
  3. 응답 수신 및 렌더링: 서버로부터 HTML, CSS, JavaScript 파일을 받아와서 웹 페이지를 렌더링합니다.

예제

사용자가 http://example.com을 입력합니다.
브라우저가 서버에 HTTP GET 요청을 보냅니다.
서버가 HTML 페이지를 응답합니다.
브라우저가 페이지를 렌더링하여 화면에 표시합니다.

2. 웹 서버

웹 서버의 역할

  • 정적 콘텐츠 제공: HTML, CSS, 이미지 파일 등의 정적 파일을 클라이언트에 제공합니다.
  • 요청 라우팅: 웹 애플리케이션 서버로 요청을 전달합니다.

대표적인 웹 서버

  • Apache: 오픈 소스 웹 서버 소프트웨어.
  • Nginx: 고성능 웹 서버 및 리버스 프록시 서버.

동작 원리

  1. 요청 수신: 클라이언트의 HTTP 요청을 수신합니다.
  2. 요청 처리: 요청된 리소스가 정적 파일이면 이를 응답합니다.
  3. 애플리케이션 서버로 전달: 동적 콘텐츠 요청 시, 웹 애플리케이션 서버로 요청을 전달합니다.

예제

브라우저가 http://example.com/index.html을 요청합니다.
Apache 서버가 요청을 수신하고 index.html 파일을 클라이언트에 응답합니다.

3. 웹 애플리케이션 서버

웹 애플리케이션 서버의 역할

  • 동적 콘텐츠 생성: 데이터베이스와 상호작용하여 동적 웹 페이지를 생성합니다.
  • 비즈니스 로직 처리: 웹 애플리케이션의 핵심 비즈니스 로직을 처리합니다.

대표적인 웹 애플리케이션 서버

  • Node.js: JavaScript 기반의 서버 측 프레임워크.
  • Django: Python 기반의 웹 애플리케이션 프레임워크.
  • Spring Boot: Java 기반의 웹 애플리케이션 프레임워크.
  • DOTNET : C# 기반의 웹 애플리케이션 프레임워크.

동작 원리

  1. 요청 수신: 웹 서버로부터 요청을 전달받습니다.
  2. 비즈니스 로직 처리: 요청에 따라 필요한 비즈니스 로직을 실행합니다.
  3. 동적 콘텐츠 생성: 데이터베이스와 상호작용하여 HTML 등의 동적 콘텐츠를 생성합니다.
  4. 응답 전송: 생성된 동적 콘텐츠를 웹 서버를 통해 클라이언트에 전송합니다.

예제

브라우저가 http://example.com/data를 요청합니다.
Nginx 서버가 요청을 Node.js 애플리케이션 서버로 전달합니다.
Node.js 서버가 데이터베이스에서 데이터를 가져와 HTML 페이지를 생성합니다.
생성된 HTML 페이지를 Nginx 서버를 통해 클라이언트에 응답합니다.

4. 클라이언트, 웹 서버, 웹 애플리케이션 서버의 상호작용

전체 흐름

  1. 클라이언트 요청: 사용자가 웹 브라우저에서 URL을 입력하여 HTTP 요청을 보냅니다.
  2. 웹 서버 처리: 웹 서버가 요청을 수신하고 정적 콘텐츠 요청인지 확인합니다.
    • 정적 콘텐츠: HTML, CSS, 이미지 등의 정적 파일을 직접 응답합니다.
    • 동적 콘텐츠: 요청을 웹 애플리케이션 서버로 전달합니다.
  3. 애플리케이션 서버 처리: 웹 애플리케이션 서버가 비즈니스 로직을 처리하고 동적 콘텐츠를 생성합니다.
  4. 응답 전송: 생성된 동적 콘텐츠를 웹 서버를 통해 클라이언트에 응답합니다.
  5. 클라이언트 렌더링: 클라이언트가 수신한 HTML, CSS, JavaScript 파일을 렌더링하여 화면에 표시합니다.

예제 흐름

1. 사용자가 http://example.com/profile을 입력합니다.
2. 웹 브라우저가 Nginx 웹 서버에 HTTP GET 요청을 보냅니다.
3. Nginx 웹 서버가 요청을 Node.js 애플리케이션 서버로 전달합니다.
4. Node.js 서버가 데이터베이스에서 사용자 프로필 데이터를 가져와 HTML 페이지를 생성합니다.
5. 생성된 HTML 페이지를 Nginx 서버를 통해 클라이언트에 응답합니다.
6. 클라이언트 웹 브라우저가 HTML 페이지를 렌더링하여 사용자에게 표시합니다.

결론

웹 서버, 웹 애플리케이션 서버, 클라이언트는 웹 애플리케이션의 핵심 구성 요소입니다. 이들은 서로 상호작용하여 사용자가 입력한 요청을 처리하고, 웹 페이지를 제공하는 역할을 합니다. 각 구성 요소의 역할과 동작 원리를 이해하면 웹 애플리케이션의 작동 방식을 더 잘 이해할 수 있습니다.

추가 학습 자료