관리 메뉴

피터의 개발이야기

[DOP-C01] AWS DevOps Engineer Professional : Part 12 본문

AWS/DOP

[DOP-C01] AWS DevOps Engineer Professional : Part 12

기록하는 백앤드개발자 2023. 2. 28. 23:16
반응형

DOP-C01 : AWS DevOps Engineer Professional : All Parts
DOP-C01 Part 01 DOP-C01 Part 08  DOP-C01 Part 15  DOP-C01 Part 22
DOP-C01 Part 02 DOP-C01 Part 09  DOP-C01 Part 16  DOP-C01 Part 23
DOP-C01 Part 03 DOP-C01 Part 10  DOP-C01 Part 17  DOP-C01 Part 24
DOP-C01 Part 04 DOP-C01 Part 11  DOP-C01 Part 18  DOP-C01 Part 25
DOP-C01 Part 05 DOP-C01 Part 12  DOP-C01 Part 19  DOP-C01 Part 26
DOP-C01 Part 06 DOP-C01 Part 13  DOP-C01 Part 20  DOP-C01 Part 27
DOP-C01 Part 07 DOP-C01 Part 14  DOP-C01 Part 21

 

 

  1. 여러 Amazon EC2 인스턴스에서 실행되는 애플리케이션은 표준 Amazon SQS 대기열에서 메시지를 가져옵니다. 애플리케이션에 대한 요구 사항은 모든 메시지가 유휴 상태에서 암호화되어야 한다는 것입니다.
    개발자는 중앙 집중식 키 관리를 허용하고 가능할 때마다 가능한 지원 요구 사항을 최소화하는 방법을 사용하도록 지시받습니다.

    다음 중 이러한 요구 사항을 지원하는 솔루션은 무엇입니까?
    • 고객 관리 키로 클라이언트 측 암호화를 사용하여 개별 메시지를 암호화한 다음 SQS 대기열에 씁니다.
    • SQS 확장 클라이언트 및 Amazon S3 암호화 클라이언트를 사용하여 개별 메시지를 암호화합니다.
    • SQS 대기열을 생성하고 AWS KMS에서 서버 측 암호화를 사용하여 대기열을 암호화합니다.
    • SQS 대기열을 생성하고 클라이언트 측 암호화를 사용하여 대기열을 암호화합니다.

      설명: 
      AWS Key Management Service(AWS KMS)를 사용하면 애플리케이션과 100개 이상의 AWS 서비스 전체에서 암호화 키를 생성, 관리 및 제어할 수 있습니다.
  2. 개발자가 애플리케이션을 로컬에서 테스트한 다음 AWS Lambda에 배포했습니다. 애플리케이션을 원격으로 테스트하는 동안 액세스 거부 메시지와 함께 Lambda 함수가 실패합니다.

    이 문제를 어떻게 해결할 수 있습니까?
    • 누락된 권한을 포함하도록 Lambda 함수의 실행 역할을 업데이트합니다.
    • 누락된 권한을 포함하도록 Lambda 함수의 리소스 정책을 업데이트합니다.
    • 배포 패키지의 루트에 IAM 정책 문서를 포함하고 Lambda 함수를 재배포합니다.
    • AdministratorAccess 정책에 대한 액세스 권한이 있는 계정을 사용하여 Lambda 함수를 재배포합니다.

      설명: AWS Lambda > Lambda 실행 역할
      Lambda 함수의 실행 역할은 AWS 서비스 및 리소스에 액세스할 수 있는 권한을 함수에 부여하는 AWS Identity and Access Management(IAM) 역할입니다. Amazon CloudWatch에 로그를 전송하고, AWS X-Ray에 추적 데이터를 업로드하는 권한을 가진 실행 역할을 만들 수 있습니다. 이 페이지에서는 Lambda 함수의 실행 역할을 생성하고 보고 관리하는 방법에 대한 정보를 제공합니다.

      함수를 생성할 때 실행 역할을 제공합니다. 함수를 호출하면 Lambda는 이 역할을 맡아 함수에 임시 보안 인증 정보를 해당 함수에 자동으로 제공합니다. 함수 코드에서 sts:AssumeRole을(를) 호출할 필요가 없습니다.

  3. 개발팀은 점수판에서 사용자의 순위를 매기는 소셜 미디어 게임을 만들고 있습니다. 현재 구현에서는 사용자 데이터를 저장하기 위해 Amazon RDS for MySQL 데이터베이스를 사용합니다. 그러나 게임은 성능 테스트 중에 점수를 충분히 빨리 표시할 수 없습니다.

    가장 빠른 검색 시간을 제공하는 서비스는 무엇입니까?
    • 콘텐츠 관리를 위해 사용자 데이터를 Amazon DynamoDB로 마이그레이션합니다.
    • AWS Batch를 사용하여 사용자 및 점수 콘텐츠를 컴퓨팅 및 제공합니다.
    • 사용자 및 점수 콘텐츠 전송을 위해 Amazon CloudFront를 배포합니다.
    • Amazon ElastiCache를 설정하여 사용자에게 콘텐츠를 전달하고 점수를 매깁니다.

      설명: Amazon ElastiCache
      인 메모리 캐싱을 통해 마이크로초 단위의 대기 시간을 달성하고 크기 조정 가능합니다.ElastiCache를 사용하면 애플리케이션 및 데이터베이스 성능을 가속화할 수 있으며, 세션 스토어, 게임 리더보드, 스트리밍 및 분석과 같이 내구성이 필요하지 않는 사용 사례에서는 기본 데이터 스토어로 사용할 수 있습니다.

  4. 개발자가 Amazon DynamoDB에 데이터를 쓰는 애플리케이션을 작성했습니다. DynamoDB 테이블은 조건부 쓰기를 사용하도록 구성되었습니다. 사용량이 가장 많은 시간에는 ConditionalCheckFailedException 오류로 인해 쓰기가 실패합니다.

    여러 클라이언트가 동일한 레코드에 쓰기를 시도할 때 개발자는 어떻게 애플리케이션의 안정성을 높일 수 있습니까?
    • 데이터를 Amazon SNS 주제에 씁니다.
    • 쓰기 작업의 단기 급증 또는 버스트를 예상하기 위해 테이블의 쓰기 용량을 늘립니다.
    • DynamoDB Accelerator 또는 Amazon ElastiCache와 같은 캐싱 솔루션을 구현합니다.
    • 지터로 오류 재시도 및 지수 백오프를 구현합니다.

      설명: DynamoDB로 오류 처리 > 지수 백오프 및 지터(Exponential Backoff And Jitter)
      지수 백오프 및 지터를 통해 경합 상황에서 성능을 유지할 수 있다. 낙관적 동시성 제어(Optimistic concurrency control, OCC)는 여러 작성자가 쓰기를 잃지 않고 단일 개체를 안전하게 수정할 수 있는 오래된 방법입니다. DynamoDB의 조건부 쓰기는 OCC를 DynamoDB 사용자에게 적합하게 만들고 기본적으로 DynamoDBMapper 클라이언트에서 지원합니다.
        OCC는 진전이 보장되지만 높은 경합 상황에서는 여전히 성능이 좋지 않을 수 있습니다. 이러한 경합 사례 중 가장 간단한 경우는 많은 클라이언트가 동시에 시작하고 동일한 데이터베이스 행을 업데이트하려고 시도하는 경우입니다. 매 라운드마다 하나의 클라이언트가 성공을 보장하므로 모든 업데이트를 완료하는 시간은 경합에 따라 선형적으로 증가합니다.

      정리: 동일한 레코드에 쓰기를 시도는 병목이지!!
      병목이 생기면 지터야 도와줘!!
  5. 회사는 AWS 환경에 연합 액세스를 사용합니다. 이 회사는 CI/CD 파이프라인에서 AWS CloudFormation을 사용하여 IAM 역할을 생성하고 관리합니다. 모든 변경 사항은 파이프라인을 통해 IAM 역할에 적용되어야 합니다.

    회사의 보안 팀은 대역 외 변경이 IAM 역할에 적용되고 있음을 발견했습니다. 보안 팀은 이러한 대역 외 변경이 발생하는 시기를 감지할 수 있는 방법이 필요합니다.
    DevOps 엔지니어는 이 요구 사항을 충족하기 위해 무엇을 해야 합니까?
    • Amazon Inspector 규칙을 사용하여 AWS CloudFormation 스택에 구성 변경이 있는 경우 이를 감지하고 알립니다.
    • AWS Trusted Advisor를 사용하여 AWS CloudFormation 스택에 구성 변경이 있는 경우 이를 감지하고 알립니다.
    • AWS CloudTrail을 사용하여 AWS CloudFormation 스택이 구성 변경을 감지하면 이를 감지하고 알립니다.
    • AWS Config 규칙을 사용하여 AWS CloudFormation 드리프트 감지가 구성 변경을 식별할 때 이를 감지하고 알립니다.

      설명: 드리프트란 무엇인가요?   
      드리프트 감지 기능을 사용하면 스택의 실제 구성이 예상 구성과 다르거나 드리프트했는지 여부를 감지할 수 있습니다. CloudFormation을 사용하여 전체 스택 또는 스택 내 개별 리소스의 드리프트를 감지합니다. 

      AWS Config를 사용하여 CloudFormation 스택에 대한 구성 변경을 추적하는 방법
       AWS Config는 AWS CloudFormation 스택 에 대한 지원을 할 수 있다. CloudFormation 스택의 현재 및 과거 구성 추적을 시작할 수 있으며 스택 구성이 변경되면 Amazon SNS를 통해 알림을 받을 수 있습니다. 또한 관리형 AWS Config 규칙을 사용하여 CloudFormation 스택이 이벤트 알림을 SNS 주제로 보내고 있는지 확인할 수 있습니다.

      전체 CloudFormation 스택의 드리프트 감지
      스택에서 드리프트 감지 작업을 수행하면 스택이 예정 템플릿 구성에서 드리프트되었는지 확인하고, 드리프트 감지를 지원하는 스택의 각 리소스에 대한 드리프트 상태 관련 세부 정보를 반환합니다. 

      정리: 자동차는 안전운전이 정도지 말입니다. 근데 대역 외 변경  드리프트하면 cloudWatch가 아니라 CloudFormation가 감지합니다.

  6. Auto Scaling 그룹의 Amazon EC2 인스턴스 집합에서 실행되는 애플리케이션이 작동하려면 구성 파일이 필요합니다. 인스턴스는 AWS CloudFormation에서 생성 및 유지 관리됩니다. DevOps 엔지니어는 인스턴스가 시작될 때 최신 구성 파일을 갖기를 원하고 구성 파일에 대한 변경 사항이 CloudFormation 템플릿이 업데이트될 때 최소한의 지연으로 모든 인스턴스에 반영되기를 원합니다. 회사 정책에 따라 애플리케이션 구성 파일은 소스 제어에서 AWS 인프라 구성 파일과 함께 유지 관리되어야 합니다.

    어떤 솔루션이 이를 달성할까요?
    • CloudFormation 템플릿에서 AWS Config 규칙을 추가합니다. 규칙의 InputParameters 속성에 구성 파일 콘텐츠를 배치하고 Scope 속성을 EC2 Auto Scaling 그룹으로 설정합니다. 템플릿에 AWS Systems Manager 리소스 데이터 동기화 리소스를 추가하여 구성 업데이트를 폴링합니다.
    • CloudFormation 템플릿에서 EC2 시작 템플릿 리소스를 추가합니다. 시작 템플릿에 구성 파일 콘텐츠를 배치합니다. 인스턴스가 시작될 때 실행되도록 cfn-init 스크립트를 구성하고 구성 업데이트를 폴링하도록 cfn-hup 스크립트를 구성합니다.
    • CloudFormation 템플릿에서 EC2 시작 템플릿 리소스를 추가합니다. 시작 템플릿에 구성 파일 콘텐츠를 배치합니다. 템플릿에 AWS Systems Manager 리소스 데이터 동기화 리소스를 추가하여 구성 업데이트를 폴링합니다.
    • CloudFormation 템플릿에서 Cloud Formation 초기화 메타데이터를 추가합니다. 구성 파일 콘텐츠를 메타데이터에 배치합니다. 인스턴스가 시작될 때 실행되도록 cfn-init 스크립트를 구성하고 구성 업데이트를 폴링하도록 cfn-hup 스크립트를 구성합니다.
      설명: 
      cfn-init 헬퍼 스크립트는 AWS::CloudFormation::Init 키에서 템플릿 메타데이터를 읽고 이에 따라 다음과 같이 동작합니다.

        - CloudFormation에서 메타데이터 가져오기 및 구문 분석
        - 패키지 설치
        - 디스크에 파일 쓰기
        - 서비스 활성화/비활성화 및 시작/중지

      cfn-hup 헬퍼는 리소스 메타데이터의 변경 사항을 감지하고 변경 사항이 감지되면 사용자 지정 작업을 실행하는 데몬입니다. 따라서 UpdateStack API 작업을 통해 실행 중인 Amazon EC2 인스턴스에 대한 구성 업데이트를 수행할 수 있습니다.

  7. 회사에서 AWS CodeCommit을 소스 코드 리포지토리로 사용하고 있습니다. 내부 감사 후 컴플라이언스 팀은 마스터 브랜치로 이동하는 모든 코드 변경 사항을 시니어 개발자가 커밋하도록 지시합니다.

    이러한 요구 사항을 충족하는 솔루션은 무엇입니까?
    • CodeCommit에서 두 개의 리포지토리를 생성합니다. 하나는 작업용이고 다른 하나는 마스터용입니다. 시니어 개발자와 개발자를 위한 별도의 IAM 그룹을 만듭니다. IAM 그룹에 연결된 리포지토리에 대한 리소스 수준 권한을 할당합니다. 코드 변경 사항을 검토한 후 승인된 파일을 마스터 코드 커밋 리포지토리에 동기화합니다.
    • CodeCommit에서 리포지토리를 생성합니다. 시니어 개발자와 개발자를 위한 별도의 IAM 그룹을 만듭니다. 수석 개발자 그룹에 대한 코드 병합 권한과 함께 두 그룹에 대한 코드 커밋 권한을 할당합니다. Amazon SNS를 통해 전달된 커밋 요청을 승인하거나 거부하기 위한 URL 링크로 수석 개발자에게 알리는 트리거를 생성합니다. 선임 개발자가 코드를 승인하면 코드가 마스터 브랜치에 병합됩니다.
    • 작업 및 마스터 브랜치를 사용하여 CodeCommit에서 리포지토리를 생성합니다. 시니어 개발자와 개발자를 위한 별도의 IAM 그룹을 만듭니다. IAM 정책을 사용하여 각 IAM 그룹에 해당 분기를 할당합니다. 코드가 작업 브랜치에 병합되면 선임 개발자는 작업 브랜치에서 마스터 브랜치로 변경 사항을 가져올 수 있습니다.
    • CodeCommit에서 리포지토리를 생성합니다. 시니어 개발자와 개발자를 위한 별도의 IAM 그룹을 만듭니다. 마스터 브랜치에서 AWS Lambda 트리거를 사용하고 Lambda 함수의 이벤트 개체에서 개발자의 사용자 이름을 가져옵니다. IAM 그룹으로 사용자 이름을 검증하여 커밋을 승인하거나 거부합니다.

      정리: 선임이 마스터 브랜치로 병합 혹은 변경 사항을 가져올 수 있음. 약간 말장난이구먼.
      IAM은 엑세스관련이잖아. 노노
  8. DevOps 엔지니어는 AWS CloudFormation 사용자 지정 리소스를 사용하여 AD Connector를 설정했습니다. AWS Lambda 함수가 실행되어 AD 커넥터를 생성했지만 CloudFormation이 CREATE_IN_PROGRESS에서 CREATE_COMPLETE로 전환되지 않습니다.

    엔지니어는 이 문제를 해결하기 위해 어떤 조치를 취해야 합니까?
    • Lambda 함수 코드가 성공적으로 종료되었는지 확인하십시오.
    • Lambda 함수 코드가 미리 서명된 URL에 대한 응답을 반환하는지 확인합니다.
    • Lambda 함수 IAM 역할에 스택 ARN에 대한 cloudform:UpdateStack 권한이 있는지 확인합니다.
    • Lambda 함수 IAM 역할에 AWS 계정에 대한 ds:ConnectDirectory 권한이 있는지 확인합니다.

      설명: AWS Directory Service > Active Directory Connector
      AD Connector는 클라우드에 정보를 캐싱하지 않고 디렉터리 요청을 온프레미스 Microsoft Active Directory로 리디렉션할 수 있는 디렉터리 게이트웨이입니다. 
      CloudFormation > cfn-response module
      속성 을 사용하여 함수의ZipFile 소스 코드를 지정 하고 해당 함수가 AWS CloudFormation 사용자 지정 리소스와 상호 작용할 때 모듈을 로드하여 해당 리소스에 응답을 보낼 수 있습니다. 이 모듈에는 Amazon S3 미리 서명된 URL( )을 통해 응답 객체를 사용자 지정 리소스로 보내는 메서드가 포함되어 있습니다 .cfn-responsesendResponseURL

      정리: URL이 잘못되어서 응답이 없네. 무한 대기 상태지뭐. 타임아웃을 걸 수 없잖아. 원래 오래걸리니깐.
  9. DevOps 엔지니어는 AWS에서 웹 애플리케이션을 위한 보다 안정적인 배포 솔루션을 만드는 임무를 맡고 있습니다. 이전 배포로 인해 사용자에게 발생하는 버그, 시기상조의 사용자 트래픽, Application Load Balancer 뒤에서 실행되는 웹 서버 간의 불일치가 발생했습니다. 현재 전략은 AWS CodeCommit을 사용하여 애플리케이션의 코드를 저장합니다. 개발자가 리포지토리의 마스터 브랜치로 푸시하면 CodeCommit은 AWS 시스템 관리자 실행 명령을 호출하여 새 코드를 빌드하고 모든 Amazon EC2 인스턴스에 배포하는 AWS Lambda 배포 기능을 트리거합니다.

    보다 안정적인 배포 솔루션을 구현하려면 어떤 작업 조합을 수행해야 합니까? (두 가지를 선택하세요.)
    • CodeCommit을 소스 공급자로 사용하여 AWS CodePipeline에서 파이프라인을 생성합니다. 애플리케이션을 빌드하고 테스트하기 위한 병렬 파이프라인 단계를 생성합니다. 빌드 아티팩트를 AWS CodeDeploy에 전달합니다.
    • CodeCommit을 소스 공급자로 사용하여 AWS CodePipeline에서 파이프라인을 생성합니다. 별도의 파이프라인 단계를 생성하여 애플리케이션을 빌드하고 테스트합니다. 빌드 아티팩트를 AWS CodeDeploy에 전달합니다.
    • AWS CodeDeploy 애플리케이션 및 배포 그룹을 생성하고 사용하여 코드 업데이트를 EC2 플릿에 배포합니다. 배포 그룹에 대한 Application Load Balancer를 선택합니다.
    • AWS Systems Manager 대신 AWS CodeDeploy를 사용하여 모든 빌드, 테스트 및 배포 작업을 실행하는 개별 Lambda 함수를 생성합니다.
    • 모든 인스턴스에서 공유할 단일 애플리케이션 패키지를 빌드하도록 Lambda 함수를 수정합니다. AWS Systems Manager 대신 AWS CodeDeploy를 사용하여 EC2 플릿의 코드를 업데이트합니다.

      정리:
      ㅜㅜ 이문제는 의도가 뭔지 잘 모르겠다. 
      배포면 Commit하고 EC2 플릿에 배포
      플릿은 그룹이지 코드가 아니야.

  10. 회사는 여러 리소스에서 사용하는 Amazon S3 버킷 앞에서 파일 게이트웨이 모드로 AWS Storage Gateway를 사용합니다. 업무가 시작되는 아침에 사용자는 전날 저녁에 제3자가 처리한 객체를 볼 수 없습니다. DevOps 엔지니어가 S3 버킷을 직접 보면 데이터가 있지만 Storage Gateway에는 데이터가 없습니다.

    업데이트된 모든 타사 파일을 아침에 사용할 수 있도록 보장하는 솔루션은 무엇입니까?
    • Storage Gateway에 대해 RefreshCache 명령을 실행하도록 AWS Lambda 함수를 트리거하도록 야간 Amazon EventBridge(Amazon CloudWatch Events) 이벤트를 구성합니다.
    • AWS Transfer for SFTP를 사용하여 데이터를 S3 버킷에 넣도록 타사에 지시합니다.
    • 볼륨 게이트웨이 모드에서 실행되도록 Storage Gateway를 수정합니다.
    • S3 동일 리전 복제를 사용하여 S3 버킷에서 직접 수행한 모든 변경 사항을 Storage Gateway에 복제합니다.

      설명: AWS Storage Gateway이란?
      온프레미스 애플리케이션에 사실상 무제한의 클라우드 스토리지 액세스 제공한다. 특수 온프레미스 기기로부터 오는 데이터를 Amazon Simple Storage Service(Amazon S3)에 저장하고 AWS 서비스를 데이터 분석에 사용합니다. 관리 간소화와 비용 절감을 위해 온프레미스 사용자와 그룹 파일 공유를 하이브리드 클라우드 아키텍처로 전환합니다. 온프레미스 파일 및 데이터베이스 애플리케이션에 대해 클라우드 기반 백업을 제공하여 저렴한 비용으로 거의 무제한으로 확장할 수 있습니다.

      Storage Gateway에서 RefreshCache 작업을 자동화하려면 어떻게 해야 하나요?
      AWS Storage Gateway 파일 게이트웨이에 네트워크 파일 시스템(NFS) 또는 서버 메시지 블록(SMB) 파일 공유가 있습니다. 파일 게이트웨이는 Amazon Simple Storage Service(Amazon S3) 버킷과 연결됩니다. 그러나 파일을 버킷에 직접 업로드하면 파일 공유에서 파일을 볼 수 없습니다. 파일 공유 새로 고침을 자동화하려면 어떻게 해야 합니까?
      Storage Gateway는 파일 공유를 사용하여 파일을 로컬로 캐시에 쓰면 파일 공유 캐시를 자동으로 업데이트합니다. 하지만 Amazon S3에 파일을 직접 업로드할 때 Storage Gateway는 캐시를 자동으로 업데이트하지 않습니다. 이렇게 할 때 RefreshCache 작업을 수행하여 파일 공유에 대한 변경 사항을 확인해야 합니다.

      정리: 배치잡이 필요한 상황이네. Amazon CloudWatch Events으로 스캐줄 걸고, AWS Lambda로 실행해서 배치돌림.

  11. 회사의 레거시 애플리케이션은 IAM 사용자 자격 증명을 사용하여 회사의 AWS Organizations 조직에 있는 리소스에 액세스합니다. DevOps 엔지니어는 IAM 사용자를 생성하는 직원이 예외 목록에 있지 않는 한 새 IAM 사용자를 생성할 수 없도록 해야 합니다.

    이러한 요구 사항을 충족하는 솔루션은 무엇입니까?
    • 예외 목록 값이 있는 aws:username에 대한 StringNotEquals를 제외하는 조건으로 모든 iam:CreateAccessKey 작업에 대한 명시적 거부가 있는 조직 SCP를 연결합니다.
    • 예외 목록 값과 함께 aws:username에 대한 StringNotLike를 포함하는 조건으로 모든 iam:CreateUser 작업에 대한 명시적 거부가 포함된 조직 SCP를 연결합니다.
    • iam:CreateAccessKey 작업과 AWS Lambda 함수 대상이 일치하는 패턴으로 Amazon EventBridge(Amazon CloudWatch Events) 규칙을 생성합니다. 이 기능은 예외 목록에 대해 사용자 이름 계정을 확인합니다. 사용자가 예외 목록에 없으면 기능이 사용자를 삭제합니다.
    • iam:CreateUser 작업과 AWS Lambda 함수 대상이 일치하는 패턴으로 Amazon EventBridge(Amazon CloudWatch Events) 규칙을 생성합니다. 이 기능은 예외 목록에 대해 사용자 이름과 계정을 확인합니다. 사용자가 예외 목록에 없으면 기능이 사용자를 삭제합니다.

      설명: SCP(Service control policies, 서비스 제어 정책)이란?
      SCP(서비스 제어 정책)는 조직의 권한을 관리하는 데 사용할 수 있는 조직 정책 유형입니다. SCP는 조직의 모든 계정에 사용 가능한 최대 권한을 중앙에서 제어합니다. SCP를 사용하면 조직의 액세스 제어 지침에 따라 계정을 유지할 수 있습니다. SCP는 활성화된 모든 기능을 가진 조직에서만 사용할 수 있습니다. 조직이 통합 결제 기능만 지원한다면 SCP를 이용할 수 없습니다. SCP 활성화에 대한 지침은 정책 유형 활성화 및 비활성화 단원을 참조하세요.

      정리: 서비스를 정리할 경찰이 필요해. SCP 
  12. 회사에는 MySQL 호환 Amazon Aurora 다중 AZ DB 클러스터를 데이터베이스로 사용하는 애플리케이션이 있습니다. 재해 복구를 위해 리전 간 읽기 복제본이 생성되었습니다. DevOps 엔지니어는 장애 발생 시 기본 데이터베이스 인스턴스가 되도록 복제본 승격을 자동화하려고 합니다.

    어떤 솔루션이 이를 달성할까요?
    • 대기 시간 기반 Amazon Route 53 CNAME을 상태 확인과 함께 구성하여 기본 엔드포인트와 복제본 엔드포인트를 모두 가리키도록 합니다. Amazon SNS 주제를 AWS CloudTrail의 Amazon RDS 실패 알림에 구독하고 해당 주제를 사용하여 복제본 인스턴스를 마스터로 승격하는 AWS Lambda 함수를 트리거합니다.
    • 기본 데이터베이스 인스턴스를 가리키도록 Aurora 사용자 지정 엔드포인트를 생성합니다. 이 엔드포인트를 사용하도록 애플리케이션을 구성합니다. AWS Lambda 함수를 실행하여 복제본 인스턴스를 승격하고 새로 승격된 인스턴스를 가리키도록 사용자 지정 엔드포인트를 수정하도록 AWS CloudTrail을 구성합니다.
    • 애플리케이션의 AWS Cloud Formation 템플릿을 수정하여 복제본을 승격하고 템플릿을 적용하여 스택을 업데이트하고 애플리케이션이 새로 승격된 인스턴스를 가리키도록 AWS Lambda 함수를 생성합니다. 실패 이벤트가 발생한 후 이 Lambda 함수를 트리거하는 Amazon CloudWatch 경보를 생성합니다.
    • AWS Systems Manager Parameter Store에 Aurora 엔드포인트를 저장합니다. 데이터베이스 오류를 결함으로 만들고 AWS Lambda 함수를 실행하여 복제본 인스턴스를 승격하고 AWS Systems Manager Parameter Store에 저장된 엔드포인트 URL을 업데이트하는 Amazon EventBridge(Amazon CloudWatch Events) 이벤트를 생성합니다. 데이터베이스 연결이 실패할 경우 Parameter Store에서 엔드포인트를 다시 로드하도록 애플리케이션을 코딩합니다.

      설명: ExamTopics dop 27
      데이터베이스 장애를 감지하려면 EventBridge가 필요합니다. 다른 리전에 있는 것처럼 복제본을 승격하려면 Lambda가 필요합니다(수동 승격, 그렇지 않은 경우). Parameter store에서 엔드포인트를 저장하고 업데이트하는 것은 애플리케이션을 업데이트하는 데 중요합니다. Aurora FAQ의 고가용성 섹션을 살펴보십시오.
  13. 소프트웨어 회사는 코드가 GitHub에 저장되는 프로젝트의 빌드 프로세스를 자동화하려고 합니다. 리포지토리가 업데이트되면 소스 코드를 컴파일, 테스트 및 Amazon S3로 푸시해야 합니다.

    이러한 요구 사항을 해결하는 단계 조합은 무엇입니까? (3개를 선택하세요.)
    • 빌드 지침을 사용하여 소스 코드에 buildspec.yml 파일을 추가합니다.
    • 코드 변경이 리포지토리에 푸시될 때마다 빌드를 트리거하도록 GitHub 웹후크를 구성합니다.
    • GitHub를 소스 리포지토리로 사용하여 AWS CodeBuild 프로젝트를 생성합니다.
    • Amazon EC2/온프레미스 컴퓨팅 플랫폼으로 AWS CodeDeploy 애플리케이션을 생성합니다.
    • 의존성 설치 명령을 사용하여 AWS OpsWorks 배포를 생성합니다.  => 대규모 아니잖아.
    • 빌드를 수행할 Amazon EC2 인스턴스를 프로비저닝합니다. 

      설명: AWS CodeBuild > CodeBuild에 대한 빌드 사양 참조
      빌드 사양(buildspec) 파일에 대한 중요한 참조 정보를 제공합니다. buildspec은 CodeBuild 가 빌드를 실행하는 데 사용하는 YAML 형식의 빌드 명령 및 관련 설정 모음입니다. 빌드 사양을 소스 코드의 일부로 포함하거나 빌드 프로젝트를 생성할 때 빌드 사양을 정의할 수 있습니다. 빌드 사양 작동 방식에 대한 자세한 내용은 CodeBuild 작동 방식 단원을 참조하십시오 .

      정리: commit하면 웹후크 ->buildspec.yml(빌드 명령 ) ->  codeBuild 
  14. DevOps 엔지니어가 Amazon EC2 인스턴스와 연결된 AWS CodeDeploy 배포 그룹에 회사 애플리케이션의 새 버전을 배포하고 있습니다. 얼마 후 배포가 실패합니다. 엔지니어는 특정 배포 ID와 연결된 모든 이벤트가 건너뜀 상태이고 코드가 배포 그룹과 연결된 인스턴스에 배포되지 않았다는 것을 알고 있습니다.

    이 실패의 타당한 이유는 무엇입니까? (두 가지를 선택하세요.)
    • 네트워킹 구성은 EC2 인스턴스가 NAT 게이트웨이 또는 인터넷 게이트웨이를 통해 인터넷에 연결하는 것을 허용하지 않으며 CodeDeploy 엔드포인트에 연결할 수 없습니다.
    • 애플리케이션 배포를 트리거한 IAM 사용자에게 CodeDeploy 엔드포인트와 상호 작용할 권한이 없습니다.
    • 대상 EC2 인스턴스가 CodeDeploy 엔드포인트에 제대로 등록되지 않았습니다.
    • 적절한 권한이 있는 인스턴스 프로필이 대상 EC2 인스턴스에 연결되지 않았습니다.
    • appspec.yml 파일은 애플리케이션 개정에 포함되지 않았습니다.

      설명: ExamTopics 26
      인스턴스가 포트 443을 사용하여 CodeDeploy 또는 S3 퍼블릭 엔드포인트에 도달하지 못할 수 있습니다. 다음 중 하나를 시도하십시오. 인스턴스가 프라이빗 서브넷에서 프로비저닝된 경우 라우팅 테이블에서 인터넷 게이트웨이 대신 NAT 게이트웨이를 사용하십시오. 자세한 내용은 NAT 게이트웨이를 참조하세요. 배포하려는 인스턴스에 IAM 인스턴스 프로필이 연결되어 있지 않거나 필요한 권한이 없는 IAM 인스턴스 프로필이 연결되어 있을 수 있습니다.

      정리: 적절한 권한은 엑세스 권한이죠.

  15. 한 회사가 최근 레거시 애플리케이션을 온프레미스에서 AWS로 마이그레이션했습니다. 애플리케이션은 Amazon API Gateway 뒤에 있는 Application Load Balancer 뒤에 있는 Amazon EC2 인스턴스에서 호스팅됩니다. 회사는 사용자가 새 버전의 응용 프로그램을 배포하는 동안 최소한의 중단을 경험하기를 원합니다. 회사는 또한 문제가 있는 경우 업데이트를 신속하게 롤백할 수 있기를 원합니다.

    응용 프로그램에 대한 최소한의 변경으로 이러한 요구 사항을 충족하는 솔루션은 무엇입니까?
    • 기존 환경과 평행한 별도의 환경으로 변경 사항을 도입합니다. 카나리아 릴리스 배포를 사용하여 사용자 트래픽의 작은 하위 집합을 새 환경으로 보내도록 API Gateway를 구성합니다.
    • 기존 환경과 평행한 별도의 환경으로 변경 사항을 도입합니다. 새 환경을 가리키도록 애플리케이션의 DNS 별칭 레코드를 업데이트합니다.
    • 기존 Application Load Balancer 뒤에 별도의 대상 그룹으로 변경 사항을 도입합니다. 단계적으로 사용자 트래픽을 새 대상 그룹으로 라우팅하도록 API Gateway를 구성합니다.
    • 기존 Application Load Balancer 뒤에 별도의 대상 그룹으로 변경 사항을 도입합니다. 모든 트래픽을 Application Load Balancer로 라우팅한 다음 새 대상 그룹으로 트래픽을 전송하도록 API Gateway를 구성합니다.

      정리: 신속하게 롤백이면 블루그린인데, 카나리로 했네.
  16. 회사는 Auto Scaling 및 Application Load Balancer를 사용하는 AWS CodeDeploy 배포 그룹으로 구성된 애플리케이션을 실행합니다. 애플리케이션 배포는 AWS CodeCommit을 소스로, AWS CodeDeploy를 배포 공급자로 구성하는 AWS CodePipeline을 사용하여 자동화됩니다.

    최근에 성공적으로 배포한 후 배포가 수동으로 롤백될 때까지 응용 프로그램이 몇 분 동안 중단되었습니다. DevOps 엔지니어는 파이프라인이 성공적이었고 오류를 표시하지 않았음을 확인했지만 코드로 인해 몇 시간 후에 애플리케이션이 응답하지 않게 된다는 사실을 발견했습니다.

    유사한 상황에서 향후 다운타임을 방지하는 데 도움이 되는 조치는 무엇입니까? (두 가지를 선택하세요.)
    • 애플리케이션의 수신 포트에서 Auto Scaling 대상 그룹에 대한 TCP 상태 확인을 구성합니다.
    • Auto Scaling 대상 그룹이 특정 애플리케이션 경로를 확인하도록 HTTP 또는 HTTPS 상태 확인을 구성합니다.
    • 애플리케이션 상태를 테스트하는 스크립트를 생성하고 CodeDeploy appspec.yml 파일의 BeforeInstall 수명 주기 후크 중에 스크립트를 실행합니다.
    • 배포가 실패할 경우 이전 버전으로 자동 롤백하도록 CodeDeploy 배포 그룹을 업데이트합니다.
    • 애플리케이션 상태 메트릭을 사용하여 사용자 지정 Amazon CloudWatch 경보를 기반으로 롤백하도록 CodeDeploy 배포 그룹을 업데이트합니다.

      정리: 대상그룹에서 헬스체크

  17. DevOps 엔지니어가 AWS CodePipeline을 사용하여 AWS Service Catalog(IaC) 포트폴리오를 배포하고 있습니다. 파이프라인은 JSON 또는 YAML의 매니페스트 파일을 기반으로 제품 및 템플릿을 생성해야 하며 파이프라인을 통해 관리되는 모든 AWS Service Catalog 제품에 보안 요구 사항을 적용해야 합니다.

    자동화된 방식으로 요구 사항을 충족하는 솔루션은 무엇입니까?
    • AWS CodeDeploy에서 AWS Service Catalog 배포 작업을 사용하여 CodeDeploy AppSpec의 확인 단계를 통해 새 버전의 제품을 AWS Service Catalog로 푸시합니다.
    • AWS CodeBuild에서 AWS Service Catalog 배포 작업을 사용하여 제품의 새 버전을 확인하고 AWS Service Catalog로 푸시합니다.
    • CodePipeline에서 AWS Lambda 작업을 사용하여 Lambda 함수를 실행하여 제품의 새 버전을 확인하고 AWS Service Catalog로 푸시합니다.
    • AWS CodeBuild에서 AWS Lambda 작업을 사용하여 Lambda 함수를 실행하여 제품의 새 버전을 확인하고 AWS Service Catalog로 푸시합니다.

      설명: AWS Service Catalog
      AWS Service Catalog를 사용하면 배포된 IT 서비스, 애플리케이션, 리소스 및 메타데이터를 중앙에서 관리하여 코드형 인프라(IaC) 템플릿에 일관된 거버넌스를 적용할 수 있습니다. AWS Service Catalog를 사용하면 규정 준수 요구 사항을 충족하는 동시에 승인된 IT 서비스를 고객에게 제공하여 필요한 서비스를 빠르게 배포하도록 지원할 수 있습니다.

      AWS Service Catalog에 배포하는 CodePipeline 생성
      Service Catalog를 사용하면 AWS CloudFormation 템플릿을 기반으로 제품을 생성하고 프로비저닝할 수 있습니다. 제품 템플릿을 서비스 카탈로그에 배포하고 소스 리포지토리(GitHub, CodeCommit 또는 Amazon S3에서 이미 생성됨)에서 변경한 사항을 전달하기 위해 파이프라인을 생성 및 구성합니다.
  18. 회사에서 AWS Systems Manager 문서를 사용하여 개발자를 위한 물리적 노트북을 부트스트랩하려고 합니다. 부트스트랩 코드는 GitHub에 저장됩니다. DevOps 엔지니어는 이미 Systems Manager 활성화를 생성하고 등록 코드로 Systems Manager 에이전트를 설치했으며 모든 랩톱에 활성화 ID를 설치했습니다.

    다음 단계는 무엇입니까?
    • AWS-RunShellScript 명령을 사용하여 GitHub에서 Amazon S3로 파일을 복사한 다음 sourceType이 S3인 aws-downloadContent 플러그인을 사용하도록 Systems Manager 문서를 구성합니다.
    • 설치 작업과 함께 aws-configurePackage 플러그인을 사용하고 Git 리포지토리를 가리키도록 Systems Manager 문서를 구성합니다.
    • GitHub의 sourceType 및 리포지토리 세부 정보가 포함된 sourceInfo와 함께 aws-downloadContent 플러그인을 사용하도록 Systems Manager 문서를 구성합니다.
    • aws:softwareInventory 플러그인을 사용하도록 Systems Manager 문서를 구성하고 Git 리포지토리에서 스크립트를 실행합니다.

      설명: AWS Systems Manager > Systems Manager 명령 문서 플러그인 참조
       AWS Systems Manager(SSM) 명령 유형 문서에서 지정할 수 있는 플러그인

      부트스트랩 작업을 생성하여 추가 소프트웨어 설치
      부트스트랩 작업을 사용하여 추가 소프트웨어를 설치하거나 클러스터 인스턴스의 구성을 사용자 지정할 수 있습니다. 

      정리: 부스트를 사용하려면 부스트가 있어야 한다. ==> aws-downloadContent

  19. 회사는 내부 비즈니스 팀이 사전 승인된 AWS CloudFormation 템플릿을 통해서만 리소스를 시작하도록 요구합니다. 보안 팀은 리소스가 예상 상태에서 벗어날 때 자동 모니터링이 필요합니다.

    이러한 요구 사항을 충족하려면 어떤 전략을 사용해야 합니까?
    • 사용자가 CloudFormation 서비스 역할만 사용하여 CloudFormation 스택을 배포하도록 허용합니다. CloudFormation 드리프트 감지를 사용하여 리소스가 예상된 상태에서 드리프트된 시기를 감지합니다.
    • 사용자가 CloudFormation 서비스 역할만 사용하여 CloudFormation 스택을 배포하도록 허용합니다. AWS Config 규칙을 사용하여 리소스가 예상 상태에서 벗어나는 시기를 감지합니다.
    • 사용자가 AWS Service Catalog만을 사용하여 CloudFormation 스택을 배포하도록 허용합니다. 시작 제약 조건을 사용하도록 합니다. AWS Config 규칙을 사용하여 리소스가 예상 상태에서 벗어나는 시기를 감지합니다.
    • 사용자가 AWS Service Catalog만을 사용하여 CloudFormation 스택을 배포하도록 허용합니다. 템플릿 제약 조건을 사용하도록 합니다. Amazon EventBridge(Amazon CloudWatch Events) 알림을 사용하여 리소스가 예상 상태에서 벗어나는 시기를 감지합니다.

      설명:  드리프트를 감지하는 것뿐만 아니라 드리프트를 자동으로 처리해야 합니다. https://docs.aws.amazon.com/config/latest/developerguide/aws-config-managed-rules-cloudformation-templates.html 링크에서 언급한 것처럼 구성 규칙을 생성하여 CFN 스택을 자동으로 업데이트할 수 있습니다. 실수로 데이터가 손실된 경우 자동 업데이트된 CFN 템플릿을 사용하여 리소스를 재생성하고 장애 조치 영역에서 리소스를 최신 CFN 템플릿으로 시작할 수 있습니다(사용자에 의해 리소스 변경 사항 통합). 

      정리: AWS Service Catalog란? IT 관리자가 승인된 제품의 카탈로그를 생성 및 관리하고 최종 사용자에게 배포할 수 있습니다.

  20. 회사는 항상 데이터와 애플리케이션에 대해 2시간의 RPO와 10분의 RTO를 요구합니다. 애플리케이션은 MySQL 데이터베이스와 Amazon EC2 웹 서버를 사용합니다. 개발 팀에는 장애 조치 및 재해 복구를 위한 전략이 필요합니다.

    이러한 요구 사항을 충족하는 배포 전략 조합은 무엇입니까? (두 가지를 선택하세요.)
    • 데이터 저장소로 여러 리전에 걸쳐 하나의 가용 영역에 Amazon Aurora 클러스터를 생성합니다. 재난 발생 시 Aurora의 자동 복구 기능을 사용하십시오.
    • 두 리전에 데이터 저장소로 Amazon Aurora 글로벌 데이터베이스를 생성합니다. 장애가 발생하면 보조 리전을 애플리케이션의 마스터로 승격합니다.
    • 데이터 저장소로 여러 리전에서 Amazon Aurora 다중 마스터 클러스터를 생성합니다. Network Load Balancer를 사용하여 여러 리전에서 데이터베이스 트래픽의 균형을 맞춥니다.
    • 두 리전에서 애플리케이션을 설정하고 두 리전의 Application Load Balancer를 가리키는 Amazon Route 53 장애 조치 기반 라우팅을 사용합니다. 상태 확인을 사용하여 지정된 리전의 가용성을 확인합니다. 각 리전에서 Auto Scaling 그룹을 사용하여 수요에 따라 용량을 조정합니다.
    • 두 리전에서 애플리케이션을 설정하고 Application Load Balancer 뒤에 있는 다중 리전 Auto Scaling 그룹을 사용하여 수요에 따라 용량을 관리합니다. 재해 발생 시 Auto Scaling 그룹의 원하는 인스턴스 수를 조정하여 장애 조치 지역의 기본 용량을 늘립니다.

      정리: RTO가 10분이니 미리 두개로 만들어야함. autoScaling도 RDS도 블루그린처럼 스위치 해야함.

 

정답
  1. C
  2. A
  3. D
  4. D
  5. D
  6. D
  7. C
  8. B
  9. B,C
  10. A
  11. A
  12. D
  13. A,B,C
  14. A,D
  15. A
  16. B,E
  17. C
  18. C
  19. C
  20. B,E

 

반응형
Comments