[번역] 웹 서버와 애플리케이션 서버의 차이점

hee.moon·2022년 12월 23일
0

원문: Difference Between Web server and Application server(31 Aug, 2022)

정처기 공부하다가 갑자기 궁금해서 번역 + a 정리한 내용입니다.

📌 한줄요약: 웹 서버는 정적인 데이터를 처리하는 서버이고, 애플리케이션 서버는 동적 데이터를 처리하는 서버이다.


서버는 네트워크 내에서 프로그래머가 정보와 컴퓨터 프로그램을 보관하고 액세스하는 중앙 저장소다. 웹 서버애플리케이션 서버는 사이트를 제공하는 데 사용되는 일종의 서버이므로, 애플리케이션 서버는 사용자와 Back-end 비즈니스 애플리케이션 간에 수행되는 작업을 처리한다.

1. 웹 서버

데이터 요청을 수락하고 지정된 문서를 보내는 컴퓨터 프로그램이다. 웹 서버는 온라인 콘텐츠가 보관되는 컴퓨터일 수 있다. 기본적으로 인터넷 서버는 사이트를 호스팅하는 데 사용되지만, 레크리에이션, 스토리지, FTP, email 등과 같은 다양한 웹 서버가 존재한다.

1-1. 웹 서버의 예

  • Apache Tomcat(아파치 톰캣) Apache

    아파치 톰캣은 아파치 소프트웨어 재단에서 개발한 서블릿 컨테이너만 있는 웹 애플리케이션 서버(???)다. 톰캣은 웹 서버와 연동하여 실행할 수 있는 자바 환경을 제공하여 자바서버 페이지와 자바 서블릿이 실행할 수 있는 환경을 제공한다. (출처 위키백과)

  • Resin('레진'이라고 읽는다)

    Caucho Technology의 웹 서버 및 Java 애플리케이션 서버. Resin 외에도 Resin Pro는 라이선스가 있는 기업 및 생산 환경에서 사용할 수 있다.

1-2. 아파치 톰캣은 웹 서버? 애플리케이션 서버?

원본 블로그에는 아파치 톰캣이 웹 서버의 예시라고 되어 있지만, 아파치 톰캣은 애플리케이션 서버가 맞다. 잘못 작성된 것 같다. 결론은 Apache가 웹 서버이고 tomcat은 애플리케이션 서버라고 정리할 수 있다.

1-2-1. Apache란?

  • 기본적으로 이 이름은 소프트웨어 단체 이름이다.
  • 아파치 서버는 이 단체에서 후원하는 커뮤니티에서 만든 http 웹 서버를 의미한다.

1-2-2. Tomcat이란?

  • 톰캣은 애플리케이션 서버다.
  • 클라이언트 요청이 있을 때 내부의 프로그램을 통해 결과를 만들어내고 이를 다시 클라이언트에 전달하는 역할을 하는 것이 웹 컨테이너이다. 톰캣은 이 컨테이너 기능이 있다.

참조: 톰캣과 아파치를 구별하지 못하는 사람을 위해

1-3. 서블릿(Servlet)

  • 정식 명칭은 자바 서블릿(Java Servlet)이다.
  • 자바를 사용해 웹 페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양을 말한다.
  • 웹 서버의 성능을 향상하기 위해 사용되는 자바 클래스의 일종이다.
  • 자바 코드 안에 HTML을 포함하고 있다. ↔ JSP는 HTML 문서 안에 Java 코드를 포함하고 있다.

2. 애플리케이션 서버

웹 컨테이너(Web container)와 EJB 컨테이너를 포함한다. 애플리케이션 서버는 ★★★★★엔터프라이즈 애플리케이션의 실행 환경을 구성한다. 웹 서버와 함께 애플리케이션 서버를 사용할 경우 강력한 기능을 수행할 수 있다.

애플리케이션 서버는 사용자, IT 서비스 및 조직을 위한 응용 프로그램 및 서비스를 호스팅하고 운영 체제를 배치하는 방법을 의미하는 합리적인 서버일 수 있다. 실제 운영 사이트에서 문제가 생길 경우 장애처리를 해야하는 상황이 발생하는데 Weblogic과 같은 애플리케이션 서버는 Oracle과 같은 제조사(?)를 통해 기술지원을 받을 수 있기 때문이다. (추가내용 출처)

애플리케이션 서버는 프로토콜 및 RPC/RMI 프로토콜과 유사한 사용자 인터페이스를 사용한다.

2-1. 애플리케이션 서버의 예

  • Weblogic(Oracle의 웹로직 서버)
  • JBoss(Red Hat의 자회사인 Jboss가 개발한 Jboss Application Server)
  • Websphere(IBM의 웹스피어)

2-2. 웹 컨테이너

  • 서블릿 컨테이너라고도 부른다.
  • 웹 서버의 컴포넌트 중 하나로 자바 서블릿과 상호작용한다.
  • 웹 컨테이너는 서블릿의 생명주기를 관리하고, URL과 특정 서블릿을 맵핑하며 URL 요청이 올바른 접근 권한을 갖도록 보장한다.

2-3. EJB(Enterprise JavaBeans) 컨테이너

  • 기업환경의 시스템을 구현하기 위한 서버측 컴포넌트 모델이다.
  • 주로 웹 시스템에서 JSP는 화면 로직을 처리하고, EJB는 비즈니스 로직을 처리하는 역할을 한다. (EJB의 종류 확인하기)

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

No웹 서버애플리케이션 서버
1웹 컨테이너만 포함한다.웹 컨테이너와 EJB 컨테이너를 포함한다.
2정적 콘텐츠에 유용하거나 적합하다.동적 콘텐츠에 적합하다.
3더 적은 리소스를 소비하거나 활용한다.더 많은 리소스를 활용한다.
4웹 응용 프로그램의 실행 환경을 조성한다.엔터프라이즈 애플리케이션을 위한 실행 환경을 조성한다.
5멀티스레딩이 지원된다.멀티스레딩이 지원 X
6용량이 애플리케이션 서버보다 작다.상대적으로 용량이 크다.
7HTML과 HTTP 프로토콜을 사용한다.HTTP와 RPC/RMI프로토콜 뿐아니라 GUI도 사용한다.
8리소스가 많이 사용되지 않는 프로세스가 지원된다.리소스 집약적인 프로세스가 지원된다.
9트랜잭션과 커넥션 풀링 지원 X트랜잭션과 커넥션 풀링 지원
10결함에 대한 내구성(capacity of fault tolerance)이 낮다.상대적으로 결함에 대한 내구성이 높다.
11Apache HTTP Server, NginxJBoss, Glassfish
profile
Frontend Engineer

0개의 댓글