티스토리 뷰

개념
WS(Web Server)
HTTP 프로토콜을 통해 클라이언트와 통신
✅ 정적 콘텐츠 제공
- HTML, CSS, JavaScript, 이미지, 동영상 등의 파일을 클라이언트에 전달합니다. 사용자가 웹 페이지를 요청하면, - 웹 서버가 해당 페이지의 리소스를 전달하여 브라우저가 화면을 렌더링할 수 있도록 합니다.
✅ 요청 라우팅(Reverse Proxy 역할)
- 단순히 정적 파일을 제공하는 것 외에도, 웹 애플리케이션 서버(WAS)로 요청을 전달할 수 있습니다.
- 예를 들어, Nginx 또는 Apache와 같은 웹 서버는 백엔드(Spring Boot, Node.js 등)를 실행하는 WAS로 요청을 리버스 프록시(Reverse Proxy) 방식으로 전달할 수 있습니다.
✅ 보안 및 로드 밸런싱
- 웹 서버는 SSL/TLS를 지원하여 HTTPS를 통해 보안을 강화할 수 있습니다.
- 다수의 WAS를 운영하는 경우 로드 밸런서(Load Balancer) 역할을 수행하여 부하를 분산할 수도 있습니다.
WAS(Web Application Server)
✅ 클라이언트 요청 처리
사용자의 요청을 받아 동적 웹 페이지(예: 로그인, 게시글 조회, 데이터 처리 등)를 생성하여 응답
✅ 비즈니스 로직 실행
웹 애플리케이션에서 구현한 서비스 로직 실행 (예: 주문 처리, 결제 기능, 사용자 인증 등)
✅ 데이터베이스 연동
SQL을 실행하여 데이터베이스에서 데이터를 조회, 삽입, 수정, 삭제 수행
✅ 세션 및 트랜잭션 관리
사용자의 로그인 상태 유지(Session) 여러 작업이 원자적으로 실행되도록 보장(Transaction)
✅ 웹 서버와의 협업
웹 서버(WS)로부터 요청을 전달받아 동적으로 처리한 후, 웹 서버를 통해 사용자에게 응답 전송
✅ API 및 외부 서비스 연동
REST API, SOAP, GraphQL 등의 요청을 처리하고 다른 서비스와 데이터를 주고받음

면접 질문
WAS와 WS의 차이점은 무엇인가요?
웹 서버, 즉 WS는 클라이언트가 요청한 정적인 콘텐츠를 제공하는 역할을 합니다. 사용자가 웹사이트에 접속하면 HTML, CSS, JavaScript 같은 정적인 파일을 그대로 브라우저에 전달하는 게 웹 서버의 역할입니다. 대표적으로 Apache나 Nginx 같은 서버가 있습니다.
반면에 WAS, 즉 웹 애플리케이션 서버는 단순히 정적인 파일을 제공하는 게 아니라, 동적인 요청을 처리합니다. 사용자가 로그인 요청을 보내거나 데이터를 조회하는 경우, WAS가 이 요청을 받아서 내부에서 비즈니스 로직을 수행하고, 데이터베이스와 연동하여 필요한 결과를 생성한 뒤 응답을 반환합니다. WAS의 대표적인 예로는 Tomcat, JBoss, WebSphere 같은 서버가 있습니다.
WAS와 WS를 분리해서 사용하는 이유는 무엇인가요?
분리해서 사용하는 이유는 성능 최적화, 확장성, 보안 강화가 있습니다.
웹 서버(WS)와 웹 애플리케이션 서버(WAS)를 분리하면 성능과 효율성이 크게 향상됩니다. 웹 서버는 정적인 리소스(HTML, CSS, JavaScript, 이미지)를 빠르게 제공하는 역할을 하고, WAS는 데이터베이스와 연동하거나 비즈니스 로직을 처리하는 역할을 합니다. 만약 모든 요청을 WAS가 직접 처리한다면, 단순히 정적인 HTML 파일 하나를 전송하는 요청까지도 WAS가 담당하게 되어 불필요한 리소스를 낭비됩니다.
또 하나의 중요한 이유는 확장성과 안정성입니다. 웹 서버와 WAS를 분리하면 각각의 서버를 독립적으로 확장할 수 있습니다.
보안적인 측면에서도 도움이 됩니다. 웹 서버가 앞단에서 클라이언트 요청을 필터링하고 WAS로 넘기면, 직접적으로 WAS가 외부에 노출되지 않으므로 보안이 강화됩니다.
WAS가 높은 트래픽을 처리하기 어렵다면, 어떤 방식으로 확장성을 확보할 수 있을까요?
대표적으로 수직 확장(Scale-Up)과 수평 확장(Scale-Out) 방식이 있으며, 로드 밸런싱과 캐싱, 비동기 처리 같은 기법을 함께 활용하면 효율적인 확장이 가능합니다.
수직 확장은 서버 자체의 성능을 높이는 방식입니다. 서버의 CPU나 메모리 성능을 높일 경우 한 대의 WAS가 더 많은 요청을 처리할 수 있습니다. 그러나 서버의 성능을 높이는 것에는 한계가 있으며 단일 서버에 의존하면 장애가 발생 시 서비스가 중단될 수도 있습니다.
수평 확장은 서버를 여러 대로 늘리는 방식입니다. 하나의 서버가 모든 요청을 처리하는 것이 아니라 여러 개의 서버를 로드밸런서를 이용해 트래픽을 분산합니다.
트래픽이 증가하면 서버를 확장하고(Scale-Out), 부하를 분산하고(Load Balancing), 캐싱을 활용하고, 비동기 처리로 부담을 줄이는 방식을 조합해서 해결하는 게 핵심입니다.
Nginx 또는 Apache를 WS로 사용한다고 가정할 때, 이를 WAS와 연결하는 방식(Reverse Proxy)에 대해 설명해주세요.
리버스 프록시는 클라이언트가 직접 WAS에 접근하는 게 아니라, 웹 서버(Nginx, Apache)가 요청을 받아 WAS로 전달하고, 다시 그 응답을 클라이언트에게 반환하는 방식입니다.
사용자가 웹사이트에 접속하면 웹 서버가 먼저 요청을 받습니다. 정적인 파일이라면 웹 서버가 직접 처리하고, 로그인이나 데이터 조회 같은 동적인 요청이라면 WAS로 전달합니다. 이렇게 하면 WAS가 불필요한 정적 리소스 요청을 처리하지 않아도 되기 때문에 부하가 줄어들고, 전체적인 성능이 향상됩니다.
또한, WAS가 여러 개라면, 로드 밸런서를 활용해서 트래픽을 분산시킬 수 있습니다. 이 외에도, SSL 인증서를 웹 서버에서 관리하면 WAS가 직접 HTTPS를 처리하지 않아도 돼서 성능이 더 좋아지고, 보안도 강화됩니다.
결과적으로 리버스 프록시를 사용하면 WAS의 부하를 줄이고, 성능을 최적화하며, 보안도 강화할 수 있어서 대규모 서비스에서 많이 활용됩니다.
- Total
- Today
- Yesterday
- 백준알고리즘
- 알고리즘이론
- 더오름
- SSAFYcial
- 백준
- it도서큐레이션
- 웹개발
- 파이썬
- 코딩테스트
- ssafy기자단
- SSAFY
- 인프런강의후기
- 인프런
- 티스토리챌린지
- dataframe
- 웹
- 위니브엠베서더
- 알고리즘
- django
- 전자회로
- 오블완
- 위니브
- 제주코딩베이스캠프
- 프로그래머스
- 웹프로그래밍
- Python
- numpy
- 인프런강의
- PANDAS
- 생성형 AI
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |