1. Proxy
1-1. Proxy 란?
서버와 서버 사이에서 목적에 따라
특정 서버들을 대신해 여러가지 작업을 수행해주는 중개인
프록시 서버는
요청을 가로채서 응답할 수 있으며,
요청만 전달하거나 수정할 수도 있습니다.
우리는 지금까지 프론트엔드와 백엔드로 나누어 개발하면서,
요청의 주체인 프론트엔드 서버에서
요청을 받는 백엔드 서버에 직접 호출을 했습니다.
따라서 백엔드 서버에서는 해당 요청에 대한 모든 정보를 바로 확인할 수 있습니다.
그런데 이러한 구조에 프록시 서버를 추가하면 어떤 형태가 될까요?
프론트엔드 서버와 백엔드 서버 사이에
프록시 서버 역할을 하는 새로운 서버를 추가함으로써,
프론트엔드 서버는
백엔드 서버가 아닌 프록시 서버로 요청을 보내게 되고,
프록시 서버는 해당 요청을 받아 필요한 작업을 한 뒤
백엔드 서버에 해당 요청을 넘겨주게 됩니다.
그렇다면 프록시 서버가 하는 일에는 어떤 작업들이 있을까요?
프록시 서버는
역할에 따라 크게 Forward Proxy와 Reverse Proxy
1-2. Forward Proxy
Forward Proxy가 무엇인지 알아보기 전에 우리가 한 번쯤은 사용해 봤을 서비스인 VPN에 대해 잠시 이야기하고 넘어가겠습니다.
VPN의 역할은 무엇이며 사람들이 VPN을 왜 사용 할까요?
사내 내부 서버에 접근할 때
보안상의 이유로 특정 IP로만 접속 가능하도록 하기 위한 용도로 사용할 수도 있고,
한국 IP로는 접속이 불가능한 쇼핑몰을 접속하기 위해 특정 국가의 IP를 이용하기 위해서도 VPN을 사용할 수 있습니다.
요청 서버에 대한 실제 정보를 가리는 것이 VPN의 주된 용도라고 할 수 있습니다.
실제 직전 회사에서도, 해외 외부 ip를 이용해서 VPN을 사용했어야 했음
Forward Proxy의 다른 사용 예시로는 캐싱
클라이언트에서 같은 요청을 여러 번 보낼 때
매번 서버에서 같은 요청에 대한 응답처리를 반복할 필요없이
Forward Proxy 서버에서 캐싱해두고 같은 요청에 대한 응답을 대신 즉시 보내주게 되는 것
불필요한 통신이 줄어들고
그만큼 리소스 낭비를 줄일 수 있으며 전체적인 성능 개선 효과를 경험할 수 있습니다.
이처럼 요청을 보내는 서버 또는 사용자를 대신하여 특정 작업들을 처리해주는 프록시를 Forward Proxy라고 합니다.
[그림 1-2] Forward Proxy
1-3. Reverse Proxy
프라이빗 네트워크의 서버에 대한 접근을 제어
데이터 암호화 및 암호 해독,
인증 작업,
정보 캐싱 및 Load Balancer(로드 밸런서) 역할
기본적으로 웹 서버 또는 서버 그룹에 대한 Gateway의 역할
클라이언트가 접근하고자 하는 서버의 실제 위치를 masking(마스킹)
즉, 실제 서버의 위치를 숨겨서
클라이언트가 아닌 백엔드 서버에 대한 익명성을 제공
Reverse Proxy는 수백만 명의 방문자가 있는 서비스에 로드 밸런서로 활용될 수 있습니다.
특정 서버가 동시에 많은 요청을 처리하게 되면 여러 문제들이 발생 할 수 있는데, 로드 밸런서가 트래픽을 준비된 서버 그룹에 골고루 분산시켜 해당 문제를 해결 할 수 있습니다.
Reverse Proxy는 로드 밸런서로서의 역할 뿐만 아니라 보안을 위해서도 필요합니다. Reverse Proxy를 통해서만 네트워크에 액세스할 수 있게하여 악의적인 공격을 차단하는 등 웹사이트에 보안과 유연성을 추가할 수 있습니다.
[그림 1-3] Reverse Proxy
2. Load Balancing
2-1. 서버의 확장
application 서버에 대한 요청이 많을 때는 어떤 문제?
서버는 작업을 처리할 때 사용할 수 있는 자원이 정해져 있습니다.
서버가 일을 할 때에도 처리할 수 있는 요청에 대한 한계
--> Scale-up 방식으로의 확장 또는 Scale-out 방식의 확장
Scale-up 방식
서버의 성능을 높이는 방식입니다.
즉, 기존 컴퓨터보다 사양이 훨씬 좋은 컴퓨터로 바꾸는 것입니다.
기존보다 컴퓨터의 사양이 더 좋아졌기 때문에 서버는 더 많은 일을 할 수 있게 됩니다.
Scale-out 방식
동일하거나 비슷한 성능의 서버를 추가하여 여러 대의 서버를 운용
즉, 요청을 처리할 수 있는 컴퓨터를 여러 대를 두어서 일을 분산 시키는 겁니다. 보통 서버를 확장할 때는 Scale-out 방식을 선호하는데, 그 이유로는 하드웨어 성능을 높이는 비용보다 값싼 서버를 한대 더 추가하는 방법이 보통 더 적은 비용이 들고, 여러 대의 서버를 운용하면서 서비스를 중단없이 운영할 수 있다는 장점이 있기 때문입니다.
[그림 2-1] Server의 Scale Out
2-2. Load Balancer
Reverse Proxy의 일종
여러 대의 서버에게 요청을 균등하게 분산시켜주는 역할
서비스 이용자가 증가하여 scale out 방식으로 서버를 확장 했는데,
if 하나의 서버에만 요청이 집중 = 서버를 확장하기 전과 다를게 없는 시스템
--> 로드 밸런서를 활용하여 우리가 운용중인 서버들에게 요청을 분산
로드 밸런서 처리 순서
1) 유저의 접속과 사용을 통해 발생하는 트래픽들(http request)들을 모두 1차적으로 처리
2) 로드 벨런서는 서비스를 운영하고 있는 서버들로 요청을 분배
로드 밸런서를 사용하면 요청을 고르게 분배해줘서
많은 요청을 동시에 처리할 수 있게 해주는 장점
[다른 장점]
Fault Tolerant System (결함 감내 시스템)을 구축 할 수
예를 들어,
운영되고 있는 서버 3개 중에 1개가
어떠한 결함이나 에러로 운영 중단이 된다면
로드 밸런서가 자동으로 정상적으로 작동하는 나머지 2개의 서버에만 요청을 분배할 수
이러면 실제 요청을 보내는 사용자는 서버들 중 하나가 운영 중단이 되었어도
정상적으로 서비스를 이용할 수
이 사이에 개발자들은 운영 중단 되었던 서버를 고쳐 정상적으로 작동 시키고,
로드 밸런서는 다시 해당 서버를 포함하여 모든 서버들에 요청을 분배합니다.
이런 로드 밸런서의 장점을 통해 시스템을 이용할 수 없는 시간을 의미하는 Down Time 없이 서비스 운영 및 배포가 가능합니다.
'Cloud Service > AWS 공부' 카테고리의 다른 글
[CICD] CICD는 언제, 왜 필요할까? 1) (0) | 2023.10.28 |
---|---|
[AWS] ALB - [Network] Nginx를 사용한 Load Balancing 적용** (0) | 2023.10.28 |
[AWS] VPC-5) Custom VPC를 활용하여 Infrastructure 구성하기 ** (0) | 2023.10.28 |
[AWS] VPC-4) ** (0) | 2023.10.28 |
[AWS] VPC-3) [Network] Subnet & CIDR (0) | 2023.10.28 |