성능 효율성
성능 효율성 원칙에는 컴퓨팅 리소스를 시스템 요구 사항에 맞게 효율적으로 사용하고, 수요 변화 및 기술 변화에 따라 이러한 효율성을 유지하는 기능이 포함됩니다. 이(가) 포함됩니다.
성능 효율성 원칙에서는 설계 원칙 개요, 모범 사례 및 질문 사항을 제공합니다. 구현 방법에 대한 규범적 지침은 성능 효율성 부문 백서에서 확인할 수 있습니다.
설계 원칙
클라우드에는 성능 효율성에 대한 five개의 설계 원칙이 있습니다.
-
고급 기술의 대중화: 팀에서 고급 기술을 손쉽게 구현할 수 있도록 복잡한 태스크를 클라우드 공급업체에 위임합니다. IT 팀에 새로운 기술의 호스팅 및 실행에 대해 알아볼 것을 요청하는 대신 기술을 서비스 형태로 사용하는 것을 고려해보십시오. 예를 들어 NoSQL 데이터베이스, 미디어 트랜스코딩 및 기계 학습은 모두 전문 지식이 요구되는 기술입니다. 클라우드에서는 이러한 기술이 팀에서 사용할 수 있는 서비스 형식으로 제공되므로 팀은 리소스 프로비저닝 및 관리가 아닌 제품 개발에 집중할 수 있습니다.
-
몇 분 만에 전 세계에 배포: 전 세계의 여러 AWS 리전에 워크로드를 배포하면 최소한의 비용으로 지연 시간을 줄이고 고객 경험을 개선할 수 있습니다.
-
서버리스 아키텍처 사용: 서버리스 아키텍처에서는 물리적 서버를 실행하고 유지 관리하지 않고도 기존의 컴퓨팅 활동을 수행할 수 있습니다. 예를 들어 서버리스 스토리지 서비스를 정적 웹 사이트로 사용하고(웹 서버 불필요) 이벤트 서비스를 통해 코드를 호스팅할 수 있습니다. 이렇게 하면 물리적 서버 관리로 인한 운영 부담이 없어집니다. 또한 이러한 관리형 서비스는 클라우드 규모에서 운영되므로 트랜잭션 비용을 절감할 수 있습니다.
-
실험 횟수 증가: 자동화할 수 있는 가상 리소스를 활용하며 여러 가지 인스턴스, 스토리지 또는 구성에 대한 비교 테스트를 신속하게 수행할 수 있습니다.
-
기계적 동조 고려: 클라우드 서비스가 어떻게 사용되는지 파악하고 항상 워크로드 목표에 가장 부합하는 기술 접근 방식을 사용합니다. 예를 들어 데이터베이스 또는 스토리지 접근 방식을 선택할 때는 데이터 액세스 패턴을 고려합니다.
정의
클라우드에는 성능 효율성에 대한 four개의 모범 사례 영역이 있습니다.
고성능 아키텍처 구축할 때는 데이터 기반 접근 방식을 취합니다. 개괄적 설계부터 리소스 유형 선택 및 구성에 이르는 아키텍처의 모든 측면에 대한 데이터를 수집합니다.
정기적으로 선택 사항을 검토함으로써 계속 진화하는 AWS 클라우드를 최대한 활용할 수 있습니다. 모니터링을 수행하면 예상 성능과의 차이를 인식할 수 있습니다. 압축 또는 캐싱을 사용하거나 일관성 요구 사항을 완화하는 등의 절충을 통해 아키텍처를 설계하면 성능을 개선할 수 있습니다.
모범 사례
선택
특정 워크로드에 대한 최적의 솔루션은 다양하며 종종 여러 접근 방식이 결합된 솔루션을 사용하게 됩니다. Well-Architected 워크로드의 경우 다수의 솔루션이 사용되며 다양한 특성을 사용하여 성능을 높일 수 있습니다.
AWS 리소스는 다양한 유형과 구성으로 제공되므로 워크로드 요구 사항에 가장 근접한 접근 방식을 쉽게 찾을 수 있습니다. 또한 온프레미스 인프라에서는 쉽게 사용할 수 없는 옵션도 제공됩니다. 예를 들어 Amazon DynamoDB와 같은 관리형 서비스는 완전관리형 NoSQL 데이터베이스로, 어떤 규모에서도 지연 시간이 한 자릿수 밀리초 단위로 매우 짧습니다.
다음 질문은 성능 효율성에 대한 이러한 고려 사항을 중점적으로 다룹니다.
PERF 1: 최고의 성능을 제공하는 아키텍처를 선택하려면 어떻게 해야 합니까? |
데이터 기반 접근 방식으로 아키텍처에 적합한 패턴 및 구현을 선택하면 경제적인 솔루션을 구축할 수 있습니다. AWS 솔루션스 아키텍트, AWS 참조 아키텍처 및 APN(AWS 파트너 네트워크) 파트너는 업계 지식을 바탕으로 사용자가 아키텍처를 선택하는 과정을 도울 수 있습니다. 하지만 아키텍처를 최적화하기 위해서는 벤치마킹 또는 로드 테스트를 통해 획득한 데이터가 필요합니다.
아키텍처는 여러 아키텍처 접근 방식(예: 이벤트 기반, ETL 또는 파이프라인)을 결합하게 될 가능성이 높습니다. 아키텍처 구현에는 아키텍처 성능 최적화에 적합한 AWS 서비스를 사용하게 됩니다. 다음 섹션에서는 고려할 네 가지 주요 리소스 유형(컴퓨팅, 스토리지, 데이터베이스, 네트워크)에 대해 살펴봅니다.
컴퓨팅
성능 요구 사항을 충족하고 비용 및 작업 효율을 대폭 개선하는 컴퓨팅 리소스를 선택하면 동일한 수의 리소스로 더 많은 것을 달성할 수 있습니다. 컴퓨팅 옵션을 평가할 때는 워크로드 성능 및 비용에 대한 요구 사항을 인지하고 이를 사용하여 정보에 기반을 둔 의사 결정을 내려야 합니다.
AWS에서 컴퓨팅은 인스턴스, 컨테이너, 함수의 세 가지 형태로 제공됩니다.
-
인스턴스는 버튼 또는 API 호출 한 번으로 기능을 변경할 수 있는 가상화된 서버입니다. 클라우드에서는 리소스를 한번 결정하면 그대로 고정되는 것이 아니므로 다양한 서버 유형을 시험해 볼 수 있습니다. AWS에서는 이러한 가상 서버 인스턴스를 다양한 제품군과 크기로 제공하며 SSD(Solid-State Drive)와 GPU(그래픽 처리 장치)를 비롯한 매우 다양한 기능을 제공합니다.
-
컨테이너는 애플리케이션 및 종속성을 리소스가 격리된 프로세스에서 실행할 수 있는 운영 체제 가상화 방식입니다. AWS Fargate는 컨테이너용 서버리스 컴퓨팅입니다. 컴퓨팅 환경의 설치, 구성 및 관리를 제어해야 한다면 Amazon EC2를 사용할 수 있습니다. Amazon Elastic Container Service(ECS) 또는 Amazon Elastic Kubernetes Service (EKS)와 같은 다수의 컨테이너 오케스트레이션 플랫폼 중에서 선택할 수도 있습니다.
-
함수는 사용자가 실행하려는 코드에서 실행 환경을 추상화합니다. 예를 들어, AWS Lambda를 이용하면 인스턴스를 실행하지 않고도 코드를 실행할 수 있습니다.
다음 질문은 성능 효율성에 대한 이러한 고려 사항을 중점적으로 다룹니다.
PERF 2: 컴퓨팅 솔루션을 어떻게 선택합니까? |
컴퓨팅 사용을 설계할 때는 이용 가능한 탄력성 메커니즘을 활용하여 수요 변화에 맞춰 성능을 유지할 수 있는 충분한 용량을 확보해야 합니다.
스토리지
클라우드 스토리지는 워크로드에 사용되는 정보를 보관하는 클라우드 컴퓨팅의 중요한 구성 요소입니다. 클라우드 스토리지는 일반적으로 기존 온프레미스 스토리지 시스템보다 안정성, 확장성 및 보안이 뛰어납니다. 객체, 블록 및 파일 스토리지 서비스와 워크로드에 사용할 클라우드 데이터 마이그레이션 옵션 중에서 선택합니다.
AWS에서 스토리지는 객체, 블록 및 파일의 세 가지 형태로 제공됩니다.
-
객체 스토리지는 모든 인터넷 위치에서 사용자가 생성한 콘텐츠, 활성 아카이브, 서버리스 컴퓨팅, 빅 데이터 스토리지 또는 백업 및 복구를 위한 데이터에 액세스할 수 있게 하는 확장 가능하고 내구성이 뛰어난 플랫폼을 제공합니다. Amazon Simple Storage Service(Amazon S3)는 업계 최고의 확장성, 데이터 가용성, 보안 및 성능을 제공하는 객체 스토리지 서비스입니다. Amazon S3는 99.999999999%의 내구성을 제공하도록 설계되었으며 전 세계 회사를 위한 수백만 개의 애플리케이션에 대한 데이터를 저장합니다.
-
블록 스토리지는 DAS(Direct-Attached Storage) 또는 SAN(Storage Area Network)과 유사한 고가용성의 일관적이며 지연 시간이 짧은 블록 스토리지를 각 가상 호스트에 제공합니다. Amazon Elastic Block Store(Amazon EBS)는 EC2 인스턴스에서 영구 스토리지에 액세스할 수 있어야 하는 워크로드를 위해 설계되었으며, 적절한 스토리지 용량, 성능 및 비용으로 애플리케이션을 튜닝하는 데 도움이 됩니다.
-
파일 스토리지를 사용하면 여러 시스템에서 공유 파일 시스템에 액세스할 수 있습니다. Amazon Elastic File System(EFS)와 같은 파일 스토리지 솔루션은 대용량 콘텐츠 리포지토리, 개발 환경, 미디어 스토어 또는 사용자 홈 디렉터리와 같은 사용 사례에 적합합니다. Amazon FSx를 사용하면 주요 파일 시스템을 비용 효율적으로 손쉽게 시작하고 실행할 수 있으므로 널리 사용되는 오픈 소스 및 상용 라이선스 파일 시스템의 풍부한 기능 세트와 빠른 성능을 활용할 수 있습니다.
다음 질문은 성능 효율성에 대한 이러한 고려 사항을 중점적으로 다룹니다.
PERF 3: 스토리지 솔루션을 어떻게 선택합니까? |
원하는 성능을 달성하려면 스토리지 솔루션을 선택할 때 액세스 패턴에 일치하는지 확인하는 것이 중요합니다.
데이터베이스
클라우드는 워크로드에서 발생하는 다양한 문제를 해결할 수 있도록 특별히 구축된 데이터베이스 서비스를 제공합니다. 관계형, 키-값, 문서, 인메모리, 그래프, 시계열 및 원장 데이터베이스를 비롯하여 특별히 구축된 다양한 데이터베이스 엔진 중에서 선택할 수 있습니다. 특정 문제 또는 문제 그룹을 해결할 수 있는 최고의 데이터베이스를 선택할 수 있으므로 제한적이고 획일적인 범용 데이터베이스에서 벗어나 고객의 성능 요구 사항을 충족하는 애플리케이션을 구축하는 데 집중할 수 있습니다.
AWS에서는 관계형, 키-값, 문서, 인메모리, 그래프, 시계열 및 원장 데이터베이스를 비롯하여 특별히 구축된 여러 데이터베이스 엔진 중에서 선택할 수 있습니다. AWS 데이터베이스를 사용하면 서버 프로비저닝, 패치 적용, 설정, 구성, 백업 또는 복구와 같은 데이터베이스 관리 태스크에 대해 걱정할 필요가 없습니다. AWS는 자가 복구 스토리지와 Auto Scaling을 통해 클러스터를 지속적으로 모니터링하여 워크로드의 실행 상태를 유지합니다. 따라서 고객은 가치가 더 높은 애플리케이션 개발에 집중할 수 있습니다.
다음 질문은 성능 효율성에 대한 이러한 고려 사항을 중점적으로 다룹니다.
PERF 4: 데이터베이스 솔루션 선택 방법 |
워크로드의 데이터베이스 접근 방식은 성능 효율성에 상당한 영향을 미칩니다. 데이터베이스 영역은 데이터 기반 접근 방식이 아니라 조직의 기본값에 따라 선택되는 경우가 많습니다. 스토리지와 마찬가지로 워크로드의 액세스 패턴을 고려하는 것이 중요하며, 다른 비데이터베이스 솔루션(예: 그래프, 시계열 또는 인메모리 스토리지 데이터베이스 사용)이 보다 효율적으로 문제를 해결할 수 있는지 여부도 고려해야 합니다.
네트워크
네트워크는 모든 워크로드 구성 요소 사이에 있기 때문에 워크로드 성능 및 동작에 긍정적, 부정적인 영향을 미칠 수 있습니다. 또한 클러스터 성능을 높이는 데 있어서 심층적인 네트워크 지식이 요구되는 HPC(고성능 컴퓨팅)와 같이 네트워크 성능에 크게 의존하는 워크로드도 있습니다. 따라서 대역폭, 지연 시간, 지터 및 처리량에 대한 워크로드 요구 사항을 결정해야 합니다.
AWS에서 네트워킹은 가상화되고 다양한 유형 및 구성으로 제공됩니다. 따라서 요구 사항에 일치하는 네트워킹 방법을 보다 쉽게 찾을 수 있습니다. AWS는 네트워크 트래픽을 최적화하는 제품 기능(예: 향상된 네트워킹, Amazon EBS 최적화 인스턴스, Amazon S3 Transfer Acceleration 및 동적 Amazon CloudFront)을 제공합니다. 또한 AWS는 네트워크 거리 또는 지터를 줄이기 위한 네트워킹 기능(예: Amazon Route53 지연 시간 기반 라우팅, Amazon VPC 엔드포인트, AWS Direct Connect 및 AWS Global Accelerator)도 제공합니다.
다음 질문은 성능 효율성에 대한 이러한 고려 사항을 중점적으로 다룹니다.
PERF 5: 네트워킹 솔루션을 구성하려면 어떻게 해야 합니까? |
네트워크를 배포할 때는 위치를 고려해야 합니다. 리소스를 사용할 위치 가까이 해당 리소스가 배치되도록 선택하여 거리를 줄일 수 있습니다. 워크로드가 변경되면 네트워킹 지표를 사용하여 네트워킹 구성을 변경합니다. 리전, 배치 그룹 및 엣지 서비스를 활용하여 성능을 크게 개선할 수 있습니다. 클라우드 기반 네트워크는 빠르게 재구축되거나 수정될 수 있으므로 성능 효율성을 유지하려면 네트워크 아키텍처를 지속적으로 변경해야 합니다.
검토
클라우드 기술은 빠르게 발전하고 있습니다. 따라서 지속적으로 성능을 개선하려면 워크로드 구성 요소에 새로운 기술 및 접근 방식이 사용되고 있는지 확인해야 합니다. 또한 워코로드 구성 요소에 대한 변경을 지속적으로 평가하고 고려하여 성능 및 비용 목표가 충족되고 있는지 확인해야 합니다. 기계 학습 및 AI(인공 지능)과 같은 새로운 기술을 사용하면 새로운 고객 경험을 구축하고 모든 비즈니스 워크로드에 걸쳐 혁신을 달성할 수 있습니다.
고객의 요구 사항에 따른 AWS의 지속적인 혁신을 활용하십시오. AWS는 정기적으로 새로운 리전, 엣지 로케이션, 서비스 및 기능을 출시합니다. 이러한 릴리스를 적용하면 아키텍처의 성능 효율성을 개선할 수 있습니다.
다음 질문은 성능 효율성에 대한 이러한 고려 사항을 중점적으로 다룹니다.
PERF 6: 새 릴리스를 활용하여 워크로드를 어떻게 발전시킵니까? |
아키텍처의 성능 저하는 성능 검토 프로세스가 없거나 효과적이지 않은 경우 주로 발생합니다. 아키텍처의 성능이 불량한 경우 이 성능 검토 프로세스를 시행하면 Deming의 PDCA(계획-작업-검사-조치) 주기를 적용해 반복 과정을 개선할 수 있습니다.
모니터링
워크로드를 구현한 후에는 고객이 영향을 받기 전에 모든 문제를 해결할 수 있도록 성능을 모니터링해야 합니다. 모니터링 지표를 사용하여 임계값을 초과할 경우 경보가 생성되도록 해야 합니다.
Amazon CloudWatch는 워크로드 모니터링, 시스템 전체 성능 변경에 대한 대응, 리소스 사용률 최적화 및 운영 상태의 통합 보기에 필요한 데이터와 실행 가능한 인사이트를 제공하는 모니터링 및 관찰 서비스입니다. CloudWatch는 AWS 및 온프레미스 서버에서 실행되는 워크로드의 로그, 지표 및 이벤트 형태로 모니터링 및 운영 데이터를 수집합니다. AWS X-Ray는 개발자가 프로덕션의 분산 애플리케이션을 분석하고 디버깅하는 데 도움이 됩니다. AWS X-Ray를 사용하면 애플리케이션의 성능을 파악하고 근본 원인을 발견하며 성능 병목 현상을 식별할 수 있습니다. 이러한 분석 정보를 활용해 문제에 빠르게 대응하고 워크로드가 원활하게 실행되는 상태를 유지할 수 있습니다.
다음 질문은 성능 효율성에 대한 이러한 고려 사항을 중점적으로 다룹니다.
PERF 7: 리소스 성능을 모니터링하려면 어떻게 해야 합니까? |
효율적인 모니터링 솔루션에서는 오탐이 발생하지 않아야 합니다. 자동 트리거는 수동 작업으로 인한 오류를 방지하고 문제를 해결하는 데 걸리는 시간을 줄일 수 있습니다. 프로덕션 환경에서 시뮬레이션이 진행되는 게임 데이를 계획하여 경보 솔루션을 테스트하고 해당 솔루션이 문제를 정확하게 인지하는지를 확인합니다.
절충
솔루션을 설계할 때는 최적의 방식이 적용되도록 각 방식의 장단점을 고려해야 합니다. 상황에 따라 더 우수한 성능을 제공하기 위해 일관성/내구성/공간 및 시간/지연 시간 중 우선적으로 고려할 요소를 선택할 수 있습니다.
AWS를 사용하면 몇 분 내에 전 세계의 여러 위치에 리소스를 배포하여 최종 사용자에게 더욱 가깝게 다가갈 수 있습니다. 또한 데이터베이스 시스템과 같은 정보 스토어에 읽기 전용 복제본을 동적으로 추가하여 기본 데이터베이스의 로드를 줄일 수 있습니다.
다음 질문은 성능 효율성에 대한 이러한 고려 사항을 중점적으로 다룹니다.
PERF 8: 절충을 통해 성능을 개선하려면 어떻게 해야 합니까? |
워크로드를 변경할 때는 지표를 수집 및 평가하여 변경의 영향을 확인합니다. 시스템 및 최종 사용자에 대한 영향을 모두 측정하여 절충 작업이 워크로드에 미치는 영향을 파악합니다. 로드 테스트 등의 체계적인 방식을 사용해 개별 요소 절충 시, 성능을 개선할 수 있는지 여부를 파악합니다.
리소스
성능 효율성 관련 AWS 모범 사례에 대해 자세히 알아보려면 다음 리소스를 참조하십시오.
Performance Efficiency PillarAmazon S3 Performance Optimization
Amazon EBS Volume Performance
AWS re:Invent 2019: Amazon EC2 foundations (CMP211-R2)
AWS re:Invent 2019: Leadership session: Storage state of the union (STG201-L)
AWS re:Invent 2019: Leadership session: AWS purpose-built databases (DAT209-L)
AWS re:Invent 2019: Connectivity to AWS and hybrid AWS network architectures (NET317-R1)
AWS re:Invent 2019: Powering next-gen Amazon EC2: Deep dive into the Nitro system (CMP303-R2)
AWS re:Invent 2019: Scaling up to your first 10 million users (ARC211-R)