본문 바로가기

CS

[CS] 웹 서버와 웹 애플리케이션

오늘은 웹 심화과정에 대한 내용을 다루는 특강이 있었는데

웹 서버와 웹 애플리케이션의 대한 개념과 다양한 종류의 프레임워크를 들었다.

내용이 많아서 프레임워크는 따로 구글링을 통해 정보를 찾아가며 추가적으로 적고

오늘은 웹 서버와 웹 애플리케이션의 대한 강의 내용만 정리하려고 한다.


웹 서버

웹 서버란?

클라이언트(주로 웹 브라우저)에서 요청한 웹 페이지, 이미지, 동영상 등 웹 콘텐츠를 제공하는 서버 소프트웨어 또는 하드웨어를 의미하며 클라이언트의 HTTP 요청을 수신하고, 요청된 콘텐츠를 찾아 응답하는 역할을 한다.

 

웹 서버의 주요 구성 요소

  1. Listener (수신기): 네트워크에서 들어오는 클라이언트의 요청을 수신하는 컴포넌트로 지정된 포트를 열어 클라이언트의 연결을 대기한다.
  2. Request Handler (요청 처리기): 수신된 요청을 분석하고, 요청에 따라 필요한 작업을 결정한다. 정적 파일을 찾거나, 동적 콘텐츠를 생성하기 위해 적절한 스크립트를 실행한다.
  3. Response Generator (응답 생성기): 요청 처리 결과를 바탕으로 클라이언트에게 보낼 HTTP 응답을 생성한다. 응답은 상태 코드, 헤더, 바디(컨텐츠)로 구성되어 있다.
  4. Cache (캐시): 서버의 부하를 줄이고, 응답 속도를 향상시키기 위해 자주 요청되는 데이터나 페이지를 저장하여 빠르게 제공할 수 있도록 한다.
  5. Logging (로깅): 요청 및 응답, 오류 등의 정보를 기록하여 관리자는 서버 상태를 모니터링하고 문제 해결이 가능하다.
  6. Security Manager (보안 관리자): 클라이언트의 요청을 검증하고, 접근 권한을 확인한다. HTTPS를 통해 데이터 암호화를 관리하고, 인증 및 권한 부여를 수행한다.
  7. Configuration Manager (설정 관리자): 서버의 설정 파일을 관리하고, 가상 호스팅, 라우팅, 포트 등의 설정을 유지한다.

웹 서버 소프트웨어

  • Apache HTTP Server: 가장 널리 사용되는 웹 서버 소프트웨어 중 하나로, 다양한 운영체제에서 동작하며 높은 유연성과 확장성을 제공해준다.
  • Nginx: 경량화된 고성능 웹 서버로, 높은 동시 연결 처리 능력을 가지고 있으며 주로 리버스 프록시와 로드 밸런싱에 사용된다.
  • Microsoft IIS(Internet Information Services): Windows Server 운영체제에서 동작하는 웹 서버 소프트웨어로, Microsoft 제품과의 높은 호환성을 가진다.

서버 설정 및 작동 원리

  • 가상 호스트: 하나의 웹 서버에서 여러 도메인을 호스팅 할 수 있도록 하는 기술로 동일한 서버에서 다양한 웹 사이트를 운영 가능하게 해준다.
  • 포트: 네트워크에서 서비스를 식별하는 번호로 웹 서버는 기본적으로 80 포트(HTTP 포트 번호)와 443 포트(HTTPS 포트 번호)를 사용하여 클라이언트 요청을 처리한다.
  • 라우팅: 요청 URL을 분석하여 적절한 응답을 반환하는 과정으로 웹 애플리케이션의 특정 경로로 요청을 전달하고, 해당 경로에 맞는 콘텐츠나 데이터를 제공하는 역할을 한다.

서버 - 클라이언트 통신

  • API: 소프트웨어 간의 상호작용을 가능하게 하는 인터페이스로 웹 API는 HTTP를 통해 클라이언트와 서버 간의 데이터를 교환한다. (예시: Twitter API, Google Maps API, OpenWeather API)
  • RESTful API: 웹 서비스 디자인 아키텍처로, 클라이언트와 서버 간의 상호작용을 정의한 것이다. RESTful API는 자원을 URI로 표현하며, HTTP 메서드(GET, POST, PUT, DELETE)를 사용하여 자원에 대한 작업을 수행한다.
  • AJAX: 웹 페이지를 새로 고침하지 않고 서버와 비동기적으로 데이터를 주고받는 기술이며 사용자 경험을 개선하고, 페이지 응답 속도를 향상시켜준다. (예시: 채팅 애플리케이션, 실시간 검색 기능, 비동기 데이터 로딩
  • 프론트엔드: 사용자와 직접 상호작용하는 웹 애플리케이션의 부분으로, 사용자 인터페이스(UI)와 사용자 경험(UX)을 맡는다. HTML, CSS, JavaScript 등을 사용하여 웹 페이지를 구성하고 스타일을 적용하며, 동적인 기능을 구현한다.
    기술: HTML, CSS, JavaScript, 프론트엔드 프레임워크(React, Angular, Vue.js)
  • 백엔드: 웹 애플리케이션의 서버 측 부분으로, 데이터베이스와 서버 로직을 관리하는 부분이다. 클라이언트 요청을 처리하고, 데이터베이스와 상호작용하며, 필요한 데이터를 클라이언트에 반환해준다.
    기술: 서버 사이드 언어(Python, Java, Node.js), 데이터베이스(MySQL, MongoDB), 백엔드 프레임워크(Django, Spring, Express.js)

웹 애플리케이션

웹 애플리케이션이란?

웹 서버에서 동작하는 소프트웨어로, 사용자의 입력을 처리하고 동적인 웹 페이지를 생성하는 데 사용된다. 주로 특정 비즈니스 로직이나 기능을 구현하며, 데이터베이스와 상호 작용하여 정보를 저장하고 불러오는 역할을 수행한다.

 

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

  1. User Interface (사용자 인터페이스): 사용자와 상호 작용하는 화면이나 페이지를 말하며 HTML, CSS, JavaScript 등을 사용하여 구성한다.
  2. Business Logic (비즈니스 로직): 애플리케이션의 핵심 기능과 처리 로직을 구현한 것으로 사용자의 요청을 처리하고, 필요한 데이터를 조작하여 응답을 생성한다.
  3. Data Access Layer (데이터 접근 계층): 데이터베이스와 상호 작용하여 데이터를 저장하고 불러온다. 데이터베이스 쿼리를 생성하고, 결과를 반환한다.
  4. Web API (웹 API): 다른 서비스나 애플리케이션과 상호 작용할 수 있도록 API를 제공한다.
    (RESTful API, GraphQL, SOAP 등)
  5. Session Management (세션 관리): 쿠키나 세션 토큰을 사용하여 구현하며   사용자의 로그인 상태를 관리하고, 각 사용자의 세션을 유지한다.
  6. Error Handling (오류 처리): 오류 로그를 남기고, 사용자에게 적절한 메시지를 표시함으로써 애플리케이션에서 발생하는 오류를 감지하고 처리한다.
  7. Security (보안): 애플리케이션의 보안을 관리하는 부분으로 사용자 인증, 권한 부여, 입력 검증, 데이터 암호화 등의 기능을 포함하고 있다.

웹 서버와 웹 애플리케이션의 차이점

구분 웹 서버 웹 애플리케이션
역할 웹 콘텐츠 제공 (정적 파일, HTTP 응답 처리) 비즈니스 로직 구현, 사용자 입력 처리, 동적 콘텐츠 생성
구성 요소 Listener, Request Handler, Cache, Logging, Security User Interface, Business Logic, Data Access Layer, API
주요 기능 HTTP 요청 수신, 응답 생성, 캐싱, 로깅, 보안 사용자 상호 작용, 데이터 처리, 비즈니스 로직, 세션 관리
사용 기술 HTTP, HTTPS, SSL/TLS, 캐싱 HTML, CSS, JavaScript, 서버 측 언어 (Python, PHP 등)
작동 방식 클라이언트 요청을 처리하고 정적/동적 콘텐츠 제공 사용자의 입력에 따라 동적으로 콘텐츠 생성, 데이터베이스와 상호 작용

'CS' 카테고리의 다른 글

[CS] 웹 지식 복습 및 추가 정리  (1) 2024.08.12
[CS] 소프트웨어 문서  (0) 2024.07.31
[CS] 빅데이터 및 인공지능  (0) 2024.07.30
[CS] 네트워크  (0) 2024.07.29
[CS] 소프트웨어 설계  (0) 2024.07.26