본문으로 바로가기

3 tier 하면 web-was-db 의 구성이 일반적인데 여기서 was(web application server)가 무엇이며 web server와 무엇이 구별되는 것인지를 확인해보기로 하자.

 

 

https://preamtree.tistory.com/39

 

Web Server는 Client의 요청과 접속을 관리하고 단순히 정적 내용을 뿌리는 것. HTML을 프로그래밍 언어가 아니고 정적인 내용만 준다. 단적인 예로, HTML에서 for문을 쓸 수 없지않은가?

 

 

반면 Web Application Server는 동적인 내용을 만들어내는 서버이다. 비즈니스 로직을 수행하고 DB에 접근한다.

 

 

클라이언트(브라우저)가 요청 => Web Server는 WAS로 요청 전송 => WAS는 동적으로 컨텐츠 생성 및 비즈니스 로직 수행 => Web Server는 그것을 받아 클라이언트에게 전달

 

구체적인 제품으로는

 

Web Server로 NginX, Apache, IIS 등이 존재

WAS로 TomCat, IBM websphere... 그냥 일반적인 백엔드 서버 사이드 스크립트로 작성된 것 일체가 다 was다.

 

 

Load Balancing의 관점에서

 

자, 그런데 요청이 너무 많을 경우 Load Balancing을 구현한다

Load Balacing의 관점에서 Web Server에서 클라이언트의 요청을 받아 여러 대의 WAS에 적절하게 분배한다.

 

* Proxy의 관점으로 보자면 Web Server가 reverse proxy의 역할을 하는 것이다.

darrengwon.tistory.com/1229

 

Forward Proxy vs Reverse Proxy

- Proxy는 무엇인가 클라이언트와 서버 사이에 존재하는 중계기로, 클라이언트 대신 서버와 대리로 통신을 한다. 함수의 관점에서는 미들웨어인 것이 서버의 관점으로 옮겨왔다고 보면 된다. - Pro

darrengwon.tistory.com

 

https://www.google.com/search?q=was+%EB%A1%9C%EB%93%9C+%EB%B0%B8%EB%9F%B0%EC%8B%B1&source=lnms&tbm=isch&sa=X&ved=2ahUKEwig5-3BgcfuAhVMPHAKHZaqC54Q_AUoAXoECAgQAw&biw=1440&bih=706#imgrc=NEOj0S0yS7DwEM

 

 

 

- Load Balacing

 

Web server 1대 두고 여러 대의 WAS에게 일을 분배시키는 내용이다.

웹 서버인 Nginx를 로드 밸런싱의 역할을 하도록 세팅할 수 있다.

 

웹 서버인 apache를 한 대 두고 was인 여러 톰캣 서버를 돌릴 수 있다.

웹 서버인 nginx 한 대 두고 여러 서버를 돌릴 수 있다.

 

(좌) https://taetaetae.github.io/2019/08/04/apache-load-balancing/ (우)https://judo0179.tistory.com/16

 

 

 

Load Balancing의 종류로는

OSI 7계층에 의해 L2, L3, L4, L7 단에서 로드 밸런싱을 구현할 수 있다.

백엔드 개발자는 L4, L7 정도를 알면 된다고 한다.

 

L2 Mac 주소를 바탕으로 로드 밸런싱을 하며

L3 IP 주소를 기반으로

L4 transport layer(IP PORT) 레벨에서 로드 밸런싱. 예를 들어 특정 url로 접속시 로드 밸런싱을 함

L7 어플리케이션 레벨에서 로드 벨런싱. 예를 들면 example.com/category example.com/search 경로를 처리하는 was가 다른 것.

 

 

 

참고)

preamtree.tistory.com/39


darren, dev blog
블로그 이미지 DarrenKwonDev 님의 블로그
VISITOR 오늘 / 전체