[webserver] 응용 프로그램 서버와 웹 서버의 차이점은 무엇입니까?

응용 프로그램 서버와 웹 서버의 차이점은 무엇입니까?



답변

대부분 웹 서버와 응용 프로그램 서버라는 용어는 서로 바꿔 사용할 수 있습니다.

다음은 Web Server 및 Application Server 기능의 주요 차이점 중 일부입니다.

  • 웹 서버는 HTTP 컨텐츠를 제공하도록 설계되었습니다. App Server는 HTTP 콘텐츠도 제공 할 수 있지만 HTTP에만 국한되지는 않습니다. RMI / RPC와 같은 다른 프로토콜 지원을 제공 할 수 있습니다.
  • 웹 서버는 대부분 정적 컨텐츠를 제공하도록 설계되었지만 대부분의 웹 서버에는 Perl, PHP, ASP, JSP 등과 같은 스크립트 언어를 지원하는 플러그인이있어 이러한 서버가 동적 HTTP 컨텐츠를 생성 할 수 있습니다.
  • 대부분의 응용 프로그램 서버에는 웹 서버가 통합되어 있으므로 Web Server는 가능한 모든 웹 서버를 수행 할 수 있습니다. 또한 App Server에는 연결 풀링, 객체 풀링, 트랜잭션 지원, 메시징 서비스 등과 같은 응용 프로그램 수준 서비스를 지원하는 구성 요소와 기능이 있습니다.
  • 웹 서버는 정적 콘텐츠 및 동적 콘텐츠 용 앱 서버에 적합하므로 대부분의 프로덕션 환경에는 웹 서버가 앱 서버에 대한 리버스 프록시 역할을합니다. 즉, 페이지 요청을 처리하는 동안 이미지 / 정적 HTML과 같은 정적 컨텐츠는 요청을 해석하는 웹 서버에서 제공됩니다. 어떤 종류의 필터링 기술 (주로 요청 된 리소스의 확장)을 사용하여 웹 서버는 동적 콘텐츠 요청을 식별하고 앱 서버로 투명하게 전달합니다.

이러한 구성의 예는 Apache Tomcat HTTP Server 및 Oracle (이전 BEA) WebLogic Server입니다. Apache Tomcat HTTP Server는 웹 서버이고 Oracle WebLogic은 Application Server입니다.

경우에 따라 서버는 IIS 및 .NET 런타임과 같이 밀접하게 통합되어 있습니다. IIS는 웹 서버입니다. .NET 런타임 환경을 갖추면 IIS는 응용 프로그램 서비스를 제공 할 수 있습니다.


답변

이것은 차이점, 유사점 및 둘 다 함께 작동하는 방법과 모든 방법을 명확하게 이해하는 몇 가지 시나리오에 대한 자세한 답변입니다.

Application Server 는 때때로 웹 서버 와 혼합되는 용어입니다 . 웹 서버는 주로 HTTP 프로토콜을 처리하지만 , Application Server는 HTTP를 포함하지만 이에 국한되지 않는 여러 가지 프로토콜 을 처리 합니다.

웹 서버의 주요 업무는 사이트 컨텐츠표시하는 것이며 애플리케이션 서버는 사용자와 표시된 컨텐츠 사이의 상호 작용 , 논리를 담당 합니다. 응용 프로그램 서버는 웹 서버 함께 작동 하여 웹 서버가 표시되고 다른 서버가 상호 작용합니다.

서버와 클라이언트간에 앞뒤로 이동하는 정보는 단순한 디스플레이 마크 업으로 제한되지 않고 둘 사이의 상호 작용으로 제한됩니다.

대부분의 경우 서버 는 J2EE (Java 2 Platform) , EJB (Enterprise JavaBean) 및 기타 다른 응용 프로그램 소프트웨어 모델과 같은 구성 요소 API를 통해 이러한 상호 작용을 만듭니다 .

여기에 이미지 설명을 입력하십시오

예를 들면 :

응용 프로그램 서버가 웹 서버와 작동하는 시나리오와 응용 프로그램 서버가없는 시나리오는 온라인 상점을 통한 시나리오의 차이점을 이해하는 가장 좋은 방법입니다.

시나리오 1 : 애플리케이션 서버가없는 웹 서버

웹 서버 만 있고 응용 프로그램 서버가없는 온라인 상점이 있습니다. 이 사이트는 제품을 선택할 수있는 디스플레이를 제공합니다. 쿼리를 제출하면 사이트에서 조회를 수행하고 HTML 결과를 클라이언트에 다시 반환합니다. 웹 서버는 쿼리를 데이터베이스 서버로 직접 전송합니다 (내버려 두 번째 너깃에서 설명하겠습니다). 응답을 기다립니다. 수신되면 웹 서버는 응답을 HTML 파일로 공식화하여 웹 브라우저로 보냅니다. 서버와 데이터베이스 서버 간의이 통신은 쿼리가 실행될 때마다 발생합니다.

시나리오 2 : 애플리케이션 서버가있는 웹 서버

실행하려는 조회가 이미 수행되었고 그 이후로 데이터가 변경되지 않은 경우, 서버는 요청을 데이터베이스 서버로 보내지 않고도 결과를 생성합니다. 이를 통해 두 번째 클라이언트가 동일한 정보에 액세스하고 데이터베이스 서버에 다른 중복 쿼리를 보내지 않고도 신뢰할 수있는 실시간 정보를 실시간으로받을 수있는 실시간 쿼리가 가능합니다. 서버는 기본적으로 데이터베이스 서버와 웹 서버 사이의 중간 역할을합니다. 이렇게하면 첫 번째 시나리오에서 가져온 정보를 재사용 할 수 있습니다.이 정보는 특정 “사용자 정의 된”HTML 페이지에 포함되므로 재사용 할 수있는 프로세스가 아닙니다. 두 번째 클라이언트는 정보를 다시 요청하고 요청 된 정보가 포함 된 또 다른 HTML 삽입 페이지를 수신해야합니다.

이러한 다양한 복잡한 작업을 지원하려면이 서버에는 중복 데이터, 뛰어난 처리 성능 및 많은 양의 RAM이 있어야 실시간으로 가져 오는 모든 데이터를 처리 할 수 ​​있습니다.

도움이 되었기를 바랍니다.


답변

두 용어 모두 매우 일반적인 용어로, 다른 용어를 포함하는 용어도 있고 그 반대의 경우도 있습니다.

  • 웹 서버 : http 프로토콜을 사용하여 웹에 콘텐츠를 제공합니다.

  • 응용 프로그램 서버 : 비즈니스 논리 및 프로세스를 호스팅하고 노출합니다.

요점은 웹 서버가 http 프로토콜을 통해 모든 것을 노출시키는 반면 응용 프로그램 서버는 이에 제한되지 않는다는 것입니다.

즉, 많은 시나리오에서 웹 서버가 애플리케이션 서버의 프론트 엔드를 작성하는 데 사용되고 있음을 알 수 있습니다. 즉, 사용자가 웹 서버에서 발견 된 비즈니스 규칙과 상호 작용할 수있는 웹 페이지 세트를 노출합니다 응용 프로그램 서버.


답변

웹 서버

실행 python -m 'SimpleHTTPServer'하고 http : // localhost : 8080으로 이동 하십시오 . 당신이 보는 것은 작동하는 웹 서버입니다. 서버는 단순히 컴퓨터에 저장된 HTTP를 통해 파일을 제공합니다. 요점은이 모든 것이 HTTP 프로토콜 위에서 수행된다는 것입니다. 예를 들어 정확히 동일한 작업 (저장된 파일 제공)을 수행하지만 다른 프로토콜 위에있는 FTP 서버도 있습니다.

응용 프로그램 서버

아래와 같은 작은 응용 프로그램이 있다고 가정 해보 십시오 ( Flask의 조각 ).

@app.route('/')
def homepage():
    return '<html>My homepage</html>'

@app.route('/about')
def about():
    return '<html>My name is John</html>'

작은 예제 프로그램은 URL 매핑 /함수에 homepage()/about함수에 about().

이 코드를 실행하려면 클라이언트의 요청을 듣고 코드를 사용하여 동적으로 무언가를 반환하는 프로그램 또는 모듈 인 응용 프로그램 서버 (예 : Gunicorn)가 필요합니다. 이 예에서는 아주 나쁜 HTML을 반환합니다.

다른 사람들이 말하는 비즈니스 논리는 무엇입니까? URL은 코드베이스의 특정 위치에 매핑되므로 프로그램 작동 방식에 대한 논리를 가정하고 있습니다.


리 캡핑

웹 서버 -어딘가에 저장된 파일을 제공합니다 (가장 .css, .html, .js). 일반적인 웹 서버는 Apache, Nginx 또는 Python의 SimpleHTTPServer입니다.

응용 프로그램 서버 -즉시 생성 된 파일을 제공합니다. 기본적으로 대부분의 웹 서버에는 일종의 플러그인이 있거나 내장 기능이 내장되어 있습니다. Gunicorn (Python), Unicorn (Ruby), uWSGI (Python) 등과 같은 엄격한 응용 프로그램 서버도 있습니다.

실제로 애플리케이션 서버의 코드를 사용하여 웹 서버를 빌드 할 수 있습니다. 이것은 개발 중에 컴퓨터에서 여러 서버를 실행하고 싶지 않은 경우에 수행됩니다.


답변

Rutesh와 jmservera가 지적했듯이, 구별은 모호한 것입니다. 역사적으로, 그것들은 달랐지만, 90 년대를 통해이 두 가지 별개의 카테고리는 기능을 혼합하고 효과적으로 병합했습니다. 이 시점에서 “앱 서버”제품 카테고리가 “웹 서버”카테고리의 엄격한 상위 세트라고 생각하는 것이 가장 좋습니다.

일부 역사. Mosaic 브라우저와 하이퍼 링크 컨텐츠의 초기에는 HTTP를 통해 웹 페이지 컨텐츠와 이미지를 제공하는 “웹 서버”라는 것이 진화했습니다. 대부분의 내용은 정적이고 HTTP 1.0 프로토콜은 파일을 전달하는 방법 일뿐입니다. “웹 서버”범주는 CGI 기능을 포함하도록 빠르게 진화하여 각 웹 요청에서 프로세스를 효과적으로 시작하여 동적 컨텐츠를 생성합니다. 캐싱, 보안 및 관리 기능을 통해 HTTP도 성숙하고 제품이 더욱 정교 해졌습니다. 기술이 발전함에 따라 Kiva와 NetDynamics에서 회사 별 Java 기반 서버 측 기술을 확보했으며, 결국 JSP에 통합되었습니다. Microsoft는 1996 년에 ASP를 Windows NT 4.0에 추가했습니다. 정적 웹 서버는 몇 가지 새로운 트릭을 배웠으므로 효과적인 “

병렬 범주에서 앱 서버는 오랫동안 진화하여 존재했습니다. 회사는 IMS 및 CICS와 같은 메인 프레임 애플리케이션 관리 및 모니터링 환경에서 철학적으로 파생 된 Tuxedo, TopEnd, Encina와 같은 Unix 용 제품을 제공했습니다. Microsoft의 제품은 Microsoft Transaction Server (MTS)였으며 나중에 COM +로 발전했습니다. 이러한 제품의 대부분은 “폐쇄 된”제품 별 통신 프로토콜을 지정하여 “지방”클라이언트를 서버에 상호 연결합니다. Encina의 경우 통신 프로토콜은 DCE RPC이고 MTS의 경우 DCOM 등이었습니다. 1995/96 년에 이러한 전통적인 앱 서버 제품은 처음에는 게이트웨이를 통해 기본 HTTP 통신 기능을 포함하기 시작했습니다. 그리고 선이 흐려지기 시작했습니다.

웹 서버는 더 높은로드, 동시성 및 더 나은 기능 처리와 관련하여 점점 더 성숙해졌습니다. 앱 서버는 점점 더 많은 HTTP 기반 통신 기능을 제공했습니다.

이 시점에서 “앱 서버”와 “웹 서버”사이의 경계는 희미한 것입니다. 그러나 사람들은 강조의 문제로 용어를 계속 다르게 사용합니다. 누군가 “웹 서버”라고 말하면 종종 HTTP 중심의 웹 UI 지향 앱을 생각합니다. 누군가 “앱 서버”라고 말하면 “더 많은 부하, 엔터프라이즈 기능, 트랜잭션 및 큐, 다중 채널 통신 (HTTP + 이상)”이라고 생각할 수 있지만 종종 두 가지 워크로드 요구 사항을 모두 제공하는 동일한 제품입니다.

  • IBM의 “앱 서버”인 WebSphere에는 자체 번들 웹 서버가 있습니다.
  • 또 다른 전통적인 앱 서버 인 WebLogic도 마찬가지입니다.
  • Microsoft의 응용 프로그램 서버 인 Windows (파일 및 인쇄 서버, 미디어 서버 등)는 IIS를 번들로 제공합니다.

답변

많은 사람들이 이전에 말했듯이 웹 서버는 HTTP 탄원을 처리하는 반면 응용 프로그램 서버는 분산 구성 요소의 탄원을 처리합니다. 따라서 차이점을 이해하는 가장 쉬운 방법은 제공하는 프로그래밍 환경과 관련하여 두 제품을 비교하는 것입니다.

웹 서버-> 프로그래밍 환경

IIS : ASP (.NET)

톰캣 : 서블릿

부두 : 서블릿

아파치 : Php, CGI

어플리케이션 서버-> 프로그래밍 환경

MTS : COM +

WAS : EJB

JBoss : EJB

WebLogic Application Server : EJB

중요한 차이점은 응용 프로그램 서버가 일부 분산 구성 요소 기술을 지원 하여 Java 세계의 EJB 또는 Microsoft 플랫폼의 COM + 와 같은 원격 호출 및 분산 트랜잭션과 같은 기능을 제공한다는 것 입니다. Http 서버는 종종 Microsoft 나 Servlet 기반의 경우 ASP (.NET)와 같은 스크립팅과 같은 일부 간단한 프로그래밍 환경을 지원합니다 (JSP 등).

응용 프로그램 서버 영역에서 사용되었던로드 균형 조정, 클러스터링, 세션 페일 오버, 연결 풀링 등과 같은 다른 기능은 웹 서버에서 직접 또는 일부 타사 제품을 통해 사용할 수 있습니다.

마지막으로 Spring Framework와 같은 “경량 컨테이너”로 인해 그림이 더 왜곡되어 응용 프로그램 서버의 목적을 응용 프로그램 서버 인프라없이 더 간단한 방식으로 보완하는 경우가 있습니다. 또한 응용 프로그램의 배포 측면이 분산 구성 요소에서 서비스 패러다임 및 SOA 아키텍처로 이동하고 있기 때문에 기존 응용 프로그램 서버를위한 공간이 줄어 듭니다.


답변

웹 서버와 애플리케이션 서버의 주요 차이점은 웹 서버는 HTML 및 CSS와 같은 정적 페이지를 제공하는 반면 Application Server는 JSP, Servlet 또는 EJB와 같은 서버 측 코드를 실행하여 동적 컨텐츠를 생성하는 것입니다.

어느 것을 사용해야합니까?
웹과 응용 프로그램 서버와 웹 컨테이너의 차이점을 알게되면 언제 사용할 것인지 쉽게 알 수 있습니다. web server정적 웹 페이지를 제공하는 경우 비슷한 Apache HTTPD 가 필요 합니다. 동적 컨텐츠를 생성하기 위해 JSP 및 Servlet 만있는 Java 애플리케이션이있는 경우 web containersTomcat 또는 Jetty 가 필요합니다 . 하지만, 자바 EE의 EJB를 사용하여 응용 프로그램, 분산 트랜잭션, 메시징 및 다른 공상이있는 경우 기능 이 본격적인 풀 필요 이상으로 application server보스는 WebSphere 또는 오라클 웹 로직과 같이합니다.

웹 컨테이너는 Web Server의 일부이고 Web Server는 Application Server의 일부입니다.

응용 프로그램 서버

Web Server는 웹 컨테이너로 구성되는 반면 Application Server는 EJB 컨테이너뿐만 아니라 웹 컨테이너로 구성됩니다.