카테고리 없음

서버 로직 아키텍쳐

JUNGKEUNG 2024. 9. 10. 00:07
반응형

 

DNS는 인터넷 브라우저를 사용하여 웹페이지에 접근 할 때 문자열을 가진 도메인으로 접근하는데, 이러한 도메인은 각각의 고유 주소인 IP를 가지고 있다.  우리가 주로 URL에 웹 브라우저 주소창에 www.naver.com  형식으로 작성을 할 것이다. 이는 우리가 외우기 쉽고, 쉽게 접근할수 있도록 되어 있는것이다. DNS를 조회하면 IP가 있고 그 IP의 주소안에 Port의 안내의 따라 웹 사이트에 접근이 가능하다. 

 

 

CDN는 콘텐츠 전달 네트워크의 약자로 말 그대로, 컨텐츠를 전달하는 네트워크를 구성하는 것이다. 보통 웹 서버에 HTTP 요청을 하여 리소스를 가져오지만 웹 서버가 아니라 현재 사용자가 접속한 위치에서 가장 가까운 서버에 리소스를 캐싱 해놓고 보다 빠르게 가져오는 기법이다. 물론 네트워크를 구축하는데 비용이 들긴 하지만 만약 구축하게 되면, 정적 리소스를 보다 빠른 속도로 서비스할 수 있다.

 

L2 (Data Link Layer)


브릿지, 허브등에서 사용되는 로드밸런싱이다. 네트워크 장비의 고유한 Mac 주소(80-00-20-30-1C-47)를 이용하여 로드밸런싱을 한다. 당연히 스위치는 Mac테이블을 가지고 있어야하며, 이를 기준으로 패킷을 전송한다.
 

L4(Transport Layer)


IP + Port 를 이용한 로드밸런싱이다. 단순 라우터만 아니라, TCP/IP 프로토콜을 사용한다. 주로 round Robin 방식을 이용한다.
 
 
Port 구분이 가능하기에 프로토콜(HTTP, FTP)마다 다른 서버로 보내도록 설정이 가능하다.
실제 IP들을 하나의 가상 IP(Virtual IP, VIP) 로 묶어서 처리할 수 있다. 

  • VIP를 통해 요청 받은 작업을 여러개의 서버로 분산시킬 수 있음
  • VIP를 통해 연결된 서버가 다우되어도 자동으로 다른 서버가 해당역할을 하도록 전환하는 Failover 기능지원


 
 

L7 Switch (Application Layer)


어플리케이션 영역, 즉 HTTPRequest 요청 내용까지 판단하여 로드밸런싱 한다.
 
L4가 사용하는 IP _ Port 뿐만 아니라 URI정보, 쿠키등을 다 판단해 유연하게 네트워크 밸런싱을 할 수 있다.
 
ex) L4 Switch에서 제공하는 기능을 다 포함한다. 프로토콜(port)별로 다른 서버에 할당 가능하다.
 
ex) www.naver.com/blog   www.naver.com/cafe  를 다른 서버가 처리하도록 설정할 수 있다.
 
ex) URI, 쿠키, 바이러스 패턴등을 분석해 특정 트래픽을 받지 않도록 필터링 할 수 있다.
 
ex) 패킷의 데이터부분, Payload를 분석하여 DDOS 같은 서비스 공격을 완화 할 수 있다.
 
 

회사에서 공유기(사설 IP)를 사용하는 경우 -> 한 회사의 모든 요청 IP가 똑같다.
- L4 스위치는 모든 요청을 한 서버에 할당한다. IP+Port가 같으니깐...
- L7 스위치는 IP+Port 뿐만 아니라 HTTP Request를 이용해 분산시키므로, 적절하게 분산 가능하다.

 
 
하지만 L4에 비해 분석해야할 정보가 많아 로드밸런싱 작업이 어렵고 무거워진다. 그래서 성능 좋은 L7 Switch 장비의 가격이 매우 비싸다.

 

웹서버와 WAS 의 차이

기능적으로 동일한 영역이 있으며 WAS가 웹서버 기능의 많은 부분을 포함하여 수행하기도 하지만 사용의 "목적"이 다르다

 

웹서버는 정적인 데이터를 처리하는 서버이다. 이미지나 단순 HTML 같은 정적인 리소스들을 전달하며 WAS만을 이용할 경우보다 빠르고 안정적으로 기능을 수행한다.

 

WAS는 동적인 데이터를 위주로 처리하는 서버이다. DB와 연결되어 사용자와 데이터를 주고받고 조작이 필요한 경우 WAS를 활용한다.

 

아파치(Apache)란

아파치는 웹드와이드 웹 서버용 소프트웨어이다. http아파치 서버라고도 불리고, HTTP 웹 서버이다. 리눅스나 윈도우 등 거의 모든 운영체제에서 사용이 가능하다.

 

 

톰캣(Tomcat)이란?

톰캣은 아파치 소프트웨어 재단의 웹 어플리케이션 서버(와스)로서, 자바 서블릿을 실행시키고 jsp 코드가 포함되어 있는 웹 페이지를 만들어 준다. 쉽게 설정하자면 톰캣은 웹서버에서 넘어온 동적인 페이지를 읽어 들여 프로그램을 실행하고 그 결과를 다시 html로 재구성하여 아파치에게 되돌려 준다.

톰캣은 독립으로도 사용될 수 있지만 아파치나 IIS 등 다른 웹서와 함께 사용될 수도 있다.

 

 

 

 

Script

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

1. User는 DNS에서 ip를 받고 port에 맞춰서 들어간다.

2. 정적 데이터(image, html, css)만 있다면 운영서버까지 가지 않고 Nginx(CDN) 에서 처리 후 화면단에 보여준다.

3. L2,L4,L7 로드밸런싱 한다.

4. 동적데이터는 WAS(tomcat)에서 DB와 연결되어 사용자와 데이터를 주고 받는 역할을 한다.