[ 230330 TIL : UMC Study - WS, WAS ]

junjun·2023년 3월 30일
0

UMC Study 내용 중

Web Server와
Web Application Server에 대해 조사해본 내용이다.

Web Sever란 무엇인가?

웹 서버는 인터넷에서 웹 페이지와 같은 웹 콘텐츠를 제공하는 컴퓨터 프로그램 또는 하드웨어 입니다.

  • 프로그램(소프트웨어) 측면에서 웹 서버는 기본적으로 웹 사용자가 어떻게 웹 서버의 파일들에 접근하는지 관리합니다.
  • 하드웨어 측면에서 웹 서버는 웹 서버의 소프트웨어와 웹 사이트의 파일들(HTML 문서, 이미지, CSS Stylesheets, JS 파일 등)을 저장하는 컴퓨터입니다. 웹 서버는 인터넷에 연결되고 인터넷에 연결된 다른 기기들이 웹 서버의 데이터를 주고 받을 수 있도록 합니다.

웹 서버는 동적 웹 서버와 정적 웹 서버로 구분됩니다.

  • 정적 웹 서버는 HTTP 서버 (소프트웨어)와 컴퓨터(하드웨어)로 구성되어 있습니다. 서버가 단순히 요청한 파일을 브라우저에 전송하기 때문에 정적이라고 합니다.
  • 동적 웹 서버는 정적 웹 서버와 추가적인 소프트웨어로 구성되어 있습니다. 서버가 브라우저에 요청한 파일을 전송하기 전에, 서버가 이를 업데이트하기 때문에 동적이라고 합니다

Web Server의 예시?

  1. Apache HTTP Server: 가장 널리 사용되는 웹 서버 중 하나로, 무료 오픈 소스 소프트웨어입니다. 다양한 운영 체제에서 실행될 수 있으며, 많은 기능과 모듈을 지원합니다.

  2. Nginx: 또 다른 인기 있는 웹 서버로, 높은 성능과 안정성을 제공합니다. Apache보다 가볍고 적은 자원을 사용하며, 동시 접속자 수가 많을 때 더 빠른 응답 속도를 보입니다.

  3. Microsoft IIS(Internet Information Services): 마이크로소프트에서 개발한 웹 서버로, 윈도우 운영 체제에서 실행됩니다. ASP.NET과 같은 마이크로소프트 기술과 통합되어 있으며, Windows 서버에서 실행되는 .NET 응용 프로그램을 지원합니다.

  4. Lighttpd: 경량 웹 서버로, 빠른 응답 시간과 적은 메모리 사용량으로 알려져 있습니다. Apache나 Nginx와는 다르게 모듈화된 설계로, 필요한 기능만 활성화하여 사용할 수 있습니다.

  5. Caddy: 최근에 인기를 얻고 있는 웹 서버로, 자동 SSL 인증서 생성, HTTP/2 지원 등의 기능을 내장하고 있습니다. 간단한 설정 파일로 쉽게 설정할 수 있습니다.

Web Server가 왜 필요한가?

1) WAS의 부하를 줄이기 위해

정적 컨텐츠는 WS 측에서 처리하고, 동적 컨텐츠의 경우 WAS에 요청해서 받아옴으로써, WAS의 부하를 줄일 수 있다.

2) 로드 밸런싱

배포할 때 한 대의 WAS로 충분할 줄 알았는데, 사용자가 늘어 WAS 서버를 늘리게 된다면, 서버마다 각각 다른 고유 IP주소를 가지게 된다.

이 때 사용자의 입장에서는 서버의 부하에 대해 관심이 없기에
로드밸런싱을 위해서 각기 다른 IP주소를 통해 접속하지 않을 것이다.

웹 서버는 사용자의 요청에 따라 부하가 적은 WAS에 해당 요청을 넘김으로써 WAS의 부하를 줄일 수 있다.

또한 운영되는 WAS들 중 일부가

따라서, 서비스의 확장성과 가용성을 증가시키는데 이용될 수 있다.

3) 보안

  • Reverse Proxy
    WAS는 DB 접속, 서비스를 제공하기 위해 사용하는 프로세스의 포트번호 등 민감한 정보와 기능을 수행한다.
    WAS 에 직접적으로 접속하게 되면, 이런 크리티컬한 정보가 노출되어 보안에 위협이 될 수 있다.
    이 때, Apache 나 Nginx와 같은 Web Server를 WAS 앞에 둠으로서 WAS의 정보를 감출 수 있다.

  • SSL 인증을 통한 암호화, 복호화 처리를 할 수 있다.

4) WAS의 HealthCheck

  • 한 대 여러 대의 WAS를 통해 운영되는 서비스에서
    하나의 WAS 가 다운되면, 해당 WAS 에 대한 사용자 요청에 대해 잘못된 응답을 할 수 있고 이는 부분적인 서비스의 장애를 일으킬 수 있다.
    Web Server는 주기적으로 WAS에 HealthCheck 메시지를 보내고 그 응답 내용을 확인함으로써 ( ex. 200 OK ) WAS가 정상적으로 동작하는지 알 수 있다.

WAS란 무엇인가?

WAS ( Web Application Server )는
실제 배포한 서비스가 돌아가는 서버이다. ( 웹 컨테이너 라고도 한다 )
실제로 배포한 서비스에 필요한 프로그램의 실행 환경과 DB 접속 기능을 제공하는 서버이다.

여러 개의 트랜잭션을 관리하고, 서비스의 비즈니스 로직을 처리한다.

cf. 편돌이 ( WS : 진열대에 있는 물건을 갖다 줌 ) vs 요리사 ( WAS : 고객의 주문한 요리를 맛나게 조리해서 줌 )

WAS의 예시?

  1. Apache Tomcat : 오픈 소스이며, 경량화된 WAS로 가볍고 간단한 구성이 가능하며, JSP, Servlet 등의 Java 웹 프로그래밍 기술을 지원합니다.

  2. JBoss : Red Hat에서 개발한 오픈 소스 WAS로 Java EE 플랫폼의 모든 스펙을 지원하며, 안정적이고 확장성이 높은 WAS입니다.

  3. IBM WebSphere : IBM에서 개발한 상용 WAS로 Java EE 플랫폼의 모든 스펙을 지원하며, 안정적이고 확장성이 높은 WAS입니다.

  4. Oracle WebLogic : 오라클에서 개발한 상용 WAS로 Java EE 플랫폼의 모든 스펙을 지원하며, 안정적이고 확장성이 높은 WAS입니다.

  5. Microsoft IIS : 마이크로소프트에서 개발한 WAS로, Windows 운영체제와 함께 제공됩니다. ASP.NET과 같은 마이크로소프트의 웹 프로그래밍 기술을 지원합니다.

WAS는 왜 필요한가?

웹 클라이언트의 요청에 맞는 데이터를 DB에서 가져와 비즈니스 로직에 맞게 그때마다 결과를 만들고 제공하면서 자원을 효율적으로 사용할 수 있다.

모든 요청에 대한 경우의 수를 미리 생각하고, 그에 해당하는 HTML/CSS/JS/이미지 파일을 싹 다 조합해서 정적 페이지를 만들 수 없기 때문이다. 스토리지 자원이 절대적으로 부족하며, 애초에 모든 요청의 경우의 수를 알아낼 수가 없다.

WAS 와 WS를 왜 같이 사용하는가?

Web Server 에서는 정적인 컨텐츠 or 아주 간단한 동적인 컨텐츠를 제공해주고
클라이언트의 요구에 따라 달라져야하는 복잡한 동적인 컨텐츠의 경우
Web Server 가 Web Application Server에 넘겨서 DB와 비즈니스 로직을 통해 페이지를 가공해서 넘겨준다.
WS와 WAS를 나눔으로써, 정적인 컨텐츠 처리를 WS에 위임함으로서, WAS 서버의 부하를 내릴 수 있다. 또한 WS가 WAS 앞에 위치함으로써, 로드 밸런싱 역할을 통해 WAS 부하를 내려주고 및 리버스 프록시 역할 / SSL 을 통한 인증 등을 통해 보안을 강화할 수 있다.

profile
새로운 것을 배우고, 기존의 것에 깊이를 더하는 걸 좋아합니다.

0개의 댓글