( 모든 글은 내가 이해하고, 메모장 개념으로 작성하는 것이라 틀린 부분도 많고, 뒤죽박죽입니다. )

 

현재 대규모 사이트를 운영하는 회사에 다닌다. 아직 신입이라 공부를 많이 해야하는데 메모를 안하면 항상 다시 공부해야해서 적어본다.

 

웹 서비스 구조는 아래와 같은 구조가 일반적이다

 

< 1. User >------<2. Web Browser>------<3. Web Server>------<4. Web Application Server>------<5. DB >

 

1번. 말그대로 유저이다.

2번. 위에는 Web Browser라 했지만  사용자는 웹 또는 모바일을 이용하여 어떠한 행위를 한다.

3번. client요청은  이제 Web server로 들어온다.

 

 

------------------------------잠시 들어가기전에 정적 컨텐츠와 동적 컨텐츠를 보고가자------------------------------

정적 컨텐츠 : 사용자의 요청에 상관없이 결과값이 같은 것

동적 컨텐츠 : 사용자의 요청에 따라 결과값이 달라지는 것

예를들어 초록창 포털에 들어갔을때 매번 전체적인 틀은 같다 이런 틀들은 정적컨텐츠고 인기검색어와 같이 결과값들이 바뀌는 것들이 동적 컨텐츠이다.

----------------------------------------------------------------------------------------------------------------------------

 

 

< Web Server란? >

 

클라이언트부터 HTTP 요청을 받고, HTML 문서와 같은 웹페이지를 반환하는 역할을 한다. 

종류로는 Apache , Nginx, IIS 등이 있다.

또한 WAS로 부터 받은 정보들을 다시 웹에 뿌려주기도 한다.

정적 컨텐츠들은 Web Server에서 담당하는데 html, css, js, jpg같은 것들이 일반적이고 요즘 이미지 같은 경우 CDN으로 관리한다. ( CDN도 나중에 한번 정리를...)

 

 

4번. 이제 Web Server가 동적컨텐츠같은 경우를 사용자에게 결과값을 보여줘야 할 때에는 WAS 서버로 요청을 보낸다.

WAS서버는 아주 많은 역할을 하기도 하고 성능테스트를 할 때 집중적으로 모니터링한다.

 

< Web Application Server란? >

 

동적컨텐츠, DB 조회 등을 수행하는 역할을 한다. 사실 아파치 톰캣은 Web Server의 역할도 수행할 수 있다.

즉 , WAS = Web Server + Web Container

종류로는 Apache Tomcat, Jeus, JBoss 등이 있다.

요즘 WAS와 DB사이에 Redis를 놓아서 굳이 DB까지 가지 않아도 되는 것들을 처리를 많이 한다.

JSP, Servlet 구동환경을 제공한다.

 

 

이렇게 아주 아주 아주 간단하게만 알아보았다.

근데 의문이 드는건 왜 이렇게 Web Server , WAS 구분을 해놓는 것일까? 

가장 큰 이유는 성능이다.

서로의 역할을 나누어주고 트랜젝션을 분산시켜 각각의 역할에 맞는 일만 하게 만들어서 성능저하를 막는 것이라고 생각한다. 

 

요즘은 클라우드를 많이 쓰기때문에 Web Server , WAS의 앞단에  ELB를 배치시켜 트랜잭션이 많아 질때는 Auto Scaling으로 서버를 늘려 트랜잭션 분산을 시켜 안정적으로 운영한다.

 

 

 

 

https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html 굉장히 읽기 쉬운 글이 있어서 링크를 가지고 왔다.

 

 

'혼자 공부하는 내용 ( 잡다한 것들 )' 카테고리의 다른 글

TCP 핸드쉐이크 주요 플래그  (0) 2025.04.19
osi 7계층  (0) 2025.04.19
servlet , JSP  (0) 2020.06.27
Web , Was와 관련 지식에 대한 이해  (0) 2020.06.27
yaml 기본 문법  (0) 2020.05.28

+ Recent posts