WAS (Web Application Server)
- Web Applicatoin Server의 약자로, 웹 애플리케이션을 실행할 수 있는 미들웨어
(WAS에 대한 자세한 설명은 아래 게시글에 나와 있습니다.)
웹서버와 WAS를 분리하는 이유
- 성능 및 확장성
웹 서버는 정적인 파일을 처리하고, WAS는 동적인 요청을 처리한다.
웹 서버와 WAS를 분리함으로써 각각의 역할에 특화된 서버를 구성하고, 성능 및 확장성을 높일 수 있다. - 안정성
WAS는 비즈니스 로직을 처리하는데 중점을 두고 있으므로, 웹 서버와는 달리 많은 CPU, 메모리, 디스크 등의 자원이 필요하다.
이에 따라 WAS가 다운되거나 과부하 상태가 되면 웹 서버도 영향을 받을 수 있다.
웹 서버와 WAS를 분리함으로써, 각각의 서버가 독립적으로 동작하여 안정성을 높일 수 있다. - 유지보수 및 관리
웹 서버와 WAS를 분리함으로써 각각의 서버를 별도로 유지보수하고 관리할 수 있다.
이를 통해 시스템 유지보수 비용을 절감할 수 있다. - 보안
웹 서버는 클라이언트와의 통신을 처리하는 역할을 하므로, 외부 공격에 취약할 수 있다.
이에 반해 WAS는 비즈니스 로직을 처리하는데 중점을 두고 있으므로, 보안에 대한 강화된 대응이 필요합니다.
웹 서버와 WAS를 분리하여 보안에 대한 전문적인 대응을 할 수 있습니다.
성능 및 확장성
- 정적인 파일을 처리하는 웹 서버와 동적인 요청을 처리하는 WAS를 각각의 역할에 특화된 서버로 구성함으로써 성능을 향상시킬 수 있다.
- 일반적으로 웹 서버는 정적인 파일을 처리하는 데 특화되어 있다.
∴ CPU나 메모리 같은 자원을 크게 요구하지 않으며, 처리 속도가 매우 빠르다.
(∵ 대부분의 파일이 이미 디스크에 저장되어 있음) - WAS는 동적인 요청(비즈니스 로직과 데이터베이스 조회 등의 작업)을 처리하는 데 특화되어 있다.
∴ CPU나 메모리 같은 자원을 많이 요구하며, 처리 속도가 느릴 수 있다.
- 일반적으로 웹 서버는 정적인 파일을 처리하는 데 특화되어 있다.
- WAS를 필요에 따라 수평적으로 확장시키기 쉬움 ⇒ 부하 분산을 효과적으로 처리할 수 있다.
(ex. 동적인 요청이 많아지면 WAS를 추가로 구성하여 부하를 분산시킬 수 있음)
안정성
- 웹 서버와 WAS를 분리하지 않고 하나의 서버에 함께 구성하게 되면,
- WAS에서 발생한 문제가 웹 서버까지 영향을 끼칠 수 있다.
(ex. WAS에서 발생한 오류로 인해 WAS가 다운되거나 과부하 상태가 되면,
이에 응답하지 못하는 클라이언트 요청들이 쌓이게 되어, 웹 서버 역시 다운될 수 있다.)
- WAS에서 발생한 문제가 웹 서버까지 영향을 끼칠 수 있다.
- 웹 서버와 WAS를 분리하면,
- 각각의 서버가 독립적으로 동작하므로, WAS에서 발생한 문제가 웹 서버에 영향을 주지 않는다.
- WAS에서 문제가 발생해도 웹 서버는 정적인 파일을 처리하는 역할에만 집중할 수 있어, 전체적인 시스템 안정성이 높아진다.
- 각각의 서버를 더욱 효율적으로 관리할 수 있다.
(ex. 서버 유지보수나 업그레이드 작업을 수행할 때, 웹 서버와 WAS를 분리하면 더욱 안정적으로 작업을 수행할 수 있다.)
서버 유지보수나 업그레이드 작업을 수행할 때, 웹 서버와 WAS를 분리하면 더욱 안정적으로 작업을 수행할 수 있다?
- WAS에서 새로운 기능을 추가하거나 업그레이드를 진행해야 할 경우, 해당 작업을 진행하면서 WAS가 다운되거나 오류가 발생할 수 있는데,
웹 서버와 WAS를 분리하여 독립적으로 운영하면, WAS를 유지보수하거나 업그레이드할 때 웹 서버에 영향을 주지 않는다.
즉, WAS를 유지보수 또는 업그레이드하는 동안 웹 서버는 계속해서 정상적으로 동작할 수 있으므로, 전체 시스템의 안정성을 유지할 수 있다. - 웹 서버와 WAS를 분리하면, 웹 서버 관리자는 웹 서버 관련 작업에만 집중할 수 있으며, WAS 관리자는 WAS 관련 작업에만 집중할 수 있다.
⇒ 서버 유지보수 및 업그레이드 작업을 더욱 전문적으로 처리 가능하다.
WAS 유지보수나 업그레이드 작업을 수행하는 중에 동적인 작업이 필요한 요청이 온다면?
- 임시 서비스 제공
- WAS 유지보수나 업그레이드 작업을 수행하기 전에 임시적으로 대체 서비스 제공
- 요청 분산
- WAS 유지보수나 업그레이드 작업을 수행하는 동안, 해당 WAS에 대한 요청을 분산하여 다른 WAS에서 처리할 수 있도록 구성
로드밸런싱 기능을 이용하여 요청을 분산하는 방식으로 구현 가능
(로드밸런싱 기능에 대해 자세히 알고 싶다면 여기를 클릭하세요)
로드밸런싱 기능
여러 대의 서버에 대한 요청을 분배하여 부하를 분산하는 기술
서버의 부하를 분산하고, 서버의 가용성과 확장성을 높일 수 있다.로드밸런서는 일반적으로 네트워크 기반 또는 애플리케이션 기반으로 구현된다.
- 네트워크 기반 로드밸런서는 L4(Transport Layer) 기반으로 동작하며,
IP 주소와 포트 정보를 이용해 요청을 분배한다.
- 애플리케이션 기반 로드밸런서는 L7(Application Layer) 기반으로 동작하며,
HTTP 헤더와 URI 정보, 쿠키 등을 이용하여 요청을 분배한다.
더욱 세부적인 요청 분배가 가능하며, 이를 이용하여 세부적인 부하 분산과 서비스 품질(QoS) 제어가 가능하다.장점
- 부하 분산 로드밸런서는 여러 대의 서버에 대한 요청을 분배하여, 각 서버의 부하를 분산한다.
⇒ 각 서버에 대한 부하를 분산하면서, 서버의 가용성과 확장성을 높일 수 있다.
- 고가용성 로드밸런서는 여러 대의 서버에 대한 요청을 분배하며, 이를 통해 서버의 가용성을 높일 수 있다.
예를 들어, 로드밸런서가 요청을 처리할 수 없을 경우, 다른 서버에 대한 요청을 분배하여 서비스를 유지할 수 있다.
- 확장성 로드밸런서는 서버의 가용성을 높일 수 있으므로, 서버의 확장성도 높일 수 있다.
예를 들어, 로드밸런서를 이용하여 여러 대의 서버를 관리하면,
서버의 가용성을 높이면서, 새로운 서버를 추가하거나 기존 서버를 제거하는 등의 작업을 수행할 수 있다.
- 보안성 로드밸런서는 보안 기능을 제공할 수 있다.
예를 들어, SSL 인증서를 이용하여 HTTPS 요청을 처리하거나,
웹 방화벽 기능을 제공하여 악성 요청을 차단할 수 있다.L4(Transport Layer)
- OSI 7 Layer 모델에서 Transport Layer를 나타낸다. (전송 계층)
- TCP와 UDP 프로토콜 등을 이용하여 데이터의 전송을 관리한다.
- 데이터를 나누어 전송하고, 재조립하여 상위 계층으로 전달한다.L7(Application Layer)
- OSI 7 Layer 모델에서 Application Layer를 나타낸다. (응용 계층)
- 애플리케이션에서 사용되는 프로토콜들(HTTP, SMTP, FTP 등)을 이용하여 데이터를 전송하고 이를 관리한다.
- 데이터의 유효성 검사, 인증 등의 기능을 수행한다.- WAS의 부하를 분산하면서 유지보수 또는 업그레이드 작업 수행 가능
- 유지보수 작업 재조정
- WAS 유지보수나 업그레이드 작업을 수행하는 동안, 동적인 요청을 처리하는 작업을 최소화하거나, 작업을 조정하여 처리 가능
- 유지보수 작업이 진행되는 동안 일부 기능을 사용하지 못하도록 차단하거나, 시간이 오래 걸리는 작업을 우선 처리하지 않도록 함
- 서비스 다운 시간 최소화
- WAS 유지보수나 업그레이드 작업을 수행할 때, 최소한의 서비스 다운 시간을 확보할 수 있도록 노력
- ex) 유지보수 작업을 빠르게 수행하고, 해당 작업에 대한 충분한 테스트를 수행한 뒤 서비스를 재가동
유지보수 및 관리
- 유지보수 비용 절감
- 웹 서버와 WAS가 분리되어 있으면 각각의 역할이 분명해지기 때문에 서버 구성 및 구성 변경이 쉬워진다.
- 웹 서버와 WAS를 분리하면 서버 자원을 더욱 효율적으로 사용할 수 있다.
- 웹 서버는 정적인 콘텐츠(HTML, CSS, 이미지 등)를 처리하는 데 더욱 특화되어 있고,
WAS는 동적인 콘텐츠(JSP, Servlet, PHP, ASP 등)를 처리하는 데 더욱 특화되어 있다. - 웹서버에는 정적인 콘텐츠를 처리하는 데에 CPU와 메모리를 많이 사용하지 않기 때문에,
CPU와 메모리가 적은 서버를 할당하여 비용을 절감할 수 있다. - WAS에서는 동적인 콘텐츠를 처리하는 데에 CPU와 메모리를 많이 사용하기 때문에,
CPU와 메모리가 많은 서버를 할당하여 성능을 향상시킬 수 있다. - 서버를 분리하여 각각의 서버에 맞는 운영체제, 웹 서버 소프트웨어, WAS 소프트웨어 등을 설치하고 구성할 수 있다.
- 서버를 분리하면 각각의 서버에 맞는 하드웨어와 자원을 할당할 수 있기 때문에 서버 자원을 더욱 효율적으로 사용할 수 있다.
⇒ 서버 확장을 고려할 때 유리하다.
- 웹 서버는 정적인 콘텐츠(HTML, CSS, 이미지 등)를 처리하는 데 더욱 특화되어 있고,
보안
- 웹 서버와 WAS를 분리하면 각각의 서버에 대해 보안에 대한 전문적인 대응이 가능해진다.
- 웹 서버는 정적인 컨텐츠를 제공하기 때문에, 파일 시스템 접근과 같은 기본적인 보안 기능만 필요하지만,
WAS는 애플리케이션 코드를 실행하고 데이터베이스와 같은 백엔드 리소스에 접근하기 때문에 보다 고급 보안 기능이 필요하다. - 웹 서버에는 인증, 인가와 같은 보안 기능을 처리하고, WAS에서는 비즈니스 로직을 처리하는 등의 역할을 분리할 수 있다.
- 웹 서버와 WAS를 분리해서 전문적으로 보안 대응을 하면 보안 위험에 대한 대응이 신속하게 이뤄질 수 있다.
- 웹 서버와 WAS 각각에 대한 보안 설정을 분리하여 관리하면,
보안 설정에 대한 실수나 누락 등이 줄어들어 전반적인 보안 수준을 높일 수 있다.
'Back-End > 부스트코스' 카테고리의 다른 글
[웹 백엔드] WAS (0) | 2023.04.07 |
---|---|
[웹 백엔드] 미들웨어 (MiddleWare) (0) | 2023.04.07 |
[웹 백엔드] HTTP 요청 메서드 (0) | 2023.04.05 |
[웹 백엔드] JDBC (0) | 2023.04.05 |
[웹 백엔드] MySQL - DDL (create, drop) (0) | 2023.01.25 |