관리 메뉴

피터의 개발이야기

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

AWS/DOP

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

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

 

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 S3 버킷 내부의 객체 콘텐츠 변경은 신뢰할 수 있는 관리자 그룹만 수행해야 합니다.

    DevOps 엔지니어는 이 요구 사항을 충족하기 위해 어떻게 실시간 자동 검사를 생성해야 합니까?
    • 객체 변경에 대한 Amazon S3 데이터 이벤트에 의해 트리거되고 관리자의 IAM 역할에서 IAM 사용자의 멤버십도 확인하는 AWS Lambda 함수를 생성합니다.
    • Amazon S3 로그에서 변경 사항을 쿼리하고 관리자의 IAM 역할에서 IAM 사용자의 멤버십을 확인하는 주기적인 AWS Config 규칙을 생성합니다.
    • Amazon CloudWatch 로그에 대한 지표 필터를 생성하여 Amazon S3 버킷 수준 권한 변경 사항을 확인하고 IAM 사용자의 관리자 IAM 역할 멤버십을 확인합니다.
    • Amazon S3 버킷 수준 권한에 대한 변경 사항에 대해 AWS CloudTrail 로그를 쿼리하고 관리자의 IAM 역할에서 IAM 사용자의 멤버십을 확인하는 주기적인 AWS Config 규칙을 생성합니다.
  2. 비즈니스에는 5개의 독립적인 AWS Lambda 함수로 구성된 애플리케이션이 있습니다.

    DevOps 엔지니어는 각 Lambda 함수를 순서대로 빌드, 테스트, 패키징 및 배포하는 AWS CodePipeline 및 AWS CodeBuild를 사용하여 CI/CD 파이프라인을 구축했습니다. 파이프라인은 Amazon CloudWatch Events 규칙을 사용하여 애플리케이션 소스 코드가 변경된 후 파이프라인 실행이 최대한 빨리 시작되도록 합니다.

    몇 달 동안 파이프라인으로 작업한 후 DevOps 엔지니어는 파이프라인을 완료하는 데 너무 오래 걸린다는 것을 알게 되었습니다.

    DevOps 엔지니어가 파이프라인 속도를 가장 잘 개선하기 위해 구현해야 하는 것은 무엇입니까?
    • 사용 가능한 네트워크 처리량이 더 많은 컴퓨팅 유형을 사용하도록 파이프라인 내에서 CodeBuild 프로젝트를 수정합니다.
    • 빌드를 병렬로 실행하기 위해 대칭 다중 처리 구성을 포함하는 사용자 지정 CodeBuild 실행 환경을 생성합니다.
    • 동일한 runOrder를 지정하여 각 Lambda 함수에 대한 작업을 병렬로 실행하도록 CodePipeline 구성을 수정합니다.
    • VPC 내에서 실행되도록 각 CodeBuild 프로젝트를 수정하고 전용 인스턴스를 사용하여 처리량을 늘립니다.

      설명: CodePipeline 파이프라인 구조 참조
      병렬 작업을 지정하려면 병렬로 실행하려는 각 작업에 대해 동일한 정수를 사용하십시오.

  3. 회사에서 네트워킹, IAM 정책 및 여러 3계층 애플리케이션으로 구성된 복잡한 시스템을 사용합니다. 새 시스템에 대한 요구 사항이 여전히 정의되고 있으므로 최종 설계에 있는 AWS 구성 요소의 수는 알 수 없습니다. DevOps 엔지니어는 새 인프라를 자동화하고 버전을 제어하기 위해 AWS CloudFormation을 사용하여 AWS 리소스 정의를 시작해야 합니다.

    CloudFormation을 사용하여 새로운 환경을 만드는 모범 사례는 무엇입니까?
    • Amazon VPC를 사용하여 네트워킹 계층을 수동으로 구성한 다음 CloudFormation을 사용하여 다른 모든 리소스를 정의합니다.
    • 버전 제어할 템플릿이 하나만 있도록 시스템에 필요한 모든 리소스를 포함하는 단일 템플릿을 만듭니다.
    • 시스템의 각 논리적 부분에 대해 여러 개별 템플릿을 생성하고, CloudFormation에서 교차 스택 참조를 사용하고, 버전 제어에서 여러 템플릿을 유지합니다.
    • 시스템의 각 논리적 부분에 대해 별도의 템플릿을 많이 생성하고 세분화된 제어를 위해 SDK를 실행하는 Amazon EC2 인스턴스를 사용하여 하나에서 다음으로 출력을 제공합니다.
  4. DevOps 엔지니어가 새 웹 애플리케이션을 배포하고 있습니다. 회사는 웹 애플리케이션 배포 및 관리를 위해 AWS Elastic Beanstalk를 선택하고 영구 데이터를 처리하기 위해 Amazon RDS MySQL을 선택합니다. 회사는 새로운 배포가 실패할 경우 최소한의 영향을 미치도록 요구합니다. 애플리케이션 리소스는 배포 중에 전체 용량이어야 하며 배포 롤백도 가능해야 합니다.

    이러한 요구 사항을 충족하는 배포 순서는 무엇입니까?
    • Elastic Beanstalk를 사용하여 애플리케이션을 배포하고 Elastic Beanstalk 환경 속성을 사용하여 외부 RDS MySQL 인스턴스에 연결합니다. 블루/그린 배포에 Elastic Beanstalk 기능을 사용하여 새 릴리스를 별도의 환경에 배포한 다음 두 환경에서 CNAME을 교체하여 트래픽을 새 버전으로 리디렉션합니다.
    • Elastic Beanstalk를 사용하여 애플리케이션을 배포하고 환경의 일부로 RDS MySQL을 포함합니다. 기본 Elastic Beanstalk 동작을 사용하여 변경 사항을 애플리케이션에 배포하고 롤링 업데이트가 변경 사항을 애플리케이션에 배포하도록 합니다.
    • Elastic Beanstalk를 사용하여 애플리케이션을 배포하고 환경의 일부로 RDS MySQL을 포함합니다. 애플리케이션 배포에 Elastic Beanstalk 불변 업데이트를 사용합니다.
    • Elastic Beanstalk를 사용하여 애플리케이션을 배포하고 Elastic Beanstalk 환경 속성을 사용하여 외부 RDS MySQL 인스턴스에 연결합니다. 애플리케이션 배포에 Elastic Beanstalk 불변 업데이트를 사용합니다.
  5. 인터넷에 액세스할 수 없는 Amazon EC2 인스턴스가 Virtual Private Cloud(VPC)에서 실행 중이며 제한된 Amazon S3 버킷에서 객체를 다운로드해야 합니다. DevOps 엔지니어가 개체에 대한 액세스 권한을 얻으려고 하면 AccessDenied 오류가 수신됩니다.

    이 오류의 가능한 원인은 무엇입니까? (3개를 선택하세요.)
    • S3 버킷 기본 암호화가 활성화됩니다.
    • S3 버킷 정책에 오류가 있습니다.
    • VPC 엔드포인트 정책에 오류가 있습니다.
    • 객체가 Amazon Glacier로 이동되었습니다.
    • IAM 역할 구성에 오류가 있습니다.
    • S3 버전 관리가 활성화됩니다.
  6. 애플리케이션에는 여러 AWS 계정에 분산된 마이크로서비스가 있으며 일부 기능을 위해 온프레미스 레거시 시스템과 통합됩니다. 세그먼트화된 아키텍처와 누락된 로그로 인해 애플리케이션에 문제가 발생할 때마다 로그를 수집하여 문제를 식별하는 데 시간이 너무 오래 걸립니다. DevOps 엔지니어는 로그 집계 프로세스를 수정하고 로그를 중앙에서 분석하는 방법을 제공해야 합니다.

    가장 효율적이고 비용 효율적인 솔루션은 무엇입니까?
    • Amazon CloudWatch Logs 에이전트를 사용하여 시스템 로그 및 애플리케이션 로그를 수집합니다. Amazon S3 API를 사용하여 온프레미스 로그를 내보내고 중앙 계정의 S3 버킷에 로그를 저장합니다. Amazon EMR 클러스터를 구축하여 로그를 줄이고 근본 원인을 도출합니다.
    • Amazon CloudWatch Logs 에이전트를 사용하여 시스템 로그 및 애플리케이션 로그를 수집합니다. Amazon S3 API를 사용하여 온프레미스 로그를 가져옵니다. 개별 계정의 S3 버킷에 있는 모든 로그를 저장합니다. Amazon Macie를 사용하여 필요한 특정 이벤트 관련 데이터 포인트를 검색하는 쿼리를 작성합니다.
    • Amazon CloudWatch Logs 에이전트를 사용하여 시스템 로그 및 애플리케이션 로그를 수집합니다. 온프레미스 서버에 CloudWatch Logs 에이전트를 설치합니다. AWS에서 온프레미스 데이터 센터로 모든 로그를 전송합니다. Amazon Elasticsearch Logstash Kibana 스택을 사용하여 온프레미스에서 로그를 분석하십시오.
    • Amazon CloudWatch Logs 에이전트를 사용하여 시스템 로그 및 애플리케이션 로그를 수집합니다. 온프레미스 리소스용 CloudWatch Logs 에이전트를 설치합니다. 중앙 계정의 S3 버킷에 모든 로그를 저장합니다. Amazon S3 트리거 및 AWS Lambda 함수를 설정하여 수신 로그를 분석하고 이상을 자동으로 식별합니다. Amazon Athena를 사용하여 중앙 계정의 로그에서 임시 쿼리를 실행합니다.

      설명: CloudWatch 에이전트를 사용하여 Amazon EC2 인스턴스 및 온프레미스 서버에서 지표 및 로그 수집
  7. DevOps 엔지니어는 AWS Lambda 기능을 사용하는 서버리스 애플리케이션을 위한 지속적인 배포 파이프라인을 구축하고 있습니다. 회사는 실패한 배포가 고객에게 미치는 영향을 줄이고자 합니다. 회사는 또한 문제를 모니터링하기를 원합니다.

    이러한 요구 사항을 충족하는 배포 단계 구성은 무엇입니까?
    • AWS CloudFormation을 사용하여 새 스택 업데이트를 게시하고 모든 리소스에 Amazon CloudWatch 경보를 포함합니다. 개발자가 AWS CloudFormation 변경 세트를 확인하고 승인하도록 AWS CodePipeline 승인 작업을 설정합니다.
    • AWS CodeBuild를 사용하여 테스트용 샘플 이벤트 페이로드를 Lambda 함수에 추가합니다. 함수의 새 버전을 게시하고 Amazon CloudWatch 경보를 포함합니다. 새 버전을 가리키도록 프로덕션 별칭을 업데이트합니다. 경보가 ALARM 상태일 때 발생하도록 롤백을 구성합니다.
    • AWS Serverless Application Model(AWS SAM) 템플릿을 사용하여 서버리스 애플리케이션을 정의합니다. AWS CodeDeploy를 사용하여 Canary10Percent15Minutes 배포 기본 설정 유형으로 Lambda 함수를 배포합니다. Amazon CloudWatch 경보를 사용하여 기능의 상태를 모니터링하십시오.
    • AWS CloudFormation을 사용하여 모든 스택 업데이트에 새 버전을 게시하고 모든 리소스에 Amazon CloudWatch 경보를 포함합니다. AWS::Lambda::Alias ​​리소스의 RoutingConfig 속성을 사용하여 스택 업데이트 중에 트래픽 라우팅을 업데이트합니다.

      설명: AWS Serverless Application Model(AWS SAM) 는 무엇입니까?
  8. DevOps 엔지니어는 Classic ILoad Balancer 뒤에 있는 상태 비저장 RESTful 서비스의 상태를 추적해야 합니다. 새 애플리케이션 개정판의 배포는 CI/CD 파이프라인을 통해 이루어집니다. 서비스 대기 시간이 정의된 임계값 이상으로 증가하면 서비스가 복구될 때까지 배포를 중지해야 합니다.

    다음 중 가장 빠른 감지 시간을 허용하는 방법은 무엇입니까?
    • Elastic Load Balancing에서 제공하는 Amazon CloudWatch 지표를 사용하여 평균 지연 시간을 계산합니다. 대기 시간이 정의된 임계값을 초과하여 증가하면 경보를 울리고 배포를 중지합니다.
    • AWS Lambda 및 Elastic Load Balancing 액세스 로그를 사용하여 평균 지연 시간을 감지합니다. 대기 시간이 정의된 임계값을 초과하여 증가하면 경보를 울리고 배포를 중지합니다.
    • AWS CodeDeploy의 MinimumHealthyHosts 설정을 사용하여 배포 롤백을 위한 임계값을 정의합니다. 이러한 임계값을 위반하면 배포를 롤백하십시오.
    • 지표 필터를 사용하여 Amazon CloudWatch Logs에서 애플리케이션 로그를 구문 분석합니다. 대기 시간에 대한 필터를 만듭니다. 대기 시간이 정의된 임계값을 초과하여 증가하면 경보를 울리고 배포를 중지합니다.

      설명: CodeDeploy란 무엇입니까?
      CodeDeploy는 Amazon EC2 인스턴스, 온프레미스 인스턴스, 서버리스 Lambda 함수 또는 Amazon ECS 서비스에 대한 애플리케이션 배포를 자동화하는 배포 서비스입니다.
      CodeDeploy는 서버에서 실행되고 Amazon S3 버킷, GitHub 리포지토리 또는 Bitbucket 리포지토리에 저장되는 애플리케이션 콘텐츠를 배포할 수 있습니다. CodeDeploy는 서버리스 Lambda 함수도 배포할 수 있습니다. CodeDeploy를 사용하기 전에 기존 코드를 변경할 필요가 없습니다.

  9. DevOps 엔지니어는 AWS Systems Manager(SSM)를 사용하여 하이브리드 클라우드 환경에서 Windows 기반 워크스테이션의 패치를 자동화하기 위한 구현을 주도하고 있습니다.

    엔지니어는 이 환경에서 패칭을 자동화하기 위해 Systems Manager를 설정하기 위해 어떤 단계를 따라야 합니까? (두 가지를 선택하세요.)
    • ssm.amazonaws.com 서비스가 모든 인스턴스에서 AssumeRole 작업을 실행할 수 있도록 Systems Manager에 대한 여러 IAM 서비스 역할을 생성합니다. 서비스 토큰을 생성할 수 있도록 리소스별 수준에서 역할을 등록합니다. 각 관리형 인스턴스에 연결된 새로 생성된 서비스 역할을 사용하여 관리형 인스턴스 활성화를 수행합니다.
    • ssm.amazonaws.com 서비스가 AssumeRole 작업을 실행할 수 있도록 Systems Manager에 대한 IAM 서비스 역할을 생성합니다. 서비스 토큰을 생성할 수 있도록 역할을 등록합니다. 새로 생성된 서비스 역할로 관리형 인스턴스 활성화를 수행합니다.
    • 이전에 얻은 활성화 코드 및 활성화 ID를 사용하여 하이브리드 서버에 SSM 에이전트를 다운로드 및 설치하고 Systems Manager 서비스에 서버 또는 가상 머신을 등록합니다. 하이브리드 인스턴스는 SSM 콘솔에서 "mi-" 접두사와 함께 표시됩니다.
    • 이전에 얻은 활성화 코드 및 활성화 ID를 사용하여 하이브리드 서버에 SSM 에이전트를 다운로드 및 설치하고 Systems Manager 서비스에 서버 또는 가상 머신을 등록합니다. 하이브리드 인스턴스는 일반 Amazon EC2 인스턴스로 프로비저닝된 것처럼 SSM 콘솔에 "i-" 접두사와 함께 표시됩니다.
    • AWS Config를 실행하여 패치되지 않고 규정을 준수하지 않는 인스턴스 목록을 생성합니다. 인스턴스 스케줄러 작업을 생성하고 AWS Lambda 함수를 통해 인스턴스 패치를 수행하여 규정을 준수하도록 합니다.

      설명: AWS Systems Manager의 기능인 Patch Manager는 보안 관련 업데이트 및 기타 유형의 업데이트로 관리형 노드를 패치하는 프로세스를 자동화합니다.  Patch Manager를 사용하면 운영 체제와 애플리케이션 모두를 패치할 수 있습니다. (Windows Server에서 애플리케이션 지원은 Microsoft에서 릴리스한 애플리케이션의 업데이트로 제한됩니다.)

      이 기능을 사용하면 누락된 패치가 있는지 관리형 노드를 스캔하고 태그를 사용하여 누락된 패치를 개별적으로 또는 대규모 관리형 노드 그룹에 적용할 수 있습니다. Patch Manager는 패치 기준을 사용합니다. 여기에는 릴리스 후 며칠 이내에 패치를 자동 승인하는 규칙과 승인 및 거부된 패치 목록이 포함될 수 있습니다. Systems Manager 유지 관리 기간 태스크로 실행되도록 패치를 예약하여 정기적으로 패치를 설치하거나 언제든지 온디맨드로 관리형 노드를 패치할 수 있습니다.

  10. 회사는 재해 복구 또는 대기 설치에 대한 분산 웹 응용 프로그램에 대한 자동 DNS 장애 조치를 도입해야 합니다. DevOps 엔지니어는 애플리케이션 실패 시 대체 엔드포인트에 대한 DNS 라우팅을 제공하도록 Amazon Route 53을 구성할 계획입니다.

    이를 달성하기 위해 엔지니어는 어떤 조치를 취해야 합니까? (두 가지를 선택하세요.)
    • 별칭 레코드로 입력할 수 없는 각 엔드포인트에 대해 Amazon Route 53 상태 확인을 생성합니다. 방화벽 및 라우팅 규칙이 Amazon Route 53이 상태 확인에 지정된 엔드포인트로 요청을 보낼 수 있도록 허용하는지 확인하십시오.
    • 트래픽을 AWS 리소스로 라우팅하는 별칭 레코드를 생성하고 대상 상태 평가 옵션의 값을 예로 설정한 다음 모든 비별칭 레코드를 생성합니다.
    • 관리 Amazon Route 53 레코드 세트를 생성하고 장애 조치로 설정한 다음 기본 및 보조 Amazon Route 53 레코드 세트와 연결하여 정상 DNS 항목에 트래픽을 분산시킵니다.
    • Amazon CloudWatch 경보를 생성하여 기본 Amazon Route 53 DNS 항목을 모니터링합니다. 그런 다음 보조 DNS 항목에 대한 Route 53에 대한 장애 조치 API 호출을 실행하는 연결된 AWS Lambda 함수를 생성합니다.
    • 기본 및 보조 오리진을 사용하여 기본 및 보조 Amazon Route 53 레코드 세트를 Amazon CloudFront 배포에 매핑합니다.
  11. 회사에서 워크로드를 실행하기 위해 Amazon ECS 클러스터를 구현하고 있습니다. 회사 아키텍처는 트래픽을 라우팅하기 위해 여러 대상 그룹을 사용하여 프런트 엔드에 Application Load Balancer가 있는 클러스터에서 여러 ECS 서비스를 실행합니다. 애플리케이션 개발 팀은 거의 실시간 분석을 위해 수집하여 Amazon S3 버킷으로 전송해야 하는 로그를 수집하는 데 어려움을 겪었습니다.

    DevOps 엔지니어는 이러한 요구 사항을 충족하기 위해 배포에서 무엇을 구성해야 합니까? (3개를 선택하세요.)
    • ECS 인스턴스에 Amazon CloudWatch Logs 로깅 에이전트를 설치합니다. ECS 작업 정의에서 로깅 드라이버를 'awslogs'로 변경합니다.
    • AWS에서 Amazon CloudWatch Logs 컨테이너 인스턴스를 다운로드하고 작업으로 구성합니다. 로깅 태스크를 포함하도록 애플리케이션 서비스 정의를 업데이트하십시오.
    • Amazon CloudWatch Events를 사용하여 60초마다 create-export -task CloudWatch Logs 명령을 실행하는 AWS Lambda 함수를 예약한 다음 출력을 로깅 S3 버킷으로 지정합니다.
    • Application Load Balancer에서 액세스 로깅을 활성화한 다음 S3 로깅 버킷을 직접 가리킵니다.
      설명: Application Load Balancer에 대한 액세스 로그
      Elastic Load Balancing은 로드 밸런서에 전송된 요청에 대한 자세한 정보를 캡처하는 액세스 로그를 제공합니다. 각 로그에는 요청을 받은 시간, 클라이언트의 IP 주소, 지연 시간, 요청 경로 및 서버 응답과 같은 정보가 포함되어 있습니다. 이러한 액세스 로그를 사용하여 트래픽 패턴을 분석하고 문제를 해결할 수 있습니다.

    • ECS 서비스에서 사용하는 대상 그룹에서 액세스 로깅을 활성화한 다음 S3 로깅 버킷을 직접 가리킵니다.
    • S3 로깅 버킷의 대상으로 Amazon Kinesis Data Firehose를 생성한 다음 Kinesis용 Amazon CloudWatch Logs 구독 필터를 생성합니다.

      설명: Amazon Elastic Container Service란 무엇입니까?
      Amazon ECS 클러스터는 태스크 또는 서비스의 논리적 그룹입니다. 태스크와 서비스는 클러스터에 등록된 인프라에서 실행됩니다. 인프라 용량은 AWS Fargate에서 제공할 수 있으며, 이는 AWS가 관리하는 서버리스 인프라나 스스로 관리하는 Amazon EC2 인스턴스, 온프레미스 서버 또는 원격으로 관리하는 가상 머신(VM)입니다. 대부분의 경우 Amazon ECS 용량 공급자는 클러스터의 태스크가 사용하는 인프라를 관리하는 데 사용할 수 있습니다.
  12. 개발 팀은 현재 AWS CodeDeploy를 사용하여 Auto Scaling 그룹에 애플리케이션 개정을 배포하고 있습니다. 배포 프로세스가 실패하면 자동으로 롤백하고 알림을 보내야 합니다.

    모든 요구 사항을 충족할 수 있는 가장 효과적인 구성은 무엇입니까?
    • CodeDeploy 작업에 대한 Amazon CloudWatch Events 규칙을 생성합니다. 배포 실패 시 Amazon SNS 메시지를 보내도록 CloudWatch Events 규칙을 구성합니다. 포 실패 시 자동으로 롤백하도록 CodeDeploy를 구성합니다.
      설명:  배포에 실패하거나 지정한 모니터링 임계값이 충족될 때 자동으로 롤백하도록 배포 그룹 또는 배포를 구성할 수 있습니다. 이 경우 마지막으로 알려진 정상 버전의 애플리케이션 개정 버전이 배포됩니다. 애플리케이션을 만들거나 배포 그룹을 만들거나 업데이트할 때 자동 롤백을 구성합니다. 
      배포가 자동으로 롤백될 때마다 Amazon Simple Notification Service를 사용하여 알림을 받을 수 있습니다. Monitoring Deployments with Amazon SNS Event Notifications

      새 배포를 만들 때 배포 그룹에 지정된 자동 롤백 구성을 재정의하도록 선택할 수도 있습니다.
    • CodeDeploy에 대해 사용 가능한 Amazon CloudWatch 지표를 사용하여 CloudWatch 경보를 생성합니다. 배포 실패 시 Amazon SNS 메시지를 보내도록 CloudWatch 경보를 구성합니다. AWS CLI를 사용하여 이전에 배포된 개정을 재배포합니다.
    • 배포 실패 시 Amazon SNS 주제에 알림을 보내는 트리거를 생성하도록 CodeDeploy 에이전트를 구성합니다. 배포 실패 시 자동으로 롤백하도록 CodeDeploy를 구성합니다.
    • AWS CloudTrail을 사용하여 AWS 계정에서 CodeDeploy를 대신하여 수행한 API 호출을 모니터링합니다. 배포 실패 시 Amazon SNS 메시지를 보냅니다. AWS CLI를 사용하여 이전에 배포된 개정을 재배포합니다.

  13. 대기업이 AWS에 웹 애플리케이션을 배포하고 있습니다. 애플리케이션은 Application Load Balancer 뒤의 Amazon EC2 인스턴스에서 실행됩니다. 인스턴스는 여러 가용 영역의 Auto Scaling 그룹에서 실행됩니다. 애플리케이션은 Amazon RDS Oracle DB 인스턴스 및 Amazon DynamoDB에 데이터를 저장합니다. 개발, 테스트 및 프로덕션을 위한 별도의 환경이 있습니다.

    배포 중에 암호 자격 증명을 얻을 수 있는 가장 안전하고 유연한 방법은 무엇입니까?
    • AWS 서비스에 액세스하기 위해 AWS Systems Manager SecureString 파라미터에서 액세스 키를 검색합니다. Systems Manager SecureString 파라미터에서 데이터베이스 자격 증명을 검색합니다.
    • EC2 IAM 역할로 EC2 인스턴스를 시작하여 AWS 서비스에 액세스합니다. AWS Secrets Manager에서 데이터베이스 자격 증명을 검색합니다.
    • AWS 시스템 관리자 일반 텍스트 파라미터에서 액세스 키를 검색하여 AWS 서비스에 액세스합니다. Systems Manager SecureString 파라미터에서 데이터베이스 자격 증명을 검색합니다.
    • EC2 IAM 역할로 EC2 인스턴스를 시작하여 AWS 서비스에 액세스합니다. 응용 프로그램 아티팩트와 함께 암호화된 구성 파일에 데이터베이스 암호를 저장합니다.

      설명: AWS Secrets Manager란 무엇인가요?
      과거에는 데이터베이스 접속 정보를 애플리케이션에 직접 포함시켰습니다. 자격 증명을 교체할 시기가 되면 새 자격 증명을 생성하는 것보다 더 많은 작업을 해야 했습니다. 시간을 들여 새 자격 증명을 사용하도록 애플리케이션을 업데이트해야 했습니다. 

       Secrets Manager는 코드의 암호를 포함해 하드 코딩된 자격 증명을 Secrets Manager에서 프로그래밍 방식으로 보안 암호를 검색하도록 하는 API 호출로 바꿀 수 있습니다. 이렇게 하면 보안 암호가 코드에 더 이상 존재하지 않기 때문에 코드를 검사하는 누군가에 의해 보안 암호가 손상되지 않도록 방지할 수 있습니다. 또한 사용자가 지정한 일정에 따라 Secrets Manager가 자동으로 보안 암호를 교체하도록 구성할 수 있습니다. 따라서 단기 보안 암호로 장기 보안 암호를 교체할 수 있어 손상 위험이 크게 줄어듭니다.
  14. DevOps 엔지니어는 웹 애플리케이션의 배포 전략을 설계하고 있습니다. 애플리케이션은 Auto Scaling 그룹을 사용하여 AMI를 사용하여 Amazon EC2 인스턴스를 시작합니다. 동일한 인프라가 여러 환경(개발, 테스트 및 품질 보증)에 배포됩니다. 배포 전략은 다음 요구 사항을 충족해야 합니다.

    • 인스턴스 시작 시간 최소화
    • 동일한 AMI가 여러 환경에서 작동하도록 허용
    • 여러 환경에 대한 암호를 안전하게 저장 => AWS Systems Manager Parameter Store를 사용하여 AWS KMS를 사용하여 암호를 저장

    이것은 어떻게 달성되어야 하는가?
    • Amazon EC2 인스턴스를 시작한 다음 스크립트를 실행하여 소프트웨어를 설치하고 AMI를 생성하는 AWS Lambda 함수를 사용하여 AMI를 사전 구성합니다. Auto Scaling 수명 주기 후크를 구성하여 인스턴스가 시작되는 환경을 결정하고 해당 결과에 따라 구성 스크립트를 실행합니다. 비밀을 .ini 파일에 저장하고 Amazon S3에 저장합니다. EC2 사용자 데이터의 구성 스크립트를 사용하여 암호를 검색합니다.
    • AWS Systems Manager 자동화를 사용하여 모든 소프트웨어를 설치하여 AMI를 사전 구성하고 시작할 때 특정 환경으로 인스턴스에 태그를 지정하도록 Auto Scaling을 구성합니다. 그런 다음 사용자 데이터의 부트스트랩 스크립트를 사용하여 태그를 읽고 환경에 대한 설정을 구성합니다. AWS Systems Manager Parameter Store를 사용하여 AWS KMS를 사용하여 암호를 저장합니다.
    • AWS Marketplace의 표준 AMI를 사용합니다. 현재 환경을 감지하도록 Auto Scaling을 구성합니다. Amazon EC2 사용자 데이터의 스크립트를 사용하여 소프트웨어를 설치합니다. AWS Secrets Manager를 사용하여 모든 환경에 대한 자격 증명을 저장합니다.
    • 모든 환경에 대한 모든 소프트웨어 및 구성을 설치하여 AMI를 사전 구성합니다. 시작 시 인스턴스에 환경 태그를 지정하도록 Auto Scaling을 구성합니다. Amazon EC2 사용자 데이터를 사용하여 인스턴스 ID를 읽은 다음 적절한 환경에 대한 설정을 재구성하는 AWS Lambda 함수를 트리거합니다. AWS Systems Manager Parameter Store를 사용하여 AWS KMS를 사용하여 암호를 저장합니다.

      설명:
      AWS Systems Manager Parameter Store
      애플리케이션에는 외부에 노출되어서는 안 되는 비밀 값들이 있습니다. 예를 들면, 데이터베이스 접속 정보, 외부 API 서비스를 이용하기 위한 비밀 액세스 키 등이 있습니다. 이런 값들은 소스코드와 함께 서버에서 사용되지만 소스코드보다 훨씬 더 안전하게 관리되어야 합니다.

      AWS Systems Manager 자동화
      • 규모에 맞게 운영 효율성을 개선하고, 수동 개입과 관련된 오류를 줄이고, 일반적인 문제 해결 시간을 단축한다.
      • 배포 및 구성 태스크를 자동화한다.
      • 일반적인 문제를 안정적으로 해결하고, 문제 해결 효율성을 높이고, 반복 작업을 줄이려는 관리자
      • 일반적으로 수동으로 수행하는 태스크를 자동화하려는 사용자
  15. 개발자는 50개의 Amazon EC2 Linux 서버 플릿을 유지 관리하고 있습니다. 서버는 Amazon EC2 Auto Scaling 그룹의 일부이며 로드 밸런싱을 위해 Elastic Load Balancing도 사용합니다.

    ELB HTTP 상태 확인에 실패한 후 일부 애플리케이션 서버가 종료되는 경우가 가끔 있습니다. 개발자는 문제에 대한 근본 원인 분석을 수행하려고 하지만 애플리케이션 로그에 액세스하기 전에 서버가 종료됩니다.

    로그 수집을 자동화하려면 어떻게 해야 합니까?
    • Auto Scaling 수명 주기 후크를 사용하여 인스턴스를 Pending:Wait 상태로 설정합니다. EC2 인스턴스 종료 성공에 대한 Amazon CloudWatch 경보를 생성하고 SSM Run Command 스크립트를 실행하는 AWS Lambda 함수를 트리거하여 로그를 수집하고 Amazon S3에 푸시하며 로그가 수집되면 수명 주기 작업을 완료합니다.
    • Auto Scaling 수명 주기 후크를 사용하여 인스턴스를 Terminating:Wait 상태로 전환합니다. EC2 인스턴스 종료 수명 주기 작업에 대한 구성 규칙을 생성하고 스크립트를 실행하여 로그를 수집하고 Amazon S3에 푸시하고 로그가 수집되면 수명 주기 작업을 완료하는 단계 함수를 트리거합니다.
    • Auto Scaling 수명 주기 후크를 사용하여 인스턴스를 Terminating:Wait 상태로 전환합니다. EC2 인스턴스 종료 성공에 대한 Amazon CloudWatch 구독 필터를 생성하고 호출된 로그에 대한 스크립트를 실행하는 CloudWatch 에이전트를 트리거하고, 로그를 Amazon S3에 푸시하고, 로그가 수집되면 수명 주기 작업을 완료합니다.
    • Auto Scaling 수명 주기 후크를 사용하여 인스턴스를 Terminating:Wait 상태로 전환합니다. EC2 인스턴스 종료 수명 주기 작업에 대한 Amazon CloudWatch Events 규칙을 생성하고 SSM Run Command 스크립트를 실행하여 로그를 수집하고 Amazon S3에 푸시하고 로그가 수집되면 수명 주기 작업을 완료하는 AWS Lambda 함수를 트리거합니다.

  16. 회사에는 AWS Elastic Beanstalk, Amazon S3 및 Amazon DynamoDB를 사용하여 웹 애플리케이션을 개발하는 웹 애플리케이션이 있습니다. 웹 애플리케이션의 인기가 극적으로 증가하여 예측할 수 없는 트래픽 급증이 발생했습니다. 한 DevOps 엔지니어는 요청의 90%가 DynamoDB 테이블과 S3 버킷에 저장된 이미지에 대한 중복 읽기 요청임을 지적했습니다.

    엔지니어는 웹 사이트의 성능을 어떻게 향상시킬 수 있습니까?
    • Redis용 Amazon ElastiCache를 사용하여 DynamoDB 및 AWS Elemental MediaStore에 대한 반복 읽기 요청을 캐싱하여 S3에 저장된 이미지를 캐싱합니다.
    • Memcached용 Amazon ElastiCache를 사용하여 DynamoDB 및 Amazon EFS에 대한 반복 읽기 요청을 캐싱하여 S3에 저장된 이미지를 캐싱합니다.
    • DynamoDB Accelerator를 사용하여 DynamoDB 및 Amazon CloudFront에 대한 반복 읽기 요청을 캐싱하여 S3에 저장된 이미지를 캐싱합니다.
      설명:
      Amazon CloudFront란 무엇입니까?
      CloudFront는 AWS 백본 네트워크를 통해 최종 사용자에게 가장 빨리 제공합니다. AWS 네트워크를 사용하여 네트워크의 수를 줄이며, 파일의 첫 바이트를 로드하는 데 걸리는 지연 시간이 줄어들고 데이터 전송 속도가 빨라집니다.

      DynamoDB Accelerator
      Amazon DynamoDB 응답 시간은 한 자릿수 밀리초 단위로 측정할 수 있습니다. DynamoDB Accelerator(DAX)는 최종적으로 일관된 데이터에 액세스하기 위한 빠른 응답 시간을 제공합니다.

      DAX는 빠른 인 메모리 성능의 이점을 가지고 있습니다. 
      1) 메모리 내 캐시인 DAX는 결과적으로 일관된 읽기 워크로드의 응답 시간을 한 자릿수 밀리초에서 마이크로초로 대폭 줄입니다.
      2) DAX는 DynamoDB와 API 호환되는 관리형 서비스를 제공하여 운영 및 애플리케이션 복잡성을 줄입니다. 따라서 기존 애플리케이션과 함께 사용하려면 최소한의 기능 변경만 필요합니다.
      3) 읽기가 많거나 버스트가 많은 워크로드의 경우 DAX는 읽기 용량 단위를 과도하게 프로비저닝할 필요성을 줄임으로써 처리량을 높이고 잠재적인 운영 비용을 절감합니다. 이는 개별 키를 반복해서 읽어야 하는 애플리케이션에 특히 유용합니다.
    • DynamoDB Streams를 사용하여 DynamoDB에 대한 반복 읽기 요청을 캐시하고 API Gateway를 사용하여 S3에 저장된 이미지를 캐시하십시오.

  17. 회사에서 특정 병렬 처리 메커니즘을 실행하는 소프트웨어 솔루션을 만들고 있습니다. 이 소프트웨어는 일부 특수한 시나리오에서 수십 대의 서버로 확장할 수 있습니다. 이 솔루션은 라이선스 기반 독점 라이브러리를 사용하므로 각 개별 서버에 단일 전용 라이선스가 설치되어 있어야 합니다. 이 회사는 200개의 라이선스를 보유하고 있으며 최대 200개의 서버 노드를 동시에 실행할 계획입니다.
    회사에서 요청한 기능은 다음과 같습니다.

    • 대규모 라이선스 사용을 자동화하는 메커니즘.
    • 언제든지 사용할 수 있는 라이센스를 확인하기 위해 나중에 사용할 대시보드 생성.

    이러한 요구 사항을 달성하는 가장 효과적인 방법은 무엇입니까?
    • 프라이빗 Amazon S3 버킷에 라이선스를 업로드합니다. 라이선스에 대한 매핑 섹션이 있는 AWS CloudFormation 템플릿을 생성합니다. 템플릿에서 Auto Scaling 그룹을 생성하여 서버를 시작합니다. 사용자 데이터 스크립트에서 매핑 섹션에서 사용 가능한 라이선스를 획득합니다. Auto Scaling 수명 주기 후크를 생성한 다음 인스턴스가 종료된 후 이를 사용하여 매핑을 업데이트합니다.
    • Amazon DynamoDB 테이블에 라이선스를 업로드합니다. Auto Scaling 그룹을 사용하여 서버를 시작하는 AWS CloudFormation 템플릿을 생성합니다. 사용자 데이터 스크립트에서 DynamoDB 테이블에서 사용 가능한 라이선스를 획득합니다. Auto Scaling 수명 주기 후크를 생성한 다음 인스턴스가 종료된 후 이를 사용하여 매핑을 업데이트합니다.

      설명: Amazon EC2에 shell 스크립트 
      Amazon EC2에서 인스턴스를 시작할 때 사용자 데이터를 인스턴스에 전달하여 일반적인 구성 작업을 자동으로 수행하는 데 사용하도록 할 수 있고, 인스턴스가 시작된 후에 스크립트를 실행할 수도 있습니다. Amazon EC2에 shell 스크립트 및 cloud-init 명령이라는 두 가지 유형의 사용자 데이터를 전달할 수 있습니다. 

    • 프라이빗 Amazon S3 버킷에 라이선스를 업로드합니다. S3에 저장된 라이선스 목록으로 Amazon SQS 대기열을 채웁니다. Auto Scaling 그룹을 사용하여 서버를 시작하는 AWS CloudFormation 템플릿을 생성합니다. 사용자 데이터 스크립트에서 SQS로부터 사용 가능한 라이선스를 획득합니다. Auto Scaling 수명 주기 후크를 생성한 다음 인스턴스가 종료된 후 이를 사용하여 라이선스를 SQS에 다시 넣습니다.
    • Amazon DynamoDB 테이블에 라이선스를 업로드합니다. 시작할 min:max 인스턴스와 함께 –count 파라미터를 사용하여 서버를 시작하는 AWS CLI 스크립트를 생성합니다. 사용자 데이터 스크립트에서 DynamoDB 테이블에서 사용 가능한 라이선스를 획득합니다. 각 인스턴스를 모니터링하고 장애가 발생한 경우 인스턴스를 교체한 다음 DynamoDB 테이블을 수동으로 업데이트합니다.
  18. 한 회사가 Amazon S3 버킷에서 호스팅되는 정적 웹 사이트를 개발했습니다. 웹 사이트는 AWS CloudFormation을 사용하여 배포됩니다. CloudFormation 템플릿은 S3 버킷과 소스 위치에서 버킷으로 콘텐츠를 복사하는 사용자 지정 리소스를 정의합니다.

    회사는 웹 사이트를 새 위치로 이동해야 하므로 기존 CloudFormation 스택을 삭제하고 다시 생성해야 한다고 결정했습니다. 그러나 CloudFormation은 스택을 완전히 삭제할 수 없다고 보고합니다.

    가장 가능성이 높은 원인은 무엇이며 DevOps 엔지니어는 웹 사이트의 현재 버전과 향후 버전에서 이 문제를 어떻게 완화할 수 있습니까?
    • S3 버킷에 활성 웹사이트 구성이 있기 때문에 삭제에 실패했습니다. S3 버킷 리소스에서 WebsiteConfiguration 속성을 제거하도록 CloudFormation 템플릿을 수정합니다.
    • S3 버킷이 비어 있지 않기 때문에 삭제에 실패했습니다. RequestType이 Delete일 때 버킷을 재귀적으로 비우도록 사용자 지정 리소스의 AWS Lambda 함수 코드를 수정합니다.
    • 사용자 지정 리소스가 삭제 정책을 정의하지 않기 때문에 삭제에 실패했습니다. RemoveOnDeletion 값을 사용하여 DeletionPolicy 속성을 사용자 지정 리소스 정의에 추가합니다.
    • S3 버킷이 비어 있지 않기 때문에 삭제에 실패했습니다. 값이 비어 있는 DeletionPolicy 속성을 추가하도록 CloudFormation 템플릿에서 S3 버킷 리소스를 수정합니다.
  19. 한 회사가 전 세계 고객을 위해 AWS에 새로운 모바일 게임을 배포하고 있습니다. 개발 팀은 AWS Code 서비스를 사용하며 다음 요구 사항을 충족해야 합니다.

    – 클라이언트는 백엔드에서 실시간 재생 데이터를 자주 그리고 최소한의 대기 시간으로 송수신해야 합니다.
    – 게임 데이터는 데이터 상주 요구 사항을 충족해야 합니다.

    DevOps 엔지니어가 요구 사항을 충족하기 위해 구현할 수 있는 전략은 무엇입니까?
    • 백엔드 애플리케이션을 여러 지역(regions)에 배포합니다. 코드 리포지토리에 대한 모든 업데이트는 2단계 빌드 및 배포 파이프라인을 트리거합니다. 한 리전에서 성공적으로 배포하면 AWS Lambda 함수를 호출하여 빌드 아티팩트를 다른 리전의 Amazon S3 버킷에 복사합니다. 아티팩트가 복사된 후 새 지역에서 배포 파이프라인을 트리거합니다.
    • 백엔드 애플리케이션을 단일 지역의 여러 가용 영역에 배포합니다. Amazon CloudFront 배포를 생성하여 전 세계 고객에게 애플리케이션 백엔드를 제공합니다. 코드 리포지토리에 대한 모든 업데이트는 2단계 빌드 및 배포 파이프라인을 트리거합니다. 파이프라인은 백엔드 애플리케이션을 모든 가용 영역에 배포합니다.
    • 백엔드 애플리케이션을 여러 지역에 배포합니다. AWS Direct Connect를 사용하여 글로벌 고객에게 애플리케이션 백엔드를 제공합니다. 코드 리포지토리에 대한 모든 업데이트는 리전에서 2단계 빌드 및 배포 파이프라인을 트리거합니다. 지역에 성공적으로 배포한 후 파이프라인은 아티팩트를 다른 지역에 계속 배포합니다.
    • 백엔드 애플리케이션을 여러 지역에 배포합니다. 코드 리포지토리에 대한 모든 업데이트는 리전에서 2단계 빌드 및 배포 파이프라인을 트리거합니다. 지역에서 성공적으로 배포한 후 파이프라인은 다른 지역에서 파이프라인을 호출하고 빌드 아티팩트 위치를 전달합니다. 파이프라인은 아티팩트 위치를 사용하고 새 지역에 애플리케이션을 배포합니다.
  20. 개발 팀이 AWS에서 서버리스 애플리케이션을 작업하고 있습니다. 잠재적인 프로덕션 문제를 신속하게 식별하고 해결하기 위해 팀은 전체 릴리스 전에 테스트로 소수의 사용자에게 변경 사항을 롤아웃하기로 결정했습니다. DevOps 엔지니어는 다운타임과 영향을 최소화하는 솔루션을 개발해야 합니다.

    다음 중 요구 사항을 충족하기 위해 사용해야 하는 솔루션은 무엇입니까? (두 가지를 선택하세요.)
    • 두 개의 대상 그룹이 있는 Application Load Balancer를 생성합니다. Amazon API Gateway 프라이빗 통합을 위해 Application Load Balancer를 설정합니다. 하나의 대상 그룹을 현재 버전에 연결하고 다른 대상 그룹을 새 버전에 연결합니다. 수신 트래픽의 10%를 새 버전으로 라우팅하도록 API Gateway를 구성합니다. 새 버전이 안정되면 모든 트래픽을 새 버전으로 보내고 로드 밸런서에서 이전 버전을 분리하도록 API Gateway를 구성합니다.
    • 현재 버전과 새 버전을 모두 가리키는 AWS Lambda 함수에 대한 별칭을 생성합니다. 수신 트래픽의 10%를 새 버전으로 라우팅하도록 별칭을 구성합니다. 새 버전이 안정적인 것으로 간주되므로 별칭을 업데이트하여 모든 트래픽을 새 버전으로 라우팅합니다.
    • 이전 버전과 새 버전에 대한 AWS Lambda 엔드포인트를 가리키는 AWS Route 53에서 장애 조치 레코드 세트를 생성합니다. 수신 트래픽의 10%를 새 버전으로 라우팅하도록 Route 53을 구성합니다. 새 버전이 안정되면 DNS 레코드를 업데이트하여 모든 트래픽을 새 버전으로 라우팅합니다.
    • 두 개의 대상 그룹이 있는 ELB Network Load Balancer를 생성합니다. Amazon API Gateway 프라이빗 통합을 위한 Network Load Balancer 설정 하나의 대상 그룹을 현재 버전에 연결하고 다른 대상 그룹을 새 버전에 연결합니다. 들어오는 트래픽의 10%를 새 버전으로 라우팅하도록 로드 밸런서를 구성합니다. 새 버전이 안정되면 로드 밸런서에서 이전 버전을 분리합니다.
    • Amazon API Gateway에서 일반 배포 단계에 카나리아 설정을 추가하여 카나리아 릴리스 배포를 생성합니다. 들어오는 트래픽의 10%를 카나리아 릴리스로 라우팅하도록 API 게이트웨이를 구성합니다. 카나리아 릴리스가 안정적인 것으로 간주되므로 프로덕션 릴리스로 승격합니다.

 

설명: Amazon API Gateway는 어떤 규모에서든 개발자가 API를 손쉽게 생성, 게시, 유지 관리, 모니터링 및 보안 유지할 수 있도록 하는 완전관리형 서비스입니다. API는 애플리케이션이 백엔드 서비스의 데이터, 비즈니스 로직 또는 기능에 액세스할 수 있는 "정문" 역할을 합니다. 
 API Gateway를 사용하면 AWS Lambda에서 실행되는 코드에 대한 사용자 지정 API를 쉽고 빠르게 생성한 후 API에서 Lambda 코드를 호출할 수 있습니다. API Gateway에서는 계정에서 AWS Lambda 코드를 실행하거나, AWS Step Functions 상태 머신을 시작하거나, AWS Elastic Beanstalk 또는 Amazon EC2를 호출하거나, 공개적으로 액세스 가능한 HTTP 엔드포인트를 통해 AWS 외부의 웹 서비스를 호출할 수 있습니다. API Gateway 콘솔을 사용하여 REST API 및 이와 관련된 리소스와 메서드를 정의하고, API 수명 주기를 관리하며, 클라이언트 SDK를 생성하고, API 지표를 볼 수 있습니다.

 

 

 

 

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