Code States/TIL

[0324] WAS와 Web Server - 서버

ki1111m2 2023. 3. 24. 16:31

학습 목표

  • 서버의 종류와 역할에 대해서 이해합니다.
  • 웹서버와 웹 애플리케이션 서버의 차이점을 이해합니다.
  • 정적, 동적이라는 단어를 이해하고, 정적 웹 사이트와 동적 웹 사이트의 차이점을 학습합니다.
  • nginx를 통해 정적 웹 사이트, 정적 콘텐츠를 이해합니다.
  • nginx를 이용해 정적 웹사이트를 제공하고, Mini WAS를 개발하면서 위의 그림에서 2와 5번에 해당하는 구조를 이해합니다.
  • express, fastify를 통해 API 서버를 만들면서 WAS의 구조와 해당 서버에 대한 모듈을 이해합니다.
  • 웹 서버와 WAS의 전체적인 구조를 이해하고, 기본적인 CRUD가 있는 블로그 서버를 개발하며, 전체 아키텍처를 이해합니다.

서버


  • 사용자의 요청을 받고, 이에 따른 응답과 데이터를 보내주는 역할을 수행함
  • 서비스를 제공하는 컴퓨터 내의 프로그램을 의미함
  • 이러한 프로그램(소프트웨어)이 실행되는 컴퓨터(하드웨어) 역시 서버라고 불림
  • 웹 서버(Web Server)
    • 클라이언트로부터 HTTP 요청을 받아들이고, HTML 문서와 같은 웹 페이지를 있는 그대로 반환하는 서버
    • 정적 파일: 그림, CSS, JS 등
    • 정적 파일들을 브라우저에 그대로 전달하는 역할을 하기 때문에 웹 서버는 정적 웹 서버(Static Web Server)라고 불림
    • nginx, Apache Web Server 등
  • 웹 애플리케이션 서버(Web Application Server)
    • 웹 서버와 같이 웹 페이지를 전달하는 역할을 하기도 함
    • 핵심 역할은 웹 페이지를 구성하는 동적인 컨텐츠를 생성하거나 업데이트 하는 비즈니스 로직을 수행할 수 있게 하는 것
    • 서버 측 비즈니스 로직에 클라이언트가 접근할 수 있는 방법을 제공하는 것
    • 특징
      • 웹 페이지를 구성하는 동적인 요소를 생성하는 서버 사이드 코드가 구동될 수 있는 프로그래밍 언어적 런타임 혹은 소프트웨어 엔진을 제공함
      • 웹 애플리케이션 서버의 클라이언트는 애플리케이션 그 자체가 될 수도 있고, 웹 서버나 다른 웹 애플리케이션 서버, 데이터베이스 서버가 될 수도 있음(다양한 형태의 아키텍처가 생성될 수 있음)
  • 데이터베이스 서버
    • 사용자가 데이터베이스에 연결할 수 있도록 해줌
    • MySQL, MongoDB, Oracle 등
  • 프록시 서버
    • 리소스를 요청하는 클라이언트와 응답으로 리소스를 전달하는 서버 사이에 중계 역할을 하는 서버
    • 위치에 따라 포워드 프록시와 리버스 프록시로 나누어짐
    • 보안, 캐시, 로드밸런싱 등의 역할을 수행함

웹 서버 vs 동적 웹사이트


  • 웹 서버(Web Server)
    • 정적 파일(static files)을 받고, 이에 대한 요청을 이행하는 서버
    • 보통 HTTP 요청과 응답만을 처리함
     

  • 웹 애플리케이션 서버(Web Application Serer)
    • 데이터를 동적으로 처리해서 제공하기 위해 만들어진 서버
    • DB 조회, 여러 개의 트랜잭션 관리, 비지니스 로직 처리 등의 기능이 요구됨
    • 사용자의 요청에 의해 다르게 보일 수 있는 웹사이트의 인터랙티브 부분을 처리함