두 서버가 하는일?
웹 서버와 애플리케이션 서버는 인터넷 상에서 데이터와 서비스를 교환할 수 있는 기술입니다
웹 사이트 또는 애플리케이션을 방문하면 브라우저(클라이언트)가 원격 서버에 데이터를 요청하고 응답을 표시합니다.
세부적으로는?
웹 서버는 클라이언트 요청에 응답하여 이미지, 파일, 텍스트와 같은 정적 데이터를 제공하는 소프트웨어 구성 요소입니다.
애플리케이션 서버는 비즈니스 로직을 추가하여 웹 서버의 응답을 계산합니다. 대부분 동적 콘텐츠를 제공합니다.
정적, 동적 컨텐츠의 예
- 이미지 파일(예: PNG, GIF 및 JPEG), 다운로드 가능한 문서(PDF), 비디오 및 HTML 파일은 모두 정적 콘텐츠입니다.
- 동적으로 생성되는 보고서, 사용자 지정된 데이터 표현, 개인화된 UI, 데이터베이스 결과 및 처리된 HTML은 모두 동적 콘텐츠입니다.
웹 서버 작동 방식
웹 서버는 웹 사이트의 코드와 데이터를 호스팅하는 기술입니다. 브라우저에 URL을 입력할 때 이 URL은 실제로 웹 서버의 주소 식별자입니다.
브라우저와 웹 서버는 다음과 같이 통신합니다.
- 브라우저는 URL을 사용하여 서버의 IP 주소를 찾습니다.
- 브라우저는 정보에 대한 HTTP 요청을 보냅니다.
- 웹 서버는 데이터 베이스 서버와 통신하여 관련 데이터를 찾습니다.
- 웹서버는 HTTP 응답으로 HTML 페이지, 이미지, 비디오 또는 파일과 같은 정적 컨텐츠를 브라우저에 반환합니다.
- 그러면 브라우저가 정보를 표시합니다.
URL(Uniform Resource Locator)이란?
웹 상에서 자원의 위치를 나타내는 표준 주소 체계입니다. 쉽게 말해, 인터넷에서 특정 페이지, 파일, 이미지, 동영상 등 다양한 자원을 찾기 위해 사용하는 주소입니다.
Http란?
웹 상에서 브라우저와 서버가 데이터를 주고 받을때 사용하는 프로토콜이다.
애플리케이션 서버 작동 방식
애플리케이션 서버는 동적 콘텐츠 생성, 애플리케이션 로직 및 다양한 리소스와의 통합을 지원하여 웹 서버의 기능을 확장합니다. 애플리케이션 코드를 실행하고 메시징 시스템 및 데이터베이스와 같은 다른 소프트웨어 구성 요소와 상호 작용할 수 있는 런타임 환경을 제공합니다. 비즈니스 로직을 사용하여 웹 서버보다 더 의미 있게 데이터를 변환합니다.
웹 사이트에서 대화형 콘텐츠에 액세스하려고 할 때 프로세스는 다음과 같이 작동합니다.
- 브라우저는 URL을 사용하여 서버의 IP 주소를 찾습니다.
- 브라우저는 정보에 대한 HTTP 요청을 보냅니다.
- 웹 서버는 요청을 애플리케이션 서버로 전송합니다.
- 애플리케이션 서버는 비즈니스 로직을 적용하고 다른 서버 및 서드 파티 시스템과 통신하여 요청을 수행합니다.
- 애플리케이션 서버는 새 HTML 페이지를 렌더링하고 이를 응답으로 웹 서버에 반환합니다.
- 웹 서버는 브라우저에 응답을 반환합니다.
- 브라우저가 정보를 표시합니다.
전자 상거래 웹 사이트를 예로 들면, 사용자는 장바구니에 항목을 추가하거나 물품을 결제할 때 애플리케이션 서버와 상호 작용합니다.
주요 차이점
웹 서버 | 애플리케이션 서버 | |
다루는 태스크 | 웹 서버는 간단한 요청에 대한 응답을 제공합니다. | 애플리케이션 서버는 데이터베이스, 서비스 및 엔터프라이즈 시스템의 더 복잡한 콘텐츠를 제공합니다. |
사용되는 프로토콜 | 웹 서버는 주로 HTTP를 사용합니다. FTP와 SMTP도 지원합니다. | 애플리케이션 서버는 많은 프로토콜을 지원합니다. |
콘텐츠 유형 | 웹 서버는 HTML 페이지, 이미지, 비디오 및 파일과 같은 정적 콘텐츠를 제공합니다. | 애플리케이션 서버는 실시간 업데이트, 개인화된 정보 및 고객 지원과 같은 동적 콘텐츠를 제공합니다. |
멀티스레딩 | 일반적으로 멀티스레딩을 사용하지 않습니다. | 멀티스레딩을 사용하여 요청을 동시에 처리합니다. |
참고자료
https://aws.amazon.com/ko/compare/the-difference-between-web-server-and-application-server/
'Backend Programming' 카테고리의 다른 글
스프링 빈과 애플리케이션 컨텍스트 그리고 AOP?? (0) | 2024.06.29 |
---|---|
MVC 패턴이란 무엇일까? (0) | 2024.06.28 |
스프링의 컨트롤러, 서비스, 레포지토리가 무엇인가? (0) | 2024.06.27 |
JDBC, JPA가 무엇이냐? (0) | 2024.06.26 |
데이터 베이스 테이블? (0) | 2024.06.26 |