Spring

[Spring] WAS가 도대체 뭔데?

줘니(•̀ᴗ•́)و 2024. 4. 11. 11:12
728x90

 

 

 

 

 

* WAS(Web Application Server)

: 웹 애플리케이션을 실행하기 위한 소프트웨어 환경을 제공하는 서버 / 클라이언트와 데이터베이스 사이의 중개자 역할

- 클라이언트가 웹 브라우저를 통해 웹 애플리케이션에 접속하면, 클라이언트 요청이 웹 서버로 전달됨

 

 

 

* WAS의 역할

 

  • 웹 애플리케이션 실행 환경 제공
  • 데이터베이스 연결
  • 동적 콘텐츠 생성 : 사용자가 웹 페이지를 요청할 때마다 서버 측에서 데이터를 처리하고(DB 조회 등) 결과를 동적으로 생성하여 반환
  • 통신 관리 : 클라이언트와의 통신을 관리하고 요청을 처리. HTTP 요청 수신, 응답 전송, 세션 관리
  • 스레드 관리 : 다중 사용자 요청을 처리하기 위해 스레드 풀을 관리하고 스레드 할당을 조정하여 이를 통해 동시에 여러 요청 처리하고 응답 시간을 최적화함
  • 트랜잭션 관리
  • 클러스터링 및 확장성 : 대규모 웹 애플리케이션의 경우, 여러 WAS 인스턴스를 클러스터로 구성하여 부하 분산 및 고 가용성을 제공

 

 

 

* WAS 작동 방식

 

1. 클라이언트 요청 수신

2. 동적 요청 분석

: 동적인 콘텐츠를 처리해야 할 때, 이 요청은 WAS로 전달됨. WAS는 클라이언트 요청을 분석하고 해당 요청을 처리할 웹 애플리케이션을 식별

3. 동적 콘텐츠 생성

: 웹 애플리케이션은 클라이언트 요청에 따라 동적인 콘텐츠 생성. 이 경우 DB와 상호작용이 필요한 경우가 많음. WAS는 이를 관리하고 트랜잭션을 처리

4. 응답 생성

: 웹 애플리케이션이 요청을 처리한 후, WAS는 클라이언트에게 응답을 생성

5. 클라이언트 응답 전송

: 생성된 응답은 다시 웹 서버를 통해 클라이언트로 전송. HTTP 프로토콜을 통해 클라이언트로 전송되며 사용자가 브라우저에서 웹 페이지를 볼 수 있도록 함.

 

 

 

* 외장 WAS / 내장 WAS

 

1. 외장 WAS

: 웹 애플리케이션과 웹 서버가 분리된 구조에서 사용. 외장 WAS를 쓰면 모든 서버는 WAS의 종류와 버전, 설정을 일치시켜야 함. 구조는 복잡할 수 있지만, 보다 효율적인 리소스 관리와 확장성 제공. 

 

2. 내장 WAS

: 웹 애플리케이션을 실행하기 위해 필요한 WAS기능을 애플리케이션 자체에 내장하여 사용. 애플리케이션과 WAS가 하나의 단일 프로세스 내에서 실행됨. 내장 WAS를 쓰면 별도의 WAS 설치와 구성이 필요 없으며, 애플리케이션을 배포할 때 WAS 설정에 대한 부담도 줄일 수 있음.

간혹 내장 WAS를 쓰면 성능상 이슈가 있지 않냐고 하지만, 현재 대기업들 높은 트래픽의 서비스를 하지만 다 스프링 부트로 큰 문제 없이 운영중이랍니다 ㅎ! 대표적인 WAS인 톰캣 역시 서블릿으로 이루어진 자바 애플리케이션임.

암튼 스프링부터 - 내장 WAS가 필수다! 는 아니지만 편리한데 큰 프로젝트에서도 문제 없이 진행된다는 것!

 

 

 

 

 

728x90