기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS CDK를 통해 여러 AWS 리전, 계정, OU에서 Amazon DevOps Guru를 활성화하여 운영 성능을 개선하세요.
작성자: Dr. Rahul Sharad Gaikwad(AWS)
요약
이 패턴은 TypeScript에서 AWS Cloud Development Kit(AWS CDK)를 사용하여 여러 Amazon Web Services(AWS) 리전, 계정, 조직 단위(OU)에서 Amazon DevOps Guru 서비스를 사용하도록 설정하는 단계를 보여줍니다. AWS CDK 스택을 사용하면 관리자(기본) AWS 계정에서 AWS CloudFormation StackSets를 배포하여 각 계정에 로그인하고 각 계정에 대해 개별적으로 DevOps Guru를 활성화하는 대신 여러 계정에서 Amazon DevOps Guru를 활성화할 수 있습니다.
Amazon DevOps Guru는 애플리케이션의 가용성을 개선하고 운영 문제를 더 빠르게 해결하는 데 도움이 되는 인공 지능 운영 (AIOps) 특성을 제공합니다. DevOps Guru는 ML 전문 지식 없어도 기계 학습(ML) 기반 권장 사항을 적용하여 수작업을 줄여줍니다. DevOps Guru는 리소스와 운영 데이터를 분석합니다. 이상 징후가 감지되면 문제 해결에 도움이 되는 지표, 이벤트, 권장 사항을 제공합니다.
이 패턴은 Amazon DevOps Guru를 활성화하는 세 가지 배포 방법을 설명합니다.
여러 계정과 리전에 있는 모든 스택 리소스용
OU에 있는 모든 스택 리소스용
여러 계정과 리전에 있는 특정 스택 리소스용
사전 조건 및 제한 사항
사전 조건
활성 상태의 AWS 계정
AWS Command Line Interface(AWS CLI), 설치 및 구성됨. (AWS CLI 문서에서 AWS CLI 설치, 업데이트, 제거 참조)
AWS CDK Toolkit, 설치 및 구성됨. (AWS CDK 설명서에서 AWS CDK Toolkit 참조)
노드 패키지 관리자(npm), TypeScript에서 AWS CDK용으로 설치 및 구성됨. (npm 문서에서 Node.js 및 npm 다운로드 및 설치하기
참조) 샘플 서버리스 애플리케이션에 트래픽을 유입하기 위한 Python 스크립트를 실행할 수 있도록 설치 및 구성된 Python3 (Python 문서에서 Python 설정 및 사용법
참조) Python 요청 라이브러리 설치를 위해 설치 및 구성된 Pip (PyPl 웹사이트에서 pip 설치 지침
참조)
제품 버전
AWS CDK Toolkit 버전 1.107.0 이상
npm 버전 7.9.0 이상
Node.js 버전 15.3.0 이상
아키텍처
기술
이 패턴의 아키텍처에는 다음과 같은 서비스가 포함됩니다.
AWS CDK 스택
패턴은 다음과 같은 AWS CDK 스택을 사용합니다.
CdkStackSetAdminRole
- 관리자와 대상 계정 간의 신뢰 관계를 설정하기 위해 AWS IAM(신원 및 액세스 관리) 관리자 역할을 생성CdkStackSetExecRole
- 관리자 계정을 신뢰하는 IAM 역할을 생성CdkDevopsGuruStackMultiAccReg
- 여러 AWS 리전과 계정에서 모든 스택에 대해 DevOps Guru를 사용하도록 설정하고 Amazon Simple Notification Service(SNS) 알림을 활성화CdkDevopsGuruStackMultiAccRegSpecStacks
- 여러 AWS 리전과 특정 스택에 대한 계정에서 DevOps Guru를 활성화하고 Amazon SNS 알림을 설정CdkDevopsguruStackOrgUnit
— OU 전반에서 DevOps Guru를 사용하도록 설정하고 Amazon SNS 알림을 설정CdkInfrastructureStack
— 관리자 계정에 API 게이트웨이, Lambda, DynamoDB와 같은 샘플 서버리스 애플리케이션 구성 요소를 배포하여 결함 삽입 및 인사이트 생성
샘플 애플리케이션 아키텍처
다음 다이어그램은 여러 계정과 리전에 배포된 샘플 서버리스 애플리케이션 아키텍처를 보여줍니다. 이 패턴은 관리자 계정을 사용하여 모든 AWS CDK 스택을 배포합니다. 또한 DevOps Guru를 설정하기 위한 대상 계정 중 하나로 관리자 계정을 사용합니다.
DevOps Guru가 활성화되면 먼저 각 리소스의 동작을 기준으로 삼은 다음, CloudWatch에서 제공하는 메트릭에서 운영 데이터를 수집합니다.
이상 징후가 감지되면 이를 CloudTrail의 이벤트와 연관시켜 인사이트를 생성합니다.
인사이트는 운영자가 원인 리소스를 식별할 수 있도록 규정된 권장 사항과 함께 상호 연관된 이벤트 시퀀스를 제공합니다.
Amazon SNS는 운영자에게 알림 메시지를 보냅니다.

자동화 및 규모 조정
이 패턴과 함께 제공되는 GitHub 저장소
도구
서비스
코드
이 패턴의 소스 코드는 GitHub의 Amazon DevOps Guru CDK 샘플
중요
이 패턴의 일부 스토리에는 Unix, Linux 및 macOS용으로 형식이 지정된 AWS CDK 및 AWS CLI 명령 예제가 포함됩니다. Windows에서는 각 줄 끝에 있는 백슬래시(\) 연속 문자를 캐럿(^)으로 바꿉니다.
에픽
작업 | 설명 | 필요한 기술 |
---|---|---|
AWS 네임드 프로필을 구성 | 다중 계정 환경에서 스택을 배포하려면 다음과 같이 AWS 네임드 프로필을 설정하세요. 관리자 계정의 경우
대상 계정의 경우
자세한 내용은 AWS CLI 설명서에서 네임드 프로파일 사용을 참조하세요. | DevOps 엔지니어 |
AWS 프로필 구성 확인 | (선택 사항) AWS CLI 설명서의 설정 및 보기 구성 설정에 있는 지침에 따라 | DevOps 엔지니어 |
AWS CDK 버전 확인 | 다음 명령을 실행하여 AWS CDK Toolkit 버전을 확인하세요.
이 패턴을 사용하려면 버전 1.107.0 이상이 필요합니다. 이전 버전의 AWS CDK를 사용 중이면 AWS CDK 문서에 있는 지침에 따라 업데이트하세요. | DevOps 엔지니어 |
프로젝트 코드 복제 | 다음 명령을 사용하여 이 패턴에 대한 GitHub 저장소를 복제합니다.
| DevOps 엔지니어 |
패키지 종속성을 설치하고 TypeScript 파일을 컴파일하세요. | 다음 명령을 실행하여 패키지 종속성을 설치하고 TypeScript 파일을 컴파일하세요.
이 명령은 샘플 저장소의 모든 패키지를 설치합니다. 중요누락된 패키지에 오류가 발생하면 다음 명령 중 하나를 사용합니다.
- 또는 -
패키지 이름과 버전 목록은 | DevOps 엔지니어 |
작업 | 설명 | 필요한 기술 |
---|---|---|
Amazon SNS 알림 이메일 주소를 구성합니다. | Amazon SNS 알림 이메일 주소를 제공하려면 다음 단계를 따르세요.
| DevOps 엔지니어 |
프로젝트 코드를 작성합니다. | 명령을 실행하여 프로젝트 코드를 작성하고 스택을 합성하세요.
다음과 유사한 출력 화면이 표시되어야 합니다.
자세한 정보와 절차는 AWS CDK 문서에서 첫 번째 AWS CDK 앱을 참조하세요. | DevOps 엔지니어 |
AWS CDK 스택을 나열합니다. | 다음 명령을 실행하여 모든 AWS CDK 스택을 나열하세요.
이 명령은 다음 목록을 표시합니다.
| DevOps 엔지니어 |
작업 | 설명 | 필요한 기술 |
---|---|---|
IAM 역할 생성에 필요한 AWS CDK 스택을 배포합니다. | 이 패턴은 AWS CloudFormation StackSets를 사용하여 여러 계정에서 스택 작업을 수행합니다. 첫 번째 스택 집합을 생성하는 경우, AWS 계정에 필요한 권한을 설정하려면 다음 IAM 역할을 만들어야 합니다.
참고역할에는 이러한 정확한 이름이 있어야 합니다.
자세한 내용은 AWS CloudFormation 설명서의 자체 관리형 권한 부여를 참조하십시오. | DevOps 엔지니어 |
여러 계정에서 DevOps Guru를 사용할 수 있도록 AWS CDK 스택을 배포하세요. | AWS CDK
현재 Amazon DevOps Guru는 DevOps Guru FAQ | DevOps 엔지니어 |
작업 | 설명 | 필요한 기술 |
---|---|---|
OU ID를 추출합니다. | AWS Organizations | DevOps 엔지니어 |
OU에 대한 서비스 관리형 권한을 활성화합니다. | 계정 관리를 위해 AWS Organizations를 사용하는 경우, 서비스 관리 권한을 부여하여 DevOps Guru를 사용하도록 설정해야 합니다. IAM 역할을 수동으로 만드는 대신 조직 기반 신뢰할 수 있는 액세스 및 서비스 연결 역할(SLR)을 사용하세요. | DevOps 엔지니어 |
OU 전반에서 DevOps Guru를 지원하기 위해 AWS CDK 스택을 배포하세요. | AWS CDK
| DevOps 엔지니어 |
작업 | 설명 | 필요한 기술 |
---|---|---|
IAM 역할 생성에 필요한 AWS CDK 스택을 배포합니다. | 첫 번째 옵션에 표시된 필수 IAM 역할을 아직 만들지 않았다면 먼저 만들어야 합니다.
자세한 내용은 AWS CloudFormation 설명서의 자체 관리형 권한 부여를 참조하십시오. | DevOps 엔지니어 |
기존 스택을 삭제하세요. | 이미 첫 번째 옵션을 사용하여 모든 스택 리소스에 대해 DevOps Guru를 사용하도록 설정했으면 다음 명령을 사용하여 이전 스택을 삭제할 수 있습니다.
또는 스택을 다시 배포할 때 | DevOps 엔지니어 |
스택 목록으로 AWS CDK 스택을 업데이트하세요. |
| 데이터 엔지니어 |
여러 계정에서 특정 스택 리소스에 대해 DevOps Guru를 사용할 수 있도록 AWS CDK 스택을 배포하세요. | AWS CDK
참고이전에 옵션 1에 대해이 스택을 배포한 경우 Stacks가 이미 존재하는 오류를 방지하려면 | DevOps 엔지니어 |
작업 | 설명 | 필요한 기술 |
---|---|---|
샘플 서버리스 인프라 스택을 배포하세요. | AWS CDK
| DevOps 엔지니어 |
DynamoDB에 샘플 레코드를 삽입하세요. | 다음 명령을 실행하여 샘플 레코드로 DynamoDB 테이블을 채웁니다.
이 명령은 다음 출력을 표시합니다.
| DevOps 엔지니어 |
DynamoDB에서 삽입된 레코드를 확인하세요. | DynamoDB 테이블에
| DevOps 엔지니어 |
리소스가 기준선 설정을 완료할 때까지 기다립니다. | 이 서버리스 스택에는 몇 가지 리소스가 있습니다. 다음 단계를 수행하기 전에 2시간 정도 기다리는 것이 좋습니다. 이 스택을 프로덕션 환경에 배포하는 경우 DevOps Guru에서 모니터링하도록 선택한 리소스 수에 따라 기준선 설정을 완료하는 데 최대 24시간이 걸릴 수 있습니다. | DevOps 엔지니어 |
작업 | 설명 | 필요한 기술 |
---|---|---|
AWS CDK 인프라 스택을 업데이트하세요. | DevOps Guru 인사이트를 시험해 보기 위해 몇 가지 구성을 변경하여 일반적인 운영 문제를 재현해 볼 수 있습니다.
| DevOps 엔지니어 |
API에 HTTP 요청을 삽입합니다. |
| DevOps 엔지니어 |
DevOps Guru 인사이트를 검토합니다. | 표준 조건에서 DevOps Guru 대시보드의 진행 중인 인사이트 카운터에 0이 표시됩니다. 이상 징후가 감지되면 인사이트 형태로 경보를 발령합니다. 탐색 창에서 인사이트를 선택하여 개요, 집계된 메트릭, 관련 이벤트, 권장 사항 등 이상 징후에 대한 세부 정보를 확인합니다. 인사이트 검토에 관한 자세한 내용은 Amazon DevOps Guru 블로그 게시물에서 AIOps를 사용하여 운영 인사이트 얻기 | DevOps 엔지니어 |
작업 | 설명 | 필요한 기술 |
---|---|---|
리소스를 정리하고 삭제합니다. | 이 패턴을 수행한 다음에는 추가 요금이 발생하지 않도록 생성한 리소스를 제거해야 합니다. 명령을 실행합니다.
| DevOps 엔지니어 |