

# 소프트웨어 및 아키텍처 패턴
<a name="a-sus-software-architecture-patterns"></a>

**Topics**
+ [SUS 3 소프트웨어 및 아키텍처 패턴을 활용하여 지속 가능성 목표를 지원하려면 어떻게 해야 합니까?](w2aac19c15b9b5.md)

# SUS 3 소프트웨어 및 아키텍처 패턴을 활용하여 지속 가능성 목표를 지원하려면 어떻게 해야 합니까?
<a name="w2aac19c15b9b5"></a>

로드 평준화를 수행하고 배포된 리소스의 높은 활용률을 일관되게 유지하여 소비되는 리소스를 최소화하기 위한 패턴을 구현합니다. 구성 요소는 시간 경과에 따른 사용자 행동의 변화로 인해 사용 부족으로 인해 유휴 상태가 될 수 있습니다. 패턴과 아키텍처를 수정하여 활용률이 낮은 구성 요소를 통합함으로써 전체 활용률을 높입니다. 더 이상 필요하지 않은 구성 요소를 폐기합니다. 워크로드 구성 요소의 성능을 이해하고 리소스를 가장 많이 사용하는 구성 요소를 최적화합니다. 고객이 서비스에 액세스하고 패턴을 구현하는 데 사용하는 디바이스를 숙지하여 디바이스 업그레이드 필요성을 최소화합니다. 

 모범 사례: 

# SUS03-BP01 비동기식 및 예약된 작업을 위한 소프트웨어 및 아키텍처 최적화
<a name="sus_sus_software_a2"></a>

 효율적인 소프트웨어 설계 및 아키텍처를 사용하여 작업 단위당 필요한 평균 리소스를 최소화합니다. 구성 요소를 균일하게 활용하여 작업 간에 유휴 상태인 리소스를 줄이고 로드 급증의 영향을 최소화하는 메커니즘을 구현합니다. 

 **이 모범 사례를 정립하지 않을 경우 노출되는 위험의 수준:** 낮음 

## 구현 가이드
<a name="implementation-guidance"></a>
+  즉각적인 처리가 필요하지 않은 요청을 대기열로 보냅니다. 
+  직렬화를 늘려 파이프라인 전체의 활용률을 균등하게 만듭니다. 
+  입력 대기 중인 유휴 리소스를 방지하기 위해 개별 구성 요소의 용량을 수정합니다. 
+  버퍼를 생성하고 속도 제한을 설정하여 외부 서비스 사용을 원활하게 합니다. 
+  소프트웨어 최적화에 사용할 수 있는 가장 효율적인 하드웨어를 사용합니다. 
+  대기열 기반 아키텍처, 파이프라인 관리 및 온디맨드 인스턴스 작업자를 사용하여 배치 처리의 활용률을 극대화합니다. 
+  동시 실행으로 인한 로드 급증 및 리소스 경합을 방지하기 위해 작업을 예약합니다. 
+  하루 중 전력의 탄소 집약도가 가장 낮은 시간에 작업을 예약합니다. 

## 리소스
<a name="resources"></a>

 **관련 문서:** 
+  [Amazon Simple Queue Service란 무엇입니까?](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html) 
+  [Amazon MQ란 무엇일까요?](https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/welcome.html) 
+  [Amazon SQS 기반 크기 조정](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-using-sqs-queue.html) 
+  [AWS Step Functions란 무엇입니까?](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) 
+  [AWS Lambda란 무엇입니까?](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 
+  [Amazon SQS에서 AWS Lambda 사용](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html) 
+  [Amazon EventBridge란 무엇입니까?](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html) 

 **관련 동영상:** 
+  [AWS에서의 지속 가능한 구축](https://www.youtube.com/watch?v=ARAitMSIxc8) 
+  [이벤트 기반 아키텍처로의 전환](https://www.youtube.com/watch?v=h46IquqjF3E) 

# SUS03-BP02 사용 빈도가 낮거나 전혀 없는 워크로드 구성 요소 제거 또는 리팩터링
<a name="sus_sus_software_a3"></a>

 워크로드 활동을 모니터링하여 시간 경과에 따른 개별 구성 요소의 활용률 변화를 파악합니다. 사용되지 않아 더 이상 필요하지 않은 구성 요소와 사용률이 낮은 구성 요소를 리팩터링하여 낭비되는 리소스를 제한합니다. 

 **이 모범 사례가 수립되지 않을 경우 노출되는 위험의 수준:** 낮음 

## 구현 가이드
<a name="implementation-guidance"></a>
+  기능 구성 요소에 대한 로드(트랜잭션 흐름 및 API 호출과 같은 지표 사용)를 분석하여 사용되지 않아 사용률이 낮은 구성 요소를 식별합니다. 
+  더 이상 필요하지 않은 구성 요소를 폐기합니다. 
+  사용률이 낮은 구성 요소를 리팩터링합니다. 
+  사용률이 낮은 구성 요소를 다른 리소스와 통합하여 사용 효율성을 개선합니다. 

## 리소스
<a name="resources"></a>

 **관련 문서:** 
+  [AWS X-Ray란 무엇입니까?](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) 
+  [Amazon CloudWatch란 무엇입니까?](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 
+  [ServiceLens를 사용하여 애플리케이션의 상태 모니터링](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ServiceLens.html) 
+  [Amazon ECR에서 사용되지 않는 이미지 자동 정리](https://aws.amazon.com/blogs/compute/automated-cleanup-of-unused-images-in-amazon-ecr/) 

 **관련 동영상:** 
+  [AWS에서의 지속 가능한 구축](https://www.youtube.com/watch?v=ARAitMSIxc8) 

# SUS03-BP03 가장 많은 시간 또는 리소스를 소모하는 코드 영역 최적화
<a name="sus_sus_software_a4"></a>

 워크로드 활동을 모니터링하여 가장 많은 리소스를 사용하는 애플리케이션 구성 요소를 식별합니다. 이러한 구성 요소 내에서 실행되는 코드를 최적화하여 성능을 극대화하면서 리소스 사용을 최소화합니다. 

 **이 모범 사례가 수립되지 않을 경우 노출되는 위험의 수준:** 낮음 

## 구현 가이드
<a name="implementation-guidance"></a>
+  리소스 사용량에 따라 성능을 모니터링하여 작업 단위당 리소스 요구 사항이 높은 구성 요소를 최적화 대상으로 식별합니다. 
+  코드 프로파일러를 사용하여 가장 많은 시간 또는 리소스를 사용하는 코드 영역을 최적화 대상으로 식별합니다. 
+  알고리즘을 동일한 결과를 산출하면서 더 효율적인 버전으로 바꿉니다. 
+  하드웨어 가속 기술을 사용하여 실행 시간이 긴 코드 블록의 효율성을 개선합니다. 
+  워크로드에 가장 효율적인 운영 체제 및 프로그래밍 언어를 사용합니다. 
+  불필요한 정렬 및 서식을 제거합니다. 
+  데이터의 변경 빈도와 사용 빈도에 따라 사용되는 리소스를 최소화하는 데이터 전송 패턴을 사용합니다. 예를 들어, 상태 변경 정보가 리소스를 소비하여 폴링하고 가치 없는 '변경 없음' 메시지를 수신하지 않도록 클라이언트에 푸시합니다. 

## 리소스
<a name="resources"></a>

 **관련 문서:** 
+  [Amazon CloudWatch란 무엇입니까?](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 
+  [Amazon CodeGuru Profiler란 무엇입니까?](https://docs.aws.amazon.com/codeguru/latest/profiler-ug/what-is-codeguru-profiler.html) 
+  [FPGA 인스턴스](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/fpga-getting-started.html) 
+  [AWS에서의 구축을 위한 도구의 AWS SDK](https://aws.amazon.com/tools/) 

 **관련 동영상:** 
+  [AWS에서의 지속 가능한 구축](https://www.youtube.com/watch?v=ARAitMSIxc8) 

# SUS03-BP04 고객 디바이스 및 장비에 대한 영향 최소화
<a name="sus_sus_software_a5"></a>

 고객이 서비스를 사용하기 위해 사용하는 디바이스와 장비, 예상 수명 주기, 이러한 구성 요소 교체가 재정 및 지속 가능성에 미치는 영향을 이해합니다. 소프트웨어 패턴 및 아키텍처를 구현하여 고객이 디바이스를 교체하고 장비를 업그레이드해야 하는 필요성을 최소화합니다. 예를 들어, 이전 하드웨어 및 운영 체제 버전과 역호환되는 코드를 사용하여 새로운 기능을 구현하거나 대상 디바이스의 저장 용량을 초과하지 않도록 페이로드 크기를 관리합니다. 

 **이 모범 사례가 수립되지 않을 경우 노출되는 위험의 수준:** 낮음 

## 구현 가이드
<a name="implementation-guidance"></a>
+  고객이 사용하는 디바이스의 인벤토리를 작성합니다. 
+  대표적인 하드웨어 집합과 함께 중앙 관리형 Device Farm을 사용하여 테스트하여 변경 사항이 미치는 영향을 파악하고 개발을 반복하여 지원되는 디바이스를 최대합니다. 
+  페이로드를 구축할 때 네트워크 대역폭과 대기 시간을 고려하고 애플리케이션이 대기 시간이 긴 저대역폭 링크에서 잘 작동하도록 지원하는 기능을 구현합니다. 
+  데이터 페이로드를 사전 처리하여 로컬 처리 요구 사항을 줄이고 데이터 전송 요구 사항을 제한합니다. 
+  서버 측에서 계산 집약적인 활동(예: 이미지 렌더링)을 수행하거나 애플리케이션 스트리밍을 사용하여 구형 디바이스에서 사용자 경험을 개선합니다. 
+  페이로드를 관리하고 로컬 스토리지 요구 사항을 제한하기 위해 특히 대화형 세션의 경우 출력을 분할하고 페이지 번호를 매깁니다. 

## 리소스
<a name="resources"></a>

 **관련 문서:** 
+  [AWS Device Farm이란 무엇입니까?](https://docs.aws.amazon.com/devicefarm/latest/developerguide/welcome.html) 
+  [Amazon AppStream 2.0 설명서](https://docs.aws.amazon.com/appstream2/) 
+  [NICE DCV](https://docs.aws.amazon.com/dcv/) 
+  [Amazon Elastic Transcoder 설명서](https://docs.aws.amazon.com/elastic-transcoder/) 

 **관련 동영상:** 
+  [AWS에서의 지속 가능한 구축](https://www.youtube.com/watch?v=ARAitMSIxc8) 

# SUS03-BP05 데이터 액세스 및 스토리지 패턴을 가장 잘 지원하는 소프트웨어 패턴 및 아키텍처 사용
<a name="sus_sus_software_a6"></a>

 데이터가 워크로드 내에서 사용되고, 사용자가 소비하고, 전송 및 저장되는 방식을 이해합니다. 데이터 처리 및 스토리지 요구 사항을 최소화하는 기술을 선택합니다. 

 **이 모범 사례가 수립되지 않을 경우 노출되는 위험의 수준:** 낮음 

## 구현 가이드
<a name="implementation-guidance"></a>
+  데이터 액세스 및 스토리지 패턴을 분석합니다. 
+  분석 실행 시 불필요한 처리 작업을 방지하고 프로비저닝된 총 스토리지를 줄이기 위해 Parquet과 같은 효율적인 파일 형식으로 데이터 파일을 저장합니다. 
+  기본적으로 압축된 데이터와 함께 작동하는 기술을 사용합니다. 
+  가장 많이 나타나는 쿼리 패턴을 가장 효과적으로 지원하는 데이터베이스 엔진을 사용합니다. 
+  인덱스 설계가 효율적인 쿼리 실행을 지원하도록 데이터베이스 인덱스를 관리합니다. 
+  사용되는 네트워크 용량을 줄이는 네트워크 프로토콜을 선택합니다. 

## 리소스
<a name="resources"></a>

 **관련 문서:** 
+  [Athena 압축 지원 파일 형식](https://docs.aws.amazon.com/athena/latest/ug/compression-formats.html) 
+  [Amazon Redshift를 사용한 열 기반 데이터 형식에서 COPY 명령](https://docs.aws.amazon.com/redshift/latest/dg/copy-usage_notes-copy-from-columnar.html) 
+  [Firehose에서 입력 레코드 형식 변환](https://docs.aws.amazon.com/firehose/latest/dev/record-format-conversion.html) 
+  [AWS Glue에서 ETL 입력 및 출력의 형식 옵션](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-format.html) 
+  [열 형식으로 변환하여 Amazon Athena에서 쿼리 성능 향상](https://docs.aws.amazon.com/athena/latest/ug/convert-to-columnar.html) 
+  [Amazon Redshift로 Amazon S3에서 압축 데이터 파일 로딩](https://docs.aws.amazon.com/redshift/latest/dg/t_loading-gzip-compressed-data-files-from-S3.html) 
+  [Amazon Aurora의 성능 개선 도우미로 DB 로드 모니터링](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_PerfInsights.html) 
+  [Amazon RDS의 성능 개선 도우미로 DB 로드 모니터링](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html) 
+  [AWS IoT FleetWise](https://aws.amazon.com/about-aws/whats-new/2021/11/aws-iot-fleetwise-transferring-vehicle-data-cloud/) 

 **관련 동영상:** 
+  [AWS에서의 지속 가능한 구축](https://www.youtube.com/watch?v=ARAitMSIxc8) 