컴퓨터 공학 & 통신

서버 네트워크 구성 요소와 흐름 (feat. AWS)

왈왈디 2024. 12. 8. 23:28
728x90

서버 네트워크 요청 흐름

 

사용자 요청이 서버에 도달하고, 처리된 후 응답이 돌아오는 과정에는 다양한 네트워크 구성 요소들이 유기적으로 작동한다.

서버 네트워크 구성 요소를 중심으로 요청의 흐름을 단계별로 살펴보고, 주요 구성 요소들에 대해 알아보자.

 

1. 클라이언트에서 요청 보내기

 

모든 과정은 사용자의 브라우저나 애플리케이션에서 시작된다.

사용자가 웹사이트에 접속하거나 API 요청을 보낼 때, 해당 요청은 인터넷을 통해 서버 네트워크로 전달된다.

 

2. 로드 밸런서 (Load Balancer)

 

로드 밸런서는 들어오는 트래픽을 여러 서버 인스턴스에 효율적으로 분산시켜준다.

이를 통해 서버 과부하를 방지하고, 고가용성을 유지할 수 있다.

 

대상 그룹 (Target Group)

 

로드 밸런서는 대상 그룹을 통해 요청을 처리할 서버 인스턴스를 정의한다.

대상 그룹은 특정 기준에 따라 서버를 선택하고, 트래픽을 분산합니다.

예를 들어, 인스턴스의 상태 검사(Health Check)를 통해 정상적인 서버에만 트래픽을 전달할 수 있다.

 

요청 흐름

 

클라이언트의 요청은 먼저 로드 밸런서로 도착합니다. 로드 밸런서는 대상 그룹 내의 여러 서버 중 하나를 선택하여 요청을 전달합니다.

 

3. VPC (Virtual Private Cloud)

 

역할

 

VPC는 클라우드 환경에서 논리적으로 분리된 네트워크 공간을 말한다.

이를 통해 네트워크 보안과 관리가 용이해진다.

 

피어링 (Peering)

 

VPC 피어링은 두 개의 VPC 간에 트래픽을 주고받을 수 있도록 연결하는 기능이다.

이를 통해 인터넷을 통하지 않더라도 서로 다른 VPC에 있는 리소스들이 안전하게 통신할 수 있다.

 

4. 서브넷 (Subnet)

 

VPC 내에서는 네트워크를 보다 세분화하여 관리하기 위해 사용하는 것이 서브넷이다.

 

프라이빗 vs 퍼블릭 (Private vs Public)

퍼블릭 서브넷: 인터넷 게이트웨이에 연결되어 있어 외부에서 직접 접근할 수 있다.
주로 웹 서버와 같이 외부에 노출되어야 하는 리소스를 배치다.

프라이빗 서브넷: 인터넷에 직접 노출되지 않으며, 내부 통신에만 사용된다.

데이터베이스 서버나 애플리케이션 서버 등 민감한 데이터를 처리하는 리소스를 배치한다.

 

가용 영역 (Availability Zone)

 

가용 영역은 물리적으로 분리된 데이터 센터 집합이다.

하나의 VPC는 여러 가용 영역에 걸쳐 리소스를 배치할 수 있으며, 이를 통해 장애 발생 시에도 서비스의 연속성을 유지할 수 있다.

 

예를 들어, AWS의 서울 리전에 가용 영역 ap-northeast-2a, ap-northeast-2b, ap-northeast-2c, ap-northeast-2d 네 개가 있고,
각 가용 영역에 서브넷을 둘 수 있다.

 

5. 인터넷 게이트웨이 (Internet Gateway) & NAT 게이트웨이

 

인터넷 게이트웨이 (Internet Gateway)

 

인터넷 게이트웨이는 VPC와 인터넷 간의 통신을 가능하게 하는 장치다.

퍼블릭 서브넷에 있는 리소스는 인터넷 게이트웨이를 통해 외부와 통신할 수 있다.

반대로 말하면, 인터넷 게이트웨이가 붙어있는 리소스만이 퍼블릭하게 외부와 통신할 수 있다고 할 수 있다.

 

NAT 게이트웨이 (NAT Gateway)

 

NAT 게이트웨이는 프라이빗 서브넷에 있는 리소스가 인터넷에 접근할 수 있도록 중계해주는 역할을 한다.

외부에서는 프라이빗 서브넷의 리소스에 직접 접근할 수 없으며, NAT 게이트웨이를 통해서만 통신이 가능하다.

이를 통해 보안성을 높일 수 있다.

 

그렇기에 프라이빗 서브넷에 있는 인스턴스들은 개별 ip주소를 갖지 않고,
NAT 게이트웨이의 ip 주소만을 사용하여 통신한다.

예컨대, 프라이빗 서브넷의 서버의 ip 주소를 타 서버의 화이트리스트에 등록해야 한다면

NAT 게이트웨이의 ip 주소를 전달하면 된다.

 

인바운드, 아웃바운드 ip 주소는 모두 NAT 게이트웨이의 ip 주소다.

 

6. 인스턴스 (Instance)

 

역할

 

인스턴스는 애플리케이션을 실제로 실행하는 가상 서버다.

각 인스턴스는 서브넷 내에 배치되며, 퍼블릭 또는 프라이빗 서브넷에 위치할 수 있다.

 

Nginx

 

Nginx는 고성능의 웹 서버 및 리버스 프록시 서버로 널리 사용된다.

Nginx는 클라이언트의 요청을 받아 워커 프로세스에게 전달하고, 워커 프로세스는 요청을 처리하여 응답을 생성한다.

 

워커 프로세스 (Worker Process)

 

워커 프로세스는 Nginx 내에서 실제로 요청을 처리하는 단위이다.

각 워커 프로세스는 독립적으로 동작하며, 다수의 요청을 병렬로 처리할 수 있다.

이를 통해 Nginx는 높은 동시성을 유지할 수 있습니다.

 

7. 요청 처리 및 응답

 

요청 처리

1. 클라이언트가 웹사이트에 접속하거나 API 요청을 보낸다.

2. 요청은 인터넷 게이트웨이를 통해 VPC의 퍼블릭 서브넷에 있는 로드 밸런서로 전달된다.

3. 로드 밸런서는 대상 그룹 내의 인스턴스 중 하나를 선택하여 요청을 전달한다.

4. 선택된 인스턴스의 Nginx는 요청을 받아 워커 프로세스에게 전달한다.

5. 워커 프로세스는 요청을 처리하고, 필요한 경우 프라이빗 서브넷에 있는 데이터베이스나 다른 서비스와 통신할 수 있다.

 

응답 전달

1. 워커 프로세스가 생성한 응답은 Nginx를 통해 로드 밸런서로 전달된다.

2. 로드 밸런서는 응답을 클라이언트로 반환한다.

3. 클라이언트는 응답을 받아 사용자에게 표시한다.

 

8. 보안 및 관리

 

보안

보안 그룹(Security Groups): 인스턴스 수준에서 트래픽을 제어한다. 허용된 포트와 IP 범위를 설정하여 불필요한 접근을 차단한다.

네트워크 ACL(Network ACLs): 서브넷 수준에서 트래픽을 제어한다. 인바운드 및 아웃바운드 규칙을 설정하여 보안을 강화한다.

VPN 게이트웨이: 원격지에서 VPC로 안전하게 접근할 수 있도록 VPN 연결을 제공한다.

 

관리 도구

모니터링: CloudWatch와 같은 도구를 사용하여 네트워크와 서버의 상태를 실시간으로 모니터링한다.

오토 스케일링: 트래픽에 따라 인스턴스 수를 자동으로 조절하여 비용 효율성과 성능을 최적화한다.

 

이미지 출처: AWS (https://aws.amazon.com/ko/blogs/networking-and-content-delivery/how-to-securely-publish-internet-applications-at-scale-using-application-load-balancer-and-aws-privatelink/)

728x90