PERF05-BP05 성능을 개선할 수 있는 네트워크 프로토콜 선택 - AWS Well-Architected Framework

PERF05-BP05 성능을 개선할 수 있는 네트워크 프로토콜 선택

워크로드의 성능 요구 사항을 평가하고 워크로드의 전반적인 성능을 최적화하는 네트워크 프로토콜을 선택합니다.

원하는 처리량을 달성하려면 지연 시간과 대역폭 간의 관계를 고려해야 합니다. 예를 들어 파일 전송이 전송 제어 프로토콜(TCP)을 사용하는 경우 지연 시간이 길수록 전체 처리량이 줄어듭니다. 이 문제는 TCP 튜닝 및 최적화된 전송 프로토콜을 사용하여 해결되며 경우에 따라 사용자 데이터그램 프로토콜(UDP)을 사용하기도 합니다.

Scalable Reliable Datagram(SRD) 프로토콜은 신뢰할 수 있는 데이터그램 전달을 제공하는 AWS for Elastic Fabric Adapter에서 구축한 네트워크 전송 프로토콜입니다. TCP 프로토콜과 달리 SRD는 패킷을 재정렬하여 순서와 관계 없이 전달할 수 있습니다. SRD의 순서와 관계 없이 전달 메커니즘은 대체 경로를 통해 패킷을 병렬로 전송하므로 처리량이 증가합니다.

일반적인 안티 패턴:

  • 성능 요구 사항과 관계없이 모든 워크로드에 TCP를 사용합니다.

이 모범 사례 확립의 이점:

  • 워크로드 구성 요소 간 통신에 적합한 프로토콜을 선택하면 해당 워크로드에 대한 성능을 극대화할 수 있습니다.

  • 사용자와 워크로드 구성 요소 간의 통신에 적절한 프로토콜이 사용되는지 확인하면 애플리케이션의 전반적인 사용자 경험을 개선하는 데 도움이 됩니다. 예를 들어, TCP 및 UDP를 함께 사용하면 VDI 워크로드는 중요한 데이터에 대한 TCP의 신뢰성과 실시간 데이터에 대한 UDP의 속도를 활용할 수 있습니다.

이 모범 사례가 확립되지 않을 경우 노출되는 위험 수준: 중간(부적절한 네트워크 프로토콜을 사용하면 느린 응답 시간, 긴 대기 시간 및 낮은 확장성과 같은 성능 저하가 발생)

구현 가이드

워크로드의 성능을 향상하기 위한 주요 고려 사항은 지연 시간 및 처리량 요구 사항을 이해한 다음 성능을 최적화하는 네트워크 프로토콜을 선택하는 것입니다.

TCP 사용을 고려해야 할 시기

TCP는 신뢰할 수 있는 데이터 전달을 제공하며 신뢰성과 보장된 데이터 전달이 중요한 워크로드 구성 요소 간의 통신에 사용될 수 있습니다. 많은 웹 기반 애플리케이션은 HTTP 및 HTTPS와 같은 TCP 기반 프로토콜을 사용하여 AWS 서버와 통신하기 위한 TCP 소켓을 열어줍니다. 이메일 및 파일 데이터 전송은 데이터 교환 속도 및 네트워크 정체를 제어할 수 있는 TCP의 기능으로 인해 TCP를 사용하는 일반적인 애플리케이션입니다. TCP와 함께 TLS를 사용하면 통신에 약간의 오버헤드가 추가되어 지연 시간이 증가하고 처리량이 줄어들 수 있습니다. 오버헤드는 주로 완료하는 데 여러 번의 왕복이 필요할 수 있는 핸드셰이크 프로세스의 추가 오버헤드에서 발생합니다. 핸드셰이크가 완료되면 데이터 암호화 및 복호화의 오버헤드는 비교적 작습니다.

UDP 사용을 고려해야 할 시기

UDP는 비연결 지향 프로토콜이므로 로그, 모니터링 및 VOIP 데이터와 같이 빠르고 효율적인 전송이 필요한 애플리케이션에 적합합니다. 또한 워크로드의 최적 성능을 보장하기 위해 많은 클라이언트의 작은 쿼리에 응답하는 워크로드 구성 요소가 있는 경우 UDP를 사용하는 것이 좋습니다. Datagram Transport Layer Security(DTLS)는 TLS의 UDP에 해당합니다. UDP와 함께 DTLS를 사용하면 핸드셰이크 프로세스가 간소화되므로 오버헤드가가 데이터를 암호화하고 복호화할 때 발생합니다. DTLS는 또한 보안 파라미터를 나타내고 변조를 감지하기 위한 추가 필드를 포함하기 때문에 UDP 패킷에 소량의 오버헤드를 추가합니다.

SRD 사용을 고려해야 할 시기

Scalable Reliable Datagram(SRD)은 여러 경로에 걸쳐 트래픽을 로드 밸런싱할 수 있어 고처리량 워크로드에 최적화된 네트워크 전송 프로토콜이며 패킷 감소 또는 연결 장애에서 빠르게 복구합니다. 따라서 SRD는 컴퓨팅 노드 간에 처리량이 많고 지연 시간이 짧은 통신이 필요한 고성능 컴퓨팅(HPC) 워크로드에 가장 효과적입니다. 여기에는 노드 간에 대량의 데이터 전송을 수반하는 시뮬레이션, 모델링 및 데이터 분석과 같은 병렬 처리 작업이 포함될 수 있습니다.

구현 단계

  1. AWS Global AcceleratorAWS Transfer Family 서비스를 사용하여 온라인 파일 전송 애플리케이션의 처리량을 향상합니다. AWS Global Accelerator 서비스를 사용하면 클라이언트 디바이스와 AWS 워크로드 간에 지연 시간을 단축하는 데 도움이 됩니다. AWS Transfer Family를 사용하면 Secure Shell File Transfer Protocol(SFTP) 및 File Transfer Protocol over SSL(FTPS)과 같은 TCP 기반 프로토콜을 사용하여 파일 전송을 AWS 스토리지 서비스로 안전하게 확장하고 관리할 수 있습니다.

  2. 네트워크 지연 시간을 사용하여 TCP가 워크로드 구성 요소 간의 통신에 적합한지 확인합니다. 클라이언트 애플리케이션과 서버 간의 네트워크 지연 시간이 길면 TCP 3방향 핸드셰이크에 시간이 걸릴 수 있습니다. 그렇게 되면 애플리케이션의 응답성에 영향을 줄 수 있습니다. 첫 번째 바이트까지의 시간(TTFB) 및 왕복 시간(RTT)과 같은 지표를 사용하여 네트워크 지연 시간을 측정할 수 있습니다. 워크로드가 사용자에게 동적 콘텐츠를 제공하는 경우, 동적 콘텐츠의 각 오리진에 영구 연결을 설정하는 Amazon CloudFront를 사용하면 각 클라이언트 요청을 지연시킬 수 있는 연결 설정 시간을 제거할 수 있습니다.

  3. TCP 또는 UDP와 함께 TLS를 사용하면 암호화 및 복호화의 영향으로 인해 지연 시간이 증가하고 워크로드에 대한 처리량이 감소합니다. 이러한 워크로드의 경우 Elastic Load Balancing에서 SSL/TLS 오프로딩을 고려하여 백엔드 인스턴스 대신 로드 밸런서가 SSL/TLS 암호화 및 복호화 프로세스를 처리하도록 하여 워크로드 성능을 개선합니다. 이를 통해 백엔드 인스턴스의 CPU 사용률을 줄여 성능을 향상시키고 용량을 늘릴 수 있습니다.

  4. Network Load Balancer(NLB)를 사용하여 인증 및 승인, 로깅, DNS, IoT 및 스트리밍 미디어와 같은 UDP 프로토콜을 이용하는 서비스를 배포하여 워크로드의 성능 및 신뢰성을 향상시킵니다. NLB는 여러 대상에 걸쳐 수신되는 UDP 트래픽을 배포하여 워크로드를 수평 확장하고 용량을 늘리고 단일 대상의 오버헤드를 줄일 수 있습니다.

  5. 고성능 컴퓨팅(HPC) 워크로드의 경우 SRD 프로토콜을 사용하는 Elastic Network Adapter(ENA) Express 기능을 사용하여 EC2 인스턴스 간의 네트워크 트래픽에 대해 더 높은 단일 흐름 대역폭(25Gbps)과 더 짧은 꼬리 지연 시간(99.9 백분위수)을 제공하여 네트워크 성능을 개선하는 것이 좋습니다.

  6. Application Load Balancer(ALB)를 사용하여 워크로드 구성 요소 간에 또는 gRPC 지원 클라이언트와 서비스 간에 gRPC(원격 프로시저 호출) 트래픽을 라우팅하고 부하를 분산합니다. gRPC는 전송에 TCP 기반 HTTP/2 프로토콜을 사용하며 더 가벼운 네트워크 공간, 압축, 효율적인 이진 직렬화, 다양한 언어 지원, 양방향 스트리밍과 같은 성능상의 이점을 제공합니다.

리소스

관련 문서:

관련 동영상:

관련 예시: