본문 바로가기

CS BASIC/정보시스템 일반

[CS BASIC] 웹 서버(Web Server), 웹 애플리케이션 서버(WAS, Web Application Server), 웹 애플리케이션(Web Application)

개요

오늘은 웹 서버(Web Server), 웹 애플리케이션 서버(WAS, Web Application Server) 그리고

웹 애플리케이션(Web Application)에 대해서 알아보도록 하겠습니다.

 

오늘의 포스팅은 아래와 같은 내용으로 구성됩니다.

  • 웹 서버 (Web Server)란?
  • 웹 애플리케이션 서버(WAS, Web Application Server)란?
  • 웹 애플리케이션(Web Application)

웹 서버 (Web Server)란?

웹 서버란 월드 와이드 웹(WWW)에서 HTTP 프로토콜에 맞추어 

고유한 URI 또는 URL을 통해 HTML이라는 마크업 문서를 볼 수 있도록 하는 서버입니다.
전 세계에 있는 각 컴퓨터는 공유기 또는 자체 네트워크 설정을 통하여 

IP주소 + 포트 번호의 조합으로 다른 컴퓨터와 통신할 수 있는데요.

보통 가정에 있는 개인용 PC에서는 별도로 설정한 게 아니라면, 

컴퓨터 간의 통신이 모두 열려 있지는 않습니다. (막혀있음!)

 

아무래도 개인용 컴퓨터가 아무 데서나 접근이 가능하다면 심각한 정보 침해 문제가 야기될 수 있기 때문이기도 하지만,
인터넷 서비스를 제공하는 ISP 같은 회사 입장에서 보면, 

일반 PC라고 하더라도 기술자에 의해 서버로 변신할 수도 있습니다.

(가정용이랑 서버용이 요금 체계가 서로 다른 문제 등...)

 

그러므로 일반적으로는 이론상 서로 다른 컴퓨터는 서로 통신이 가능하도록 설계되었더라도,

가정에 보급된 PC에서만큼은 제한적으로 통신할 수 있게 되어 있죠.

 

그러나, 컴퓨터와 프로그래밍 공부를 하신 분들이라면 이러한 설정을 열어두어 외부와 통신할 수 있다는 것을 알고 계실 것입니다.

 

자신의 컴퓨터의 IP주소 + 포트 번호를 조합해두고 포트 포워딩을 열어둔다면 이 주소를 바탕으로 데이터를 주고받을 수 있는데요.

 

우리가 평소에도 자주 찾는 구글, 네이버 같은 경우에도 별도로 부여받은 IP주소(xx.xxx.xx.xx)가 있는데,

일반인들이 이러한 주소를 일일이 기억해두고 사용하긴 어려우니 

약속된 주소(ex. https://www.naver.com)를 입력하면 실제 서버로 연결을 시켜줍니다.

그리고 이렇게 연결된 서버에서는 보통 `웹서버(Web Server)`라고 부르는 프로그램이 

사용자의 요청에 따라 HTML 문서를 반환해주는 역할을 합니다.

 

그렇기에 일반 사용자는 이러한 웹서버로부터 문서(HTML)를 받고, 작성하고, 공유하고 할 수 있는 것이죠.

 

즉, 전 세계를 무대로 하는 인터넷 환경 중 특히 월드 와이드 웹(WWW) 환경에서 

가장 앞단에서 사용자와 상호작용하는 프로그램이 웹서버(Web Server)입니다.

웹서버는 사용이 비교적 굉장히 쉽습니다. 

보통 웹서버를 제작해 공급하는 회사에서 나온 프로그램을 내려받거나, 설치하면 사용할 수 있는데요.

 

윈도우와 같은 GUI 환경에서는 설치 프로그램 등을 통해 더 편리하게 사용할 수 있기도 하고,

리눅스 기반의 CLI 환경에서는 명령어를 통해 설치 및 사용할 수도 있습니다.

아래는 웹 서버로 사용할 수 있는 프로그램들입니다.

  • Nginx
  • Apache HTTP Server
  • Microsoft IIS (Internet Information Services)
  • Caddy
  • Lighttpd (Lighty)
  • Apache Traffic Server

 

이처럼 웹 서버는 손쉬운 설치 및 사용할 수 있지만, 한 가지 한계점이 존재합니다.

바로 HTML 문서를 중심으로 기능이 설계되었기 때문에 서버에서 복잡한 비즈니스 로직을 처리하거나

데이터베이스와 통신하여 정보를 제공하기 어렵다는 점입니다.

따라서, 이러한 한계점을 극복하고자 웹 애플리케이션 서버(WAS, Web Application Server)가 등장하게 되었습니다.


웹 애플리케이션 서버(Web Application Server)란?

WAS(Web Application Server)는 웹 애플리케이션을 실행하는 데 사용되는 소프트웨어입니다.

웹 서버에서는 복잡한 로직을 처리하거나, 자원 관리 등의 중요한 작업을 처리할 수 없었습니다.

그러므로, WAS는 이러한 작업을 처리하고 서비스를 제공할 수 있도록 설계된 프로그램입니다.

WAS의 대표적인 기능은 다음과 같습니다.

기능 설명
Servlet 및 JSP 컨테이너
(Servlets and JSP containers)
Java Servlet과 JavaServer Pages(JSP)를 실행하기 위한 컨테이너를 제공.
자원 관리
( Resource Management )
WAS는 웹 애플리케이션에 필요한 자원 (데이터베이스 연결, 스레드 관리, 세션 관리, 
자원 풀링 등)을 관리
보안 
( Security )
웹 애플리케이션의 보안을 관리 ( 사용자 인증, 권한 부여, 암호화, 보안 설정 관리 등을 포함 )
트랜잭션 관리 
( Transaction Management )
데이터베이스 트랜잭션을 관리하고 지원하여 데이터의 일관성과 무결성을 보장 
( 분산 트랜잭션 처리 및 롤백 기능을 포함 )
클러스터링 및 로드 밸런싱 
( Clustering and load balancing )
대규모 웹 애플리케이션을 위한 클러스터링 및 로드 밸런싱 기능을 제공 
( 서버의 부하를 감소시키고, 가용성을 향상함 )

 

하지만 순수하게 WAS만으로는 사용자에게 온전하게 모든 서비스를 제공하기는 어렵습니다.

현대 사회에서 필요로 하는 복잡한 기능과 서비스를 제공하고 대응하려면 보다 고도화된 로직을 가진 프로그램이 필요합니다.

왜냐하면, WAS가 잘 만들어졌다고 하더라도 이 프로그램만으로 모든 복잡한 요구사항을 처리하기는 어렵기 때문입니다.

아래는 웹 애플리케이션 서버(WAS)로 사용할 수 있는 프로그램들입니다.

  • Apache Tomcat
  • Jetty
  • Red Hat JBoss Enterprise Application Platform (JBoss EAP)
  • IBM WebSphere Application Server (WAS)
  • Oracle WebLogic Server
  • Apache Geronimo

웹 애플리케이션 (Web Application) 이란?

따라서, 이러한 복잡한 기능을 구현하고 온전한 서비스를 제공하기 위하여 

별도의 프로그램, 즉 웹 애플리케이션(Web Application)이 등장하게 됩니다.
웹 애플리케이션은 웹 애플리케이션 서버(WAS, Web Application Server)에서 

처리하기 어려운 복잡한 작업을 수행하는 역할을 담당합니다.

 

웹 애플리케이션은 그 종류가 대단히 많은데요.

오늘날 존재하는 대부분의 웹 애플리케이션은 Java를 기반으로 개발된 것이 많은데,

그중에서도 Java EE 규격을 만족하도록 경량화된 프레임워크, Spring을 통해 웹 애플리케이션을 개발하는 것이 대중적입니다.

하지만, 이러한 웹 애플리케이션은 Java 기반의 애플리케이션 말고도 다음과 같은 종류가 있습니다.

  • Java (Kotlin) + Spring, Spring Boot
  • Python + Django, Flask
  • Ruby + Ruby on Railss
  • JavaScript + Node.js ( with Express.js )
  • Go + Gin, Echo
  • PHP + Laravel, Symfony
  • C#  + ASP.NET

정리

오늘날에는 정말 다양한 종류의 웹 서비스가 있고, 그 중심에는 웹 애플리케이션이 있습니다.

그리고 이 웹 애플리케이션은 그 자체만으로 온전히 동작하기 어렵기에,

 

프로그램마다 특화된 영역을 처리할 수 있도록 역할을 분리하고 연결하여 서비스를 제공하고 있습니다.

이러한 웹 서비스의 구조, 즉 아키텍처(Architecture)를 그려보자면 아래와 같이 표현할 수 있겠습니다.

 

 


참고자료

https://velog.io/@bky373/Web-%EC%9B%B9-%EC%84%9C%EB%B2%84%EC%99%80-WAS

 

[Web] 웹 서버와 WAS의 개념 이해

인터넷을 기반으로 한, 정보를 공유 검색할 수 있게 하는 서비스URL(주소), HTTP(통신 규칙), HTML(내용네트워크를 통해 클라이언트에게 정보나 서비스를 제공하는 컴퓨터 시스템인터넷을 기반으로

velog.io