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

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

워크로드 성능에 미치는 영향을 기준으로 시스템과 네트워크 간의 통신에 사용할 프로토콜을 결정합니다.

원하는 처리량을 달성하려면 지연 시간과 대역폭 간의 관계를 고려해야 합니다. 파일 전송이 전송 제어 프로토콜(TCP)을 사용하는 경우 지연 시간이 길수록 전체 처리량이 줄어들 가능성이 높습니다. 이 문제는 TCP 튜닝 및 최적화된 전송 프로토콜을 사용하여 해결되지만 한 가지 해결 방법은 사용자 데이터그램 프로토콜(UDP)을 사용하는 것입니다.

일반적인 안티 패턴:

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

이 모범 사례 확립의 이점: 사용자와 워크로드 구성 요소 간의 통신에 적절한 프로토콜이 사용되는지 확인하면 애플리케이션의 전반적인 사용자 경험을 개선하는 데 도움이 됩니다. 예를 들어, 연결 없는 UDP는 빠른 속도를 허용하지만 재전송 기능 또는 높은 신뢰성을 제공하지 않습니다. TCP는 모든 기능을 갖춘 프로토콜이지만 패킷 처리에 더 많은 오버헤드가 필요합니다.

이 모범 사례가 확립되지 않을 경우 노출되는 위험 수준: 중간

구현 가이드

애플리케이션에 맞는 다양한 프로토콜을 선택할 수 있고 이 분야에 대한 전문 지식이 있다면 다른 프로토콜을 사용하여 애플리케이션과 최종 사용자 경험을 최적화하세요. 이 접근 방식은 상당히 어려우므로 먼저 다른 방법으로 애플리케이션을 최적화한 경우에만 시도해야 합니다.

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

TCP 사용을 고려해야 할 시기

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

UDP 사용을 고려해야 할 시기

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

SRD 사용을 고려해야 할 시기

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

구현 단계

  • 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 스토리지 서비스로 안전하게 확장하고 관리할 수 있습니다.

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

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

  • Network Load Balancer(NLB)를 사용하여 인증 및 권한 부여, 로깅, DNS, IoT, 스트리밍 미디어 등 UDP 프로토콜에 의존하는 서비스를 배포하세요. NLB는 여러 대상에 걸쳐 수신되는 UDP 트래픽을 배포하여 워크로드를 수평 확장하고 용량을 늘리고 단일 대상의 오버헤드를 줄일 수 있습니다.

  • 고성능 컴퓨팅(HPC) 워크로드의 경우 Elastic Network Adapter(ENA) Express 기능 사용을 고려하세요. 이 기능은 SRD 프로토콜을 사용하여 EC2 인스턴스 간의 네트워크 트래픽에 대해 더 높은 단일 흐름 대역폭(25Gbps) 및 더 짧은 테일 지연 시간(99.9 백분위수)을 제공함으로서 네트워크 성능을 개선합니다.

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

리소스

관련 문서:

관련 비디오:

관련 예제: