맨위로가기 타임라인 바로가기

웹 애플리케이션 서버

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
타임라인 바로가기

1. 개요

웹 애플리케이션 서버는 웹 브라우저를 통해 접근하는 애플리케이션의 실행 환경을 제공하는 서버를 의미한다. 1990년대 후반 인터넷 보급과 함께 웹 브라우저를 사용하는 전자 상거래 등의 수요가 증가하면서, 서버 측에서 애플리케이션을 처리하는 시스템이 요구되었고, 웹 서버와 애플리케이션 서버를 분리하는 3계층 구조가 실용화되었다. 웹 애플리케이션 서버는 시스템 확장성, 세션 관리, 트랜잭션 관리, 보안 기능 등을 제공하며, 자바 EE, .NET, PHP 등 다양한 기술을 기반으로 구현된다. 또한, 온-프레미스, 클라우드 환경에서 배포되며, 모바일 애플리케이션 서버는 모바일 기기에 데이터를 제공하고, 데이터 라우팅, 오케스트레이션, 인증 서비스, 오프라인 지원, 보안 등의 기능을 제공한다.

더 읽어볼만한 페이지

  • 미들웨어 - 마이크로소프트 비즈토크 서버
    마이크로소프트 비즈토크 서버는 다양한 시스템 통합 및 비즈니스 프로세스 자동화를 지원하는 서버 소프트웨어로, 여러 버전이 출시되었으며 어댑터, 가속기 등의 기능을 제공하고 대한민국 여러 산업 분야에서 활용되었으나 클라우드 기반 솔루션의 등장으로 입지가 변화하고 있다.
  • 미들웨어 - 프라우드넷
    프라우드넷은 게임 서버 및 네트워크 개발에 사용되는 미들웨어로, 클라이언트-서버 및 P2P 네트워킹 기능을 제공하며, 대규모 동시 접속을 지원하도록 성능, 안정성, 유연성에 초점을 맞춰 개발되었다.
  • 서버 - 슈퍼 서버
    슈퍼 서버는 TCP 래퍼를 통해 접근 권한을 확인하고 필요에 따라 다른 서버 프로그램을 시작하여 메모리 사용량 감소 및 시스템 관리 효율성을 높이지만, 높은 연결 요청 빈도에서는 성능 저하를 유발할 수 있으며, inetd, launchd, systemd, ucspi-tcp, xinetd 등이 대표적인 구현체이다.
  • 서버 - 씨마이크로
    씨마이크로는 2007년 설립되어 투자 유치 후 AMD에 인수된 서버 개발 회사로, SM10000, SM15000 시리즈 등의 제품을 개발하고 버라이즌과의 협력 및 여러 수상 경력을 보유하고 있다.
  • 컴퓨터 네트워킹 - 유니캐스트
    유니캐스트는 데이터를 단일 목적지로 전송하는 방식으로, 브로드캐스트 및 멀티캐스트와 대비되며, 개인적 또는 고유한 리소스가 필요한 네트워크 프로세스에 사용되지만, 대량 데이터 전송 시 비용이 증가하는 단점이 있다.
  • 컴퓨터 네트워킹 - 노드 (네트워크)
    노드(네트워크)는 데이터 통신에서 데이터를 주고받는 장치를 의미하며, 물리적 네트워크 노드, 인터넷 노드, 통신 네트워크 노드, 분산 시스템 노드, 네트워크 가상화 노드 등으로 분류된다.
웹 애플리케이션 서버
개요
종류서버 소프트웨어
용도애플리케이션 호스팅
상세 정보
역할애플리케이션 실행 환경 제공
기능컴포넌트 기반
미들웨어 서비스 제공
데이터 관리
보안
트랜잭션 관리
로드 밸런싱
프로토콜다양한 프로토콜 지원 (HTTP, SMTP 등)
상호 작용클라이언트 애플리케이션과 비즈니스 로직 공유
예시JBoss
WebLogic
WebSphere
GlassFish
웹 서버와의 관계
역할 분담웹 서버는 정적 콘텐츠 제공, 애플리케이션 서버는 동적 콘텐츠 생성 및 비즈니스 로직 처리
웹 애플리케이션 서버 (WAS)
특징웹 애플리케이션에 특화된 애플리케이션 서버
주요 기능웹 서버 기능 포함
서블릿 컨테이너 제공
예시Tomcat
Jetty
참고 사항
엔터프라이즈 환경대규모 엔터프라이즈 시스템에서 중요한 역할 수행
개발 생산성 향상개발자가 비즈니스 로직에 집중할 수 있도록 지원

2. 역사

1990년대 초 클라이언트-서버 기반 시스템에서는 클라이언트 측에 기능을 갖춘 리치 클라이언트형 시스템 구축이 주류를 이루었다. 이는 관계형 데이터베이스 관리 시스템(RDBMS) 등을 포함한 서버가 매우 비쌌고, 변경이 쉽지 않았기 때문이다. 업무 프로세스가 변경되면 단말기 프로그램 갱신이 필요했지만, 이용자가 사내 인원으로 한정되어 큰 문제가 되지 않았다.

1990년대 후반, 인터넷 보급으로 웹 브라우저를 사용한 전자 상거래 등의 수요가 확산되었다. 웹 브라우저를 클라이언트로 사용하는 시스템에서는 서비스 대상자가 불특정 다수가 되어, 시스템 변경에 맞춰 사용자 환경을 갱신하는 것은 사실상 불가능했다. 이에 따라 서버 측에 업무 프로세스 등 애플리케이션을 준비하는 것이 요구되었다. 이러한 요구에 발맞춰 서버 측 컴퓨터의 고성능화, 네트워크 고속화, 자바 등의 기술 진전으로 서버에서 다양한 처리를 수행하는 시스템이 일반화되었다.

인터넷을 이용한 클라이언트-서버 시스템에서는 서버 측에 다양하고 많은 기능이 요구되었다. 전자 상거래 사이트를 예로 들면, 상품 정보 표시, 상품 구매, 전자 결제 등의 구현을 위해 대화형 처리, 인증, 보안, 안정성, 가용성 등을 보장해야 했다.

서버가 고성능화되었지만, 대규모 시스템에서는 이러한 요구에 모두 대처하기 어려워, 기존 웹 서버만으로 처리해 온 내용을 웹 서버와 '''애플리케이션 서버'''로 분리하는 3계층 구조 시스템이 실용화되었다. 1998년경부터 본격적인 제품이 등장하기 시작했다.

2. 1. 1990년대 초반: 클라이언트/서버 시스템

1990년대 초반 클라이언트/서버(C/S) 시스템에서는 클라이언트에 화면을 구성하는 각종 기능을 제공하는 Thick 클라이언트 구조가 대세였다. 하지만, RDBMS를 포함하는 서버 가격은 매우 비싸고 변경이 편리하지 않은 단점이 있었다. 따라서, 업무 프로세스가 변경될 경우 화면 프로그램을 교체하는 경우가 있었으나, 그 당시는 사용자가 주로 인트라넷이었기 때문에 큰 어려움이 없었다.

1990년대 초반의 클라이언트-서버 기반 시스템에서는, 클라이언트 측을 전용 단말기로 하고, 각종 기능을 갖춘 리치 클라이언트형 시스템 구축이 주류를 이루었다. 이는 관계형 데이터베이스 관리 시스템(RDBMS) 등을 포함한 서버가 매우 비쌌고, 변경(교체)이 쉽지 않았기 때문이다.[2]

그 때문에, 업무 프로세스가 변경되면, 단말기 측의 프로그램을 갱신하거나 교체해야 했지만, 대부분 이용자는 사내 인원 등으로 한정되어 큰 문제가 되지 않았다.[2]

2. 2. 1990년대 후반: 인터넷과 웹 애플리케이션 서버의 등장

1990년대 초반 클라이언트/서버(C/S) 시스템에서는 클라이언트에 화면 구성 기능을 제공하는 Thick 클라이언트 구조가 대세였다. 하지만, RDBMS를 포함하는 서버는 매우 비싸고 변경이 쉽지 않았다. 업무 프로세스가 바뀌면 화면 프로그램을 교체해야 했지만, 당시 사용자는 주로 인트라넷 환경이었기 때문에 큰 어려움은 없었다.

1990년대 후반 인터넷 보급과 함께 웹 브라우저를 사용한 전자 상거래 요구가 증가했다. 웹 브라우저를 주로 사용하는 시스템은 사용자가 불특정 다수이므로 시스템 변경에 따른 사용자 화면 수정은 거의 불가능했다. 이러한 요구와 더불어 서버 고성능화(UNIX 서버 등 저렴하고 고성능 서버 등장), 초고속 네트워크 등장, 자바 등 프로그램 언어 처리 능력 향상으로 애플리케이션 위치가 클라이언트에서 서버로 전환되었다. 1990년대 후반에는 웹 브라우저를 화면으로 사용하면서 서버에서 애플리케이션을 수행하는 시스템이 일반화되었다.

서버가 고성능화되었지만, 대규모 시스템에서는 웹 서버만으로 모든 요구에 대처하기 어려웠다. 그래서 기존 웹 서버가 처리하던 내용을 웹 서버와 '''애플리케이션 서버'''로 분리하여, 더 많은 트랜잭션 처리에 대응할 수 있는 방식(3계층 구조 시스템)이 실용화되었다. 1998년경부터 본격적인 제품이 등장하기 시작했다.

3. 웹 3계층 구성

일반적인 웹 시스템은 "웹 3계층 구성"으로 설계되는 경우가 많다. 웹 3계층은 다음 3개의 계층으로 구성된다.



웹 시스템을 3개의 계층으로 나누어 수직 분산함으로써, 각 계층 단위로 스케일 아웃(서버 증설로 처리 성능 향상)이 가능해져 확장성 및 비용 효율성이 크게 향상되었다.

일반적으로 3계층 시스템은 인터넷 등장 이전의 고전적인 비(非) 웹 애플리케이션 등에서 자주 사용되었던, 클라이언트 및 백엔드 측에 비즈니스 로직을 구현하는 방식(2계층 시스템)에 비해 시스템의 변경, 갱신, 증강 등이 용이하여 유연성이 높은 시스템 구성으로 일컬어진다. 특히 웹 애플리케이션화로 인해 클라이언트(웹 브라우저)와 애플리케이션 계층을 분리함으로써, 고전적인 2계층 시스템에서 시스템 변경 시 "고가의 기간 데이터베이스 자체 및 해당 서버의 필요 제원 변경에 맞춰 교체해야 한다"라는 문제가 해소되어 도입 비용이 저렴해졌다. 다만, 그 대신 웹 브라우저의 제한 사항에 영향을 받게 되었다.

4. 웹 애플리케이션 서버에 요구되는 기능

웹 애플리케이션 서버는 다음 세 가지 기본 기능을 제공한다.



하지만 웹 애플리케이션 서버의 기능에 대한 엄격한 정의는 없으므로, 이러한 기능을 모두 갖추지 않은 서버도 존재한다. 또한, 각 업체들은 기본 기능 외에도 다양한 기능을 추가하여 강화하고 있다.

웹 애플리케이션 서버는 다음과 같은 요건을 충족하기 위해 제작 및 구현된다.

기능 요건요건 설명
시스템의 확장성과 가용성소비자 대상 전자 상거래 시스템의 경우, 처리 요청 수가 매우 많아질 수 있으므로(분당 수만 건), 수평(서버 추가)/수직(기능 단위로 서버 분할) 부하 분산을 고려해야 한다. 웹 애플리케이션 서버에서는 인증 기능과 데이터베이스를 LDAP 서버(디렉터리 서비스)로 분할하는 것이 일반적이다. 수평적으로는 서버를 동적으로 늘려 대응하고, 로드 밸런서 및 웹 서버의 분배 기능으로 서버 당 처리 요청 수를 조정한다. 서버를 늘리고 분산시켜 시스템 가용성을 확보한다.
세션 관리 기능시스템 접속이나 처리 요청이 증가하면, 단일 웹 애플리케이션 서버로는 서비스 제공이 불가능해진다. 따라서 웹 애플리케이션 서버 프로세스를 늘리거나 서버 자체를 늘리는 수평 분산이 필요하다. 로드 밸런서의 세션 퍼시스턴스 기능으로 진행 중인 처리가 특정 서버에 할당되지만, 서버에 이상이 생기면 다른 서버로 처리가 넘어간다. 세션 관리 기능을 통해 재로그인이나 처음부터 다시 시작하는 것이 아니라, 특정 위치까지 롤백하여 정보를 인계함으로써 사용자에게 스트레스 없이 처리를 계속할 수 있게 한다.
트랜잭션 관리 기능웹 브라우저 사용 시 통신 프로토콜은 HTTP를 사용하며, 트랜잭션은 요청-응답의 단발 형태가 된다. 따라서 일련의 액세스를 일관성 있게 트랜잭션으로 관리해야 한다. 이러한 트랜잭션 일관성을 유지하는 트랜잭션 모니터 기능도 필요하다.
트랜잭션 고속 처리 기능기존 CGI와 비교하여, 서버 사이드 Java (Jakarta EE) 및 스크립트 언어 환경에서는 프로세스 내 처리가 스레드 단위로 시분할 처리된다. 프로세스 생성은 부하가 크지만, 하나의 Java 프로세스 내에 여러 스레드를 동시에 실행할 수 있어 효율적이며, 필요 스펙을 줄일 수 있다.
데이터베이스 연결성/응답성 기능사용자 요청 처리마다 데이터베이스 연결 및 해제를 반복하면 큰 병목 현상이 발생한다. 이를 피하기 위해 JDBC 풀링처럼 DB 연결을 유지하고 재사용하는 기능을 제공한다.
보안 기능애플리케이션 서버는 처리에 필요한 다양한 보안 요건을 갖춰야 한다. HTTP 기반 보안(TLS 채용, 전자 인증)뿐 아니라, 트랜잭션 기반으로도 보안을 확보해야 한다.
시스템 개발 기간 단축을 위한 공통 프레임워크 기반 채용웹 애플리케이션 채용의 이점은 Java 등 프로그래밍 언어애플리케이션 프레임워크를 통해 개발 공정을 간소화하고 단축하는 것이다. 웹 애플리케이션 서버는 개발 환경과 프로그램군 이용 환경을 정비하여 이러한 이점을 활용할 수 있게 한다.


5. 분류

웹 애플리케이션 서버는 크게 마이크로소프트 제품과 Java 기반 제품으로 나눌 수 있다. Windows 플랫폼에서 동작하는 대표적인 애플리케이션 서버는 인터넷 정보 서비스(IIS)이다.[4]

5. 1. 자바 EE (Jakarta EE) 표준 준수 웹 애플리케이션 서버

자바 EE는 자바의 기본적인 기능을 정의한 자바 SE에 웹 서버 역할을 추가한 것으로, 자바 애플리케이션을 동작시킬 수 있는 컨테이너 등을 표준화한 스펙이다. 자바 EE 표준준수 웹 애플리케이션 서버는 자바 EE 스펙을 수용하는 웹 애플리케이션 서버이다.

자바 EE 표준기반 웹 애플리케이션에서 동작하는 프로그램 언어는 자바이다. 일반적으로 웹 모듈은 자바 서블릿 또는 JSP(Java Server Page)로 구성하고, 비즈니스 모듈은 EJB(Enterprise Java Beans)로 구성한다.

자카르타 EE(과거의 Java EE 또는 J2EE)는 Java 애플리케이션 서버의 핵심 API 및 기능을 정의한다.

자카르타 EE 인프라는 논리적 컨테이너로 분할된다.

  • EJB 컨테이너: 엔터프라이즈 빈은 트랜잭션을 관리하는 데 사용된다. Java BluePrints에 따르면, 애플리케이션의 비즈니스 로직은 엔터프라이즈 빈에 위치한다. 이는 선언적 트랜잭션 관리와 같은 많은 기능을 제공하고 애플리케이션의 확장성을 향상시키는 모듈식 서버 구성 요소이다.
  • 웹 컨테이너: 웹 모듈에는 자카르타 서블릿과 자카르타 서버 페이지 (JSP)가 포함된다.
  • JCA 컨테이너 (자카르타 커넥터)
  • JMS 제공자 (자카르타 메시징)


; 정의

Jakarta EE는 표준 기능 세트인 Java Platform, Standard Edition (Java SE)에 웹 서버에 필요한 각종 기능을 추가한 표준 사양이며, 이 사양을 준수하는 것을 Jakarta EE 애플리케이션 서버라고 칭한다.

; 보충 설명

Jakarta EE 애플리케이션 서버 제품에서 애플리케이션 작동을 규정하는 프로그래밍 언어로 채택된 것은 Java이다. 일반적으로 웹 모듈은 JavaServer Faces (JSF) 또는 Facelets로 구축되며, 백엔드 프로그램은 Enterprise JavaBeans (EJB), 데이터 액세스 모듈은 JPA 사양을 준수하여 개발된다. Java Beans는 썬 마이크로시스템즈(Sun Microsystems)의 Java 아키텍처상에서 클래스의 부품화 및 그 조합 방법을 규정하는 기술 사양이다.

또한, 이 웹 모듈 부분만의 한정 사양으로 Web Profile 서브세트가 존재하며, 이 사양을 준수하는 소형 버전으로 아파치 스트럿츠(Apache Struts) 등이 있다. 이 프레임워크에도 많은 종류가 있으며, 서로 영향을 주고받으며 발전하고 있다.

5. 2. 자바 기반이나 자바 EE 비준수 웹 애플리케이션 서버

5. 3. Microsoft .NET 기반 웹 애플리케이션 서버

Microsoft는 미들 티어 애플리케이션 및 서비스 인프라를 윈도우 서버 운영 체제에, .NET Framework 기술을 애플리케이션 서버 역할에 위치시킨다.[4] 윈도우 애플리케이션 서버 역할에는 웹 서버 지원을 제공하는 인터넷 정보 서비스(IIS), 애플리케이션 지원을 제공하는 .NET Framework, ASP.NET을 통한 서버 측 스크립팅, 애플리케이션 컴포넌트 통신을 위한 COM+, 멀티스레드 처리를 위한 메시지 큐, 애플리케이션 통신을 위한 Windows Communication Foundation(WCF)이 포함된다.[5]

Windows 플랫폼에서 동작하는 대표적인 애플리케이션 서버는 인터넷 정보 서비스(IIS)이다. IIS는 웹 서버와 애플리케이션 서버 두 가지 기능을 모두 가지고 있기 때문에, 웹 서버 또는 애플리케이션 서버로 불린다. Netcraft 조사에 따르면 2013년 3월 현재, IIS는 전 세계 사이트의 18.01%에서 가동되고 있다.

IIS에서 동작하는 프레임워크로는, 윈도우 2000 이후의 안정성과 Windows에서의 사용자 인증 기능을 바탕으로, 많은 기능을 포함한 .NET Framework가 있다.

.NET Framework와 유사한 오픈 소스 및 상용 애플리케이션 서버도 있다. Base4 애플리케이션 서버나 Zope가 그 예이다. 마이크로소프트의 Windows Communication Foundation은 애플리케이션 서버라기보다는 통신 프레임워크나 미들웨어에 가깝다. 다만, .NET 연동의 경우 Windows의 사용자 인증 기능과 LDAP을 이용하기도 한다.

또한, 크로스 플랫폼인 .NET Core 및 ASP.NET Core의 소스 코드가 MIT License로 공개됨에 따라, IIS에 의존하지 않고 .NET 기반의 애플리케이션 서버를 구축하는 것도 가능하게 되었다.

5. 4. PHP 웹 애플리케이션 서버

PHP 애플리케이션 서버는 PHP 애플리케이션을 실행하고 관리한다.

  • 젠드 서버는 젠드에서 개발되었으며, PHP 기반 애플리케이션을 위한 애플리케이션 서버 기능을 제공한다.
  • 로드러너는 Spiral Scout에서 개발되었으며, Go로 작성된 고성능 PHP 애플리케이션 서버, 로드 밸런서 및 프로세스 관리자이다.

5. 5. 기타 웹 애플리케이션 서버



; 정의

Jakarta EE 이외의 언어 세트 및 프레임워크를 사용하여 비즈니스 로직을 구현할 수 있는 애플리케이션 서버를 말한다.

6. 배포 모델

애플리케이션 서버는 다음과 같은 방식으로 배포될 수 있다.


  • 온-프레미스
  • 클라우드
  • 프라이빗 클라우드
  • PaaS (Platform as a Service)

7. 모바일 애플리케이션 서버

모바일 애플리케이션 서버는 모바일 기기에 데이터를 제공한다.

7. 1. Mobile features

모바일 애플리케이션 서비스의 핵심 기능은 다음과 같다.

  • '''데이터 라우팅''' – 대역폭 및 배터리 요구 사항을 최소화하기 위해 일부 비즈니스 로직과 함께 데이터를 더 작은 표현 상태 전송 객체로 패키징한다.
  • '''오케스트레이션''' – 여러 소스 간의 트랜잭션 및 데이터 통합.
  • '''인증 서비스''' – 백엔드 시스템에 대한 보안 연결은 모바일 미들웨어를 통해 관리된다.
  • '''오프라인 지원''' – 장치가 연결되어 있지 않더라도 사용자가 데이터에 접근하고 사용할 수 있도록 한다.
  • '''보안''' – 데이터 암호화, 장치 제어, SSL, 통화 로깅

7. 2. Mobile challenges

대부분의 기업들은 표준 기반의 IT 인프라가 벤더, 제품, 기술에 관계없이 연결되도록 설계되었음에도 불구하고, 모바일 기기가 다음과 같은 기술적 과제를 추가하기 때문에 백엔드 시스템을 모바일 애플리케이션에 연결하는 데 어려움을 겪는다.[6]

  • '''제한된 자원''' – 모바일 기기는 전력 및 대역폭이 제한적이다.
  • '''간헐적인 연결''' – 셀룰러 서비스와 와이파이 연결은 종종 지속적이지 않다.
  • '''보안 어려움[7]''' – 이동성과 BYOD 관행은 모바일 기기를 안전하게 유지하기 어렵게 만든다.

참조

[1] 웹사이트 What is an App Server? https://www.theserve[...] 2022-02-06
[2] 웹사이트 App server, Web server: What's the difference? https://www.infoworl[...] 2022-06-14
[3] 서적 Designing Data-Intensive Web Applications Morgan Kaufmann 2003
[4] TechNet Application Server https://docs.microso[...]
[5] TechNet Application Server Role https://docs.microso[...]
[6] 웹사이트 Why Mobile App Development Requires More than an SOA https://appdeveloper[...] 2022-02-06
[7] 웹사이트 A Billion Smartphone Users May Be Affected by the Heartbleed Security Flaw https://www.forbes.c[...] 2022-02-06
[8] 웹인용 What is an App Server? http://www.theserver[...] 2010-02-28

관련 사건 타임라인

( 최근 20개의 뉴스만 표기 됩니다. )



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com