* 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가 필수다! 는 아니지만 편리한데 큰 프로젝트에서도 문제 없이 진행된다는 것!
'Spring' 카테고리의 다른 글
[SpringBoot] Spring Data Jpa와 관계형 데이터베이스 (0) | 2024.05.13 |
---|---|
[SpringBoot] 스프링 부트와 테스트 기초 (0) | 2024.05.08 |
[Spring] WebApplicationInitializer.java & ServletContextListener.java (0) | 2024.03.22 |
[Spring] @Retention (0) | 2024.03.20 |
[SQL] 데이터가 없으면 INSERT, 있으면 UPDATE (같은 데이터 중복 삽입 해결) (1) | 2024.01.24 |