The Performance Efficiency Pillar (성능 효율성 원칙)
AWS Certified Solutions Architect Study Guide - Associate (SAA-C02) EXAM 요약
개요
성능 효율성 (performance efficiency) (on AWS) : 클라우드 특유의 각종 기능을 최대한 활용할 수 있는 능력
핵심 AWS 서비스의 성능 최적화
컴퓨트
워크로드 수요에 맞춰 신속하고 효율적으로 리소스를 제공하는 것이 목적
EC2 인스턴스 타입
인스턴스 타입을 결정할 때 환경설정 파라미터를 참고한다.
인스턴스 타입 파라미터
- ECUs : EC2 컴퓨트 유닛 개수
- vCPUs : 인스턴스에 할당된 가상 CPUs 수
- Physical Processor : 호스트 서버의 프로세서 패밀리
- Clock Speed : 호스트 서버의 클럭 스피드
- Memory : 인스턴스 메모리 양
- Instance Storage : 인스턴스 스토리지 볼륨 크기
- EBS-Optimized Available : 전용 IO 처리용량에 최적화된 EBS 사용여부
- Network Performance : 인스턴스 데이터 전송속도
- IPv6 Support : IPv6 주소 지원 여부
- Processor Architecture : 하드웨어 서버의 32bit / 64bit 여부
- Intel AES-NI : 하드웨어 호스트의 Advanced Encryption
- Standard-New Instructions (AES-NI) : P3, P2, G3, F1 암호화 지시 세트 사용 여부
- Intel AVX : 하드웨어 호스트의 그래픽 및 분석 성능 향상을 위한 부동소수점 지시 세트 사용 여부
- Intel Turbo : 하드웨어 호스트의 단기 성능 부스팅 기능 사용 여부
Auto Scaling
하나의 EC2 인스턴스로 워크로드를 처리할 수 없다면 scale out (horizontally scaling) 하면 된다.
Serverless Workload
EC2 인스턴스 사용 없이도 변화하는 환경에 대응해 효과적으로 컴퓨트 인프라를 배포할 수 있다.
- Docker 같은 컨테이너, Lambda 등의 서버리스 함수
- Amazon Elastic Container Service (ECS) 같은 컨테이너 관리 서비스
- 프론트엔드 추상화 서비스인 AWS Fargate
- Kubernetes 기반의 EKS 등
컴퓨트 서비스별 주요 활용
EC2 인스턴스
복잡한 구성으로 장시간 실행되는 애플리케이션 및 심층적인 모니터링이 요구되는 업무 프로세스
ECS 컨테이너
고확장성의 자동화된 애플리케이션 및 마이크로서비스 배포, 테스트 환경 구성 등
Lambda 함수
백엔드 데이터베이스에서 데이터 인출 작업, 데이터스트림 파싱, 트랜잭션 데이터 처리 등
스토리지
RAID 최적화 EBS 볼륨
- RAID 0 : data striping 통한 IO 성능의 향상
- RAID 1 : 데이터 복제를 통한 안정성 향상
- RAID 5,6 : 성능과 안정성 둘다 높이지만, IOPS 소모 등으로 권장되지 않음
부트 드라이브로 RAID 볼륨을 사용하는 것 또한 권장하지 않는다.
S3 크로스 리전 복제
S3 Cross-Region Replication (CRR) 은 하나의 리전에 있는 버킷 데이터를 자동으로, 비동기적으로 다른 리전의 버킷으로 복사함
Amazon S3 Transfer Acceleration
S3 버킷으로 대용량 파일을 자주 전송하는 경우 CloudFront 엣지 로케이션을 이용하는 Transfer Acceleration 사용이 가능함
CloudFront & S3 Origins
S3 버킷을 origin으로 하여 비디오 및 이미지 서비스를 CloudFront 와 연계하여 제공하는 것이 대표적인 조합이다.
데이터베이스
Amazon RDS 는 관리형 서비스이므로 이를 이용하게 되면 다음과 같은 설정만 신경쓰면 된다.
- 적절한 RDS 인스턴스 타입 선택
- 스키마, 인덱스, 뷰 등 속성을 조절하여 데이터베이스 최적화
- 데이터베이스 기능과 미세 제어용 파라미터 그룹 설정
직접 EC2 인스턴스에 데이터베이스 설치시
일관성, 가용성, 파티션 내구성 중 운영상 우선순위에 따른 상세 설정이 가능하다.
스토리지 볼륨은 IOPS 성능과 아키텍처에 따라 다양한 옵션이 존재하며 이는 DB 성능에 상당한 영향을 미친다.
하드웨어 실패 시 데이터를 보호할 수 있는 지 확인해야 한다.
리소스가 더 많은 워크로드를 처리해야 할 때 자동 확장을 지원하는지 확인해야 한다.
비-데이터베이스 호스팅
때로 AWS S3 과 같은 비 데이터베이스 환경에서 효과적으로 데이터가 호스팅될 수 있다.
Amazon Redshift Spectrum, Athena, Elastic Map Reduce (EMR) 등은 데이터의 효과적인 분석 방법이 될 수 있다.
네트워크 최적화 및 로드 밸런싱
위치 기반 저지연성 라우팅 기법인 Route53과 CloudFront는 VPC Endpoint와 AWS Direct Connect와 더불어 강력한 네트워킹의 중요한 요소다.
광대역 EC2 인스턴스, 강화 네트워킹 (enhanced networking) 을 지원하는 Intel 82599 Virtual Function, Elastic Network Adapter, Elastic Fabric Adapter 등
로드 밸런서를 이용하면 다양한 운영 업무가 자동화되고 확장성또한 겸비하게 된다.
ALB
Application Load Balancer 는 HTTP 와 HTTPS 트래픽을 담당한다.
애플리케이션 레이어 (레이어 7) 에서 작동한다.
이를 이용해 마이크로서비스 또는 다른 티어 아키텍처 서비스에 트래픽을 전송할 수 있다.
NLB
Network Load Balancer 는 TCP 트래픽을 담당한다.
트랜스포트 레이어 (레이어 4) 에서 작동한다.
고용량 데이터 전송 또는 급증하는 트래픽에 대응하기 적합하다.
Auto Scaling, Elastic Container Service, CloudFormation, AWS VPN 등 서비스와 통합해서 사용할 수 있다.
클라우드 인프라 자동화
리소스를 스크립트화 할 수 있다는 것이 가상화의 가장 큰 장점이다. 즉, 코드로서의 인프라 (Infrastructure as a Code) 환경을 제공한다.
CloudFormation
인프라 리소스 스택을 관리할 수 있게 해준다.
템플릿은 JSON 혹은 YAML 포맷의 텍스트 파일이다.
템플릿 생성
- 브라우저 기반 드래그앤드롭 인터페이스 사용
- LAMP 웹서버, WordPress 인스턴스 등 사전 정의된 템플릿 활용
- 직접 템플릿 작성 후 업로드
CloudFormation Stack
템플릿으로 정의한 리소스 그룹
서드파티 자동화 솔루션
Bash 나 Windows PowerShell 사용하여 인프라 자동화 스크립트 생성이 가능하다.
Puppet, Chef, Ansible 등 서드파티 환경설정 관리 도구를 이용하여 AWS 인프라 관리 또한 가능하다.
AWS OpsWorks
Chef 버전과 Puppet 버전을 통하여 환경 설정 관리 도구를 지원한다.
인프라 환경설정 검토 및 최적화
목표 달성을 위한 통찰은 클라우드 인프라와 리소스의 모니터링을 통해 얻을 수 있다.
모니터링은 다음 네 가지 목표를 가진다.
- 리소스 환경설정의 변경 사항을 관찰 : AWS Config 이용하기
- AWS 서비스의 변경 사항을 관찰하기 : 새 서비스, 기존 서비스 업데이트 내역 등
- 수동적으로 어플리케이션 모니터링 : 성능과 가용성의 모니터링, CloudWatch 이용하기
- 능동적으로 어플리케이션 검증 : 로드 테스트를 통해 문제를 선제적으로 찾기
로드 테스트
stress test 라고도 하며, 통제된 환경에서 워크로드를 추가해 나가며 리소스와 서비스가 어떻게 대응하는지 확인하는 시뮬레이션.
테스트 환경은 CloudFront와 같은 오케스트레이션 도구 또는 Amazon ECS 를 이용해 신속히 구현 가능하다.
CloudWatch 를 활성화해 성능의 하한선 설정 및 일관된 성능지표를 통해 결과 비교의 표준안을 마련할 수 있다.
시각화
모니터링 및 테스트 결과 데이터는 적절한 시기에 Simple Notification Service (SNS) 메시지 또는 이메일로 전달해야 한다.
EC2 콘솔의 모니터링 탭 뿐만 아니라, CloudWatch 대시보드를 커스터마이징하여 이를 시각화할 수 있다.
데이터 작업 최적화
캐싱
어플리케이션이 S3 버킷에 저장된 파일 또는 RDBMS 데이터 등에 빈번히 접속한다면 클라이언트 가까이 이들의 사본을 둘 수 있다.
캐싱 사본은 TTL이 경과되기 전까지 사용자에게 전달된다.
ElastiCache를 사용하지 않는다면 EC2 인스턴스에서 Varnish 와 같은 리버스 프록시를 실행하여 비슷한 효과를 낼 수 있다.
Amazon ElastiCache
ElastiCache 클러스터는 하나 이상의 노드로 구성된다.
Memcached 엔진
설정 및 배포가 간단하여 확장성이 높다
멀티 스레드 기반이므로 실행 속도가 빠르다
객체 (BLOB) 만 읽고 쓸 수 있는 인메모리 key-value 데이터 스토어이기에 유연성은 부족하다.
Redis 엔진
객체 외에도 다양한 복합 데이터 타입을 지원한다.
데이터가 디스크에 보존되므로 스냅샷을 통해 복원할 수 있다.
영구 데이터 보존 방식을 이용해 세션 캐싱으로 성능 향상이 가능하다.
기타 캐싱 솔루션
RDS에서 최대 5개의 read replicas 를, Aurora 의 경우 15개까지 읽기 사본을 추가할 수 있다.
이들을 이용하면 원본 DB의 부담을 줄이고 원본과 사본 모두의 반응 속도를 높일 수 있다.
이 경우 primary database failure 시 read replica 를 승격시킬 수 있다.
CloudFront 또한 클라이언트 인근 엣지 로케이션의 S3 에 원본의 사본을 생성한 뒤 컨텐츠를 제공하는 캐싱 서비스이다.
데이터 파티셔닝 / 샤딩
partitioning 혹은 sharding을 이용한 수평적 확장 기법으로 DB 응답 속도를 높일 수 있다.
Amazon DynamoDB Streams Kinesis Adapter 를 이용하면 실시간으로 데이터 전송 및 DynamoDB 데이터의 처리가 가능하다.
Kinesis는 데이터 레코즈 조직화에 shards 를 사용한다.
Kinesis Stream 은 고가용성의 완전 관리형 실시간 데이터 처리 서비스이다.
데이터 압축
네트워크 대역폭에 한계가 있고 전송하는 데이터의 크기를 줄일 수 없다면, 두 가지 선택지가 있다.
데이터의 크기 줄이기
전송 전에 데이터를 압축해 네트워크로 보내는 방법을 생각해야 한다.
이는 AWS 서비스 내에서 압축 작업이 진행되기도 한다 (CloudFront 등)
네트워크의 한계 우회하기
Snowball 을 이용하여 S3 저장 데이터를 효율적으로 전송한다.
코멘트
최적화하지 않는 것이 최고의 최적화다..라고 배워왔던 프로그래머 시절도 있었지만, 피같은 돈이 줄줄 새게 되는 클라우드만큼은 다르다.
얼마나 잘 알고 얼마나 적절한 상품을, 잘 설정하고 연계시키느냐에 따라서 차이가 극명할 것만 같은 파트였다.
'공부한 이야기 > 클라우드' 카테고리의 다른 글
AWS SAA - Marked Questions I (0) | 2022.07.31 |
---|---|
AWS SAA - The Operational Excellence Pillar (운영 우수성 원칙) (0) | 2022.07.31 |
AWS SAA - The Cost Optimization Pillar (비용 최적화 원칙) (0) | 2022.07.30 |
AWS SAA - The Security Pillar (보안성 원칙) (0) | 2022.07.29 |
AWS SAA - The Reliability Pillar (안정성 원칙) (0) | 2022.07.27 |