AWS Certified Cloud Practitioner 클라우드 자격증 실전 문제를 활용한 준비-[1]
AWS Best Practices & Design Principles
Q. One of the most important AWS best-practices to follow is the cloud architecture principle of elasticity. How does this principle improve your architecture’s design?
A. By automatically provisioning the required AWS resources based on changes in demand
Elasticity 의 개념은 자원을 필요한 만큼 획득하고, 더 이상 필요 없다면 해제하는 것을 의미하며, 클라우드에서 자동적으로 이루어져야 합니다. AWS에서는 자원을 자동으로 Scale-out, in 또는 Scale up, down을 통해 트래픽 수요에 따라 충족하게 하게 됩니다. 예를 들어, Amazon EC2 Autoscaling은 자동으로 수요가 증가하거나 감소함에 따라 Amazon EC2 인스턴스를 추가하거나 제거하게 됩니다.
컴퓨팅의 성능을 높이고자 하기 위한 Scale Out vs Scale Up
- Scale Out: 같은 성능의 컴퓨팅 자원을 여러 대(N)로 추가하여 시스템을 확장하는 방법
- Scale Up: 하나의 컴퓨팅 자원에 자원(CPU, Memory, GPU 등)을 추가하여 성능을 높이는 방법
문제 보기에 AWS 자원은 Elastic Load Balancer를 통해 동적으로 스케일링을 해준다라고 하면 오답입니다. Elastic Load Balancer는 자원을 스케일링 해주는 것이 아니라 애플리케이션으로 들어오는 트래픽을 Amazon EC2 인스턴스나, 컨테이너, AWS Lambda와 같은 서비스로 분산시켜줍니다.
Reference
- Elasticity 정의 https://wa.aws.amazon.com/wat.concept.elasticity.en.html
- Amazon EC2 Auto Scaling: https://aws.amazon.com/ec2/autoscaling/
Q. Which of the below is a best-practice when designing solutions on AWS?
A. Automate wherever possible to make architectural experimentation easier
클라우드를 활용한 잘 만들어진 아키텍트 프레임워크는 다음의 디자인 원리를 사용합니다.
1) 서비스에 필요한 성능이 얼마나 필요할지 예상하는 것을 멈춘다.
- 우리가 출시하려는 서비스 배포를 위해 필요한 컴퓨팅 성능을 잘못 예측하고 고가의 장비를 들여 놓는다면 자원이나 비용적 낭비가 초래될 것입니다. 물론 놀고 있는(idle) 자원은 또 다른 서비스나 애플리케이션의 사용을 위해 VM(Virtual Machine)이나 Container를 활용해 활용도를 높일 수 있지만요. 클라우드 컴퓨팅에서는 이러한 낭비를 없앨 수 있습니다. 서비스 트래픽의 양에 따라 스케일 아웃이나 업은 동적으로 설정이 가능합니다.
2) 실제 프로덕션 환경에서의 테스트 환경을 가질 수 있다.
- TB(Test bed)에서 개발한 서비스를 실제 프로덕션 환경에서 어떻게 테스트를 할 것인가에 대한 질문입니다. 클라우드 서비스를 사용하면 실제 프로덕션 스케일 환경에서 테스트를 하고, 시뮬레이션이 완료되면 사용된 자원을 반납하고 종료를 통해 비용을 효율적으로 사용할 수 있습니다. On-premise 환경에서는 이미 구매한 서버이기 때문에 그 비싼 비용을 이미 지출하였고 놀고 있겠죠.
3) 아키텍처 구성을 더 쉽게 자동화가 가능하다.
- 적은 노력과 비용으로 구축한 시스템을 복제하거나 생성하기 쉽고 이 모든 것은 자동적으로 구성할 수 있습니다.
4) 진화적인 아키텍처를 만들어갈 수 있다.
- 정적이고, 일회성이고, 다소 적은 버전을 가진 서비스에서 사업의 변화나 고객의 니즈에 따라 동적이고, 더 빠른 버전을 배포 가능하고 그 주기가 다양해지는 것이 가능합니다. 아키텍처 디자인의 변화의 위험이 줄어듭니다.
5) 데이터를 활용한 아키텍처
- 여러 측면에서 수집된 데이터를 AWS가 제공해주는 분석이나 AI 서비스를 통해 더 향상된 서비스를 제공할 수 있습니다.
6) 고가용성을 위한 다양한 테스트
- 프로덕션 환경에서 발생할 수 있는 이벤트에서 다양한 테스트를 실행할 수 있습니다.
Reference
- https://d1.awsstatic.com/whitepapers/architecture/AWS_Well-Architected_Framework.pdf
Q. A company has developed an eCommerce web application in AWS. What should they do to ensure that the application has the highest level of availability?
A. Deploy the application across mutliple Regions and Availability Zones
AWS 서비스를 활용해 e 커머셔스 웹 애플리케이션 배포하려고 하는데 높은 고가용성 목적을 달성하기 위해서 필요한 것은 무엇인지에 대한 질문입니다. 고가용성을 위한 다양한 답들이 있겠지만 Region과 AZ도 빼놓을 수 없는 답입니다.
AWS의 글로벌 인프라는 전 세계에 흩어져 있는 Regions과 Availability Zones(AZ)로 구성되어 있습니다. 다음의 링크를 통해 전 세계에 구성된 리전과 AZ를 살펴 볼 수 있습니다.
Reference: https://aws.amazon.com/ko/about-aws/global-infrastructure/regions_az/
각각의 AWS Region은 분리된 물리적 위치를 포함하며 데이터 센터를 클러스터링하는 위치입니다. 각각의 Region은 지리적 영역 내에서 격리되고 물리적으로 분리된 다중의 Availability Zones를 가지게 됩니다. 각 AZ는 저지연(low latency)와 높은 처리량(high throughput)과 빠르고 충분한 네트워킹을 가지게 됩니다. 이러한 AZ는 장애 발생 시에 효과적인 방법으로 애플리케이션이나 데이터베이스의 가용성을 높이기 위해 디자인되었으며 복구나 스케일링 또한 신속하게 대응 가능합니다.
Q. Which of the following is an example of horizontal scaling in the AWS Cloud?
A. Adding more EC2 instances of the same size to handle an increase in traffic.
위에서 설명드린 Scale out vs Scale up과 유사한 질문입니다.
Horizontal Scaling vs Vertical Scaling
- Horizontal Scaling: 수평적인 스케일링의 개념으로 자원의 수를 증가하는 것으로 애플리케이션을 배포하는 서버의 대수를 늘리것이 예시가 되겠습니다. Scale out의 개념과 비슷합니다.
- Vertical Scaling: 수직적인 스케일링의 개념으로 하나의 단독적인 자원의 성능을 증가하는 것입니다. Scale up과 비슷한 개념으로 서버의 스토리지의 저장 공간을 늘리기 위해 드라이브를 추가하거나, 메모리를 추가하거나, 고성능의 CPU를 장착하는 것이 이에 속합니다. Amazon EC2에서는 쉽게 인스턴스를 멈추고 리사이징 하는 것이 쉽습니다.
Reference: https://wa.aws.amazon.com/wat.concept.horizontal-scaling.en.html
Q. What does the "Principle of Least Privilege" refer to?
A. You should grant you users only the permissions they need when they need them and nothing more.
최소한의 권한의 원리는 보안 이슈와 관련이 있습니다. 적은 유저에 대해 권한과 퍼미션을 줘야한다는 것이 정답입니다. 보안 관리자는 사용자에게 어떠한 권한을 주고, 할당된 업무에 어떠한 정책을 허용할지가 필요합니다. 최소한의 퍼미션과 권한을 할당하고 시작해야 합니다. 이에 해당하는 몇 개의 가이드에 대해 설명드리겠습니다.
1) 루트 유저 액세스키는 사용하지 않는다.
- 유저 액세스 키(access key)는 액세스 키 ID(key id)와 시크릿 액세스 키(secret)를 사용해 AWS의 CLI을 활용해 자원 요청을 할 수 있습니다. 루트 유저는 AWS의 모든 서비스와 빌링 정보에 접근할 수 있기 때문에 사용하면 안됩니다.
2) 개개인의 IAM 유저 생성하자.
- 팀마다 할당된 업무에 필요한 권한은 서로 다르기 때문에 개개인의 IAM 유저를 생성해 할당하면 관리자가 관리하기 쉽습니다.
3) IAM 유저에게 권한을 그룹 단위로 한다.
- 개개인마다 권한을 부여하지 말고, 각 팀마다 그룹 단위로 권한을 부여하자
4) IAM 정책을 생성할 때 최소한 권한만 부여하고, 초기에는 AWS가 관리하는 정책을 사용해 생성하자
5) 인라인 정책보다는 커스텀한 정책을 사용하자.
Reference: https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege
Q. In order to implement best practices when dealing with a “Single Point of Failure,” you should attempt to build as much automation as possible in both detecting and reacting to failure. Which of the following AWS services would help? (Choose TWO)
A. ELB, Autoscaling
단일 실패 또는 장애를 감지하고, 처리 및 복구하기 위해 자동으로 실행해주는 AWS 서비스에 대한 질문입니다.
첫째로는 장애 탐지로는 ELB(Elastic Load Balancing)와 Amazon Route 53 서비스를 사용해 health check나 라우팅되는 트래픽이 정상적으로 가는 지 탐지를 설정할 수 있습니다. 추가적으로 Auto Scaling을 활용해 비정상(unhealthy) 노드를 동적으로 교체하거나 트래픽의 양에 따라 추가적으로 늘리거나 감소하는 것이 가능합니다. 또한 AWS OpsWorks나 AWS Elastic Beanstalk으로 비정상적인 노드를 교체가 가능합니다.
AWS OpsWorks는 저도 생송해서 좀 찾아보았습니다. Chef 및 Puppet의 관리형 인스턴스를 제공하는 구성 관리 서비스입니다. Chef 및 Puppet은 코드를 사용해 서버 구성을 자동화할 수 있게 해주는 자동화 플랫폼입니다.
Reference: https://aws.amazon.com/ko/opsworks/
AWS Elastic Beanstalk은 Java, .NET, PHP, Node.js, Python, Ruby, Go, Docker를 사용하여 Apache, Nginx, Passenger, IIS와 같은 친숙한 서버에서 개발된 웹 애플리케이션 및 서비스를 간편하게 배포하고 조정할 수 있는 서비스입니다. 코드를 업로드하기만 하면 Elastic Beanstalk가 용량 프로비저닝, 로드 밸런싱, Auto Scaling부터 시작하여 애플리케이션 상태 모니터링에 이르기까지 배포를 자동으로 처리합니다.
Reference: https://aws.amazon.com/ko/elasticbeanstalk/
Q. Adjusting compute capacity dynamically to reduce cost is an implementation of which AWS cloud best practice?
A. Implement elasticity.
비용 감소를 위해 컴퓨팅 성능을 동적으로 조정하는 것은 Elasticity의 특성입니다. 위에서도 업근했죠.
여기서는 다른 특성인 Microservice에 대해서 살펴보겠습니다. 기존의 Monolithic Architecture에서는 단일 서비스를 동작시키기 위해서 애플리케이션의 컴포넌트들을 타이트하게 coupling 하였습니다. 각 컴포넌트들이 하나로 묶여 동작되기 때문에 특정 컴포넌트(WAS, DB 등)가 부하가 높아질 경우 이를 떼어내서 처리하기 힘들다는 단점이 있습니다. 이에 따라 Microservice Architecture가 나오게 되었고, 각각의 서비스를 다른 컴포넌트와 무관하게 스케일링할 수 있도록 가능하게 해주며, 각 컴포넌트를 담당하는 개발자는 서로 의존성없이 빠르게 개발할 수 있습니다. Microservice를 통해 CI/CD(Continuous Integration/Delivery)가 가능하게 되었고 고객의 니즈에 대해 빠르게 대응하여 새로운 기능을 접목시킬 수 잇고 롤백에 대해서도 문제가 되지 않습니다. Monolithic에서는 단일 실패가 애플리케이션 전체의 실패였다면, Microservice에서는 단일 지점에 대한 실패가 될 것이고, 분산 처리를 통해 고가용성을 달성할 수 있습니다.
Q. The principle “design for failure and nothing will fail” is very important when designing your AWS Cloud architecture. Which of the following would help adhere to this principle? (Choose TWO)
A. Availability Zones, Elastic Load Balancing
이 문제도 고장 장애를 복구하기 위한 원리이고 AWS 클라우드에서는 이를 도와주는 것은 AZ와 ELB가 되겠죠. AZ는 지역적으로 분리되어 있기 때문에 전체 데이터 센터가 자연 재해와 같은 이유로 다운되어도 다른 AZ에서 서비스가 동작되기 때문에 고가용성을 도모할 수 있으며, ELB를 통해 health check나 트래픽을 분산하는 것이 가능합니다.
Q. What is the advantage of the AWS-recommended practice of "decoupling" applications?
A. Reduces inter-dependencies so that failures do not impact other components of the application
Decoupling은 애플리케이션을 이루는 컴포넌트의 얽혀있는 로직이나 관계를 분해하는 것으로 애플리케이션의 복잡도가 높아짐에 따라 Microservice로의 전환하기가 쉽지 않습니다. 이에 따라 서로 연관 관계를 줄이고 고장 장애에 대해 단일 지점 실패로 끝나도록 구성되어야 합니다.
AWS Management s & Governance
Q. You have deployed your application on multiple Amazon EC2 instances. Your customers complain that sometimes they can’t reach your application. Which AWS service allows you to monitor the performance of your EC2 instances to assist in troubleshooting these issues?
A. Amazon CloudWatch
여러 Amazon EC2 인스턴스에 애플리케이션을 배포한 상태인데 고객들이 애플리케이션에 트래픽이 도달 못한다는 컴플레인이 들어왔습니다. EC2 인스턴스의 성능을 모니터링 하기 위해서는 Amazon CloudWatch가 필요합니다. Amazon CloudWatch는 AWS 클라우드 자원과 동작 중인 애플리케이션을 모니터링할 수 있는 서비스입니다. 모니터링 지표를 수집하고 로그 파일과 알람을 설정하여 자동적으로 대응할 수 있습니다.
AWS CloudTrail은 AWS 환경에서 발생되는 모든 유저의 인터랙션 활동을 모니터링할 수 있습니다.
AWS Config는 보안 및 거버넌스에서 동작되는 완전 관리형 서비스로 설정 기록이나 구성 변경에 대한 알림을 제공하고, AWS 자원 구성을 측정, 감사 및 평가할 수 있습니다.
Q. A company is concerned that they are spending money on underutilized compute resources in AWS. Which AWS feature will help ensure that their applications are automatically adding/removing EC2 compute capacity to closely match the required demand?
A. AWS Auto Scaling
AWS을 사용하고 있는 회사에서 사용되지 않고 있는 컴퓨팅 자원에 낭비되는 비용을 주의하고 있는 상황입니다. AWS 서비스 중에서 수요에 충족되도록 자동적으로 EC2 컴퓨팅 성능을 추가하거나 제거하도록 해주는 서비스는 AWS Auto Scaling 입니다.
AWS Cost Explorer는 쉽게 사용 가능한 인터페이스로 AWS에서 측정된 비용과 사용량을 관리하고 가시화해주는 서비스입니다.
AWS Budget은 커스텀하게 설정한 예산에 따라 사용량이나 비용이 초과 시 또는 초과가 예측될 시에 알람을 제공합니다.
Q. A startup company is operating on limited funds and is extremely concerned about cost overruns. Which of the below options can be used to notify the company when their monthly AWS bill exceeds $2000?
A. Setup a CloudWatch billing alarm that triggers an SNS notification to their email address
스타트업 히사에서 제한된 투자금으로 운영하고 있어 비용에 대해 민감합니다. 매달마다 $2000 초과하지 않도록 알림을 받고 싶은데 어떤 옵션이 있을까요? CloudWatch에 과금 알람 시에 SNS 서비스를 트리거하여 메일 주소로 알림을 줄 수 있습니다.
Q. Your company is developing a critical web application in AWS, and the security of the application is a top priority. Which of the following AWS services will provide infrastructure security optimization recommendations?
A. AWS Trusted Advisor
중요한 웹 애플리케이션을 AWS에서 개발 중인데 보안에 관련 사항이 최고 등급으로 우선시 되고 있습니다. 인프라 측면에서 보안을 최적화하여 추천해주는 서비스는 무엇일까요? AWS Trusted Advisor는 온라인 툴로 AWS 자원을 프로비저닝 시에 실시간으로 안내를 제공합니다. 이 서비스는 5가지 카테고리(비용 최적화, 보안, 고장 장애 복구, 성능 그리고 서비스 제한)에서 추천을 해줍니다. 예시로 보안에 대해서 자세히 설명을 해보겠습니다.
1) Security Groups
- 특정 포트에 대해 제한없는 액세스를 허용하는 규칙에 대한 보안 그룹을 확인하여 악의적인 활동(해킹, DDoS 공격이나 데이터 손실)을 방지합니다.
2) Amazon S3(Simple Storage Service) 버킷 퍼미션
- Amazon 버킷 퍼미션 권한에 대해 모든 사용자에게 부여하는 것은 큰 악영향을 초래합니다. 특히 업로드/삭제 권한은 보안적 위협 요소가 발생할 수 있습니다.
3) 루트 계정에 대한 MFA(Multi Factor Authentication)
- 루트 계정에 대해서는 철저한 보안 관리가 필요합니다. 루트 계정이 AWS 콘솔이나 웹 사이트에서 상호작용이 발생 시에 MFA 장비나 가상의 장치로부터 생성된 유일한 암호화된 인증 코드를 사용하도록 해야 합니다.
4) AWS Shield
- AWS Shield는 DDoS(Distributed Denial of Service)로부터 보안 보호하는 서비스입니다.
Q. What does the AWS Personal Health Dashboard provide? (Choose TWO)
A. Detailed troubleshooting gudiance to address AWS events impacting your resources, Personalized view of AWS servie health
AWS Personal Health Dashboard는 AWS가 사용자에게 영향을 주는 이벤트 발생 시 알람과 대응에 대한 지침을 제공합니다. Service Health Dashboard는 전반적인 AWS 서비스의 상태를 표시하지만 Personal Health Dashboard는 개인화된 뷰에서의 성능과 가용성을 보여줍니다. 예를 들어 EC2 인스턴스에 연결된 EBS 볼륨 하나가 손실이 된 경우 사용 중인 특정 서비스 상태에 대해 알람을 제공하고 가시성을 확보하여 빠르게 해결을 할 수 있도록 수정에 대한 세부 정보 및 보완 지침을 통해 시간을 절약할 수 있습니다.
Reference
https://status.aws.amazon.com/
Q. What do you gain from setting up consolidated billing for five different AWS accounts under another master account?
A. Each AWS account gets volume discounts
통합된 빌링(consolidated billing)에 다섯 개의 서로 다른 AWS 계정이 Master 계정 아래 존재합니다. 각각의 계정은 AWS에서 할인된 볼륨을 갖습니다. 결제를 위해 AWS는 통합 결제의 모든 계정을 하나의 계정으로 취급하는데 Amazon EC2나 S3와 같은 일부 서비스에서는 서비스를 더 많이 사용시 특정 사용 차원에서 걸쳐 볼륨 요금 체계를 갖고 있습니다. 예를 들어 각기 다른 3개의 계정에 50TB를 사용하는 경우 일반적으로 $23 * 3 *50 = $3450 가 나오지만 통합 결제 사용 시 $ 23 * 50 + $ 22 * 50 * 2 = $3350가 나와 $100을 절약할 수 있습니다.
Reference:
https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/consolidated-billing.html
Q. What does AWS provide to deploy popular technologies - such as IBM MQ - on AWS with the least amount of effort and time?
A. AWS Quick Start reference deployments
AWS에서 최소한의 노력과 시간으로 인기있는 기술을 배포하는 방법은 AWS Quick Start 레퍼런스를 참조하여 배포하는 것입니다.널리 사용되는 엔터프라이즈 솔루션의 아키텍처를 개략적으로 설명하고 배포를 자동화하는 CloudFormation이나 다양한 사례를 제공하고 있습니다.
Reference:
https://aws.amazon.com/quickstart/
Q. You have noticed that several critical Amazon EC2 instances have been terminated. Which of the following AWS services would help you determine who took this action?
A. AWS CloudTrail
Amazon EC2 인스턴스에서 종료가 될 경우 알람을 받고 싶습니다. 특정 누가 이러한 액션을 취했는지 확인하기 위한 서비스는 AWS Cloud Trail이 있습니다. CloudTrail은 CloudTrail은 AWS Management Console, AWS SDK, 명령 줄 도구 및 기타 AWS 서비스를 통해 수행된 작업을 포함하여 AWS 계정 활동의 이벤트 기록을 제공합니다.
Q. A global company with a large number of AWS accounts is seeking a way in which they can centrally manage billing and security policies across all accounts. Which AWS Service will assist them in meeting these goals?
A. AWS Organizations
AWS Organizations은 고객이 AWS에서 워크로드를 확장할 때 환경을 중앙에서 관리 할 수 있도록 지원합니다. Organizations는 중앙에서 결제를 관리 할 수 있도록 지원하며, 액세스, 규정 준수 및 보안 제어 AWS 계정간에 리소스를 공유합니다.
IAM Groups은 여러 AWS 계정을 관리하는데 사용되지 않고, 단일 계정 내에서 단위로 관리하기 위한 IAM 유저 집합입니다. 해당 그룹에 권한을 주어 쉽게 관리가 가능합니다.
Q. What is the AWS service that enables AWS architects to manage infrastructure as code?
A. AWS CloudFormation
인프라 측면에서 코드를 통해 AWS 아키텍처를 관리하기 위한 서비스는 AWS CloudFormation이 있습니다. AWS CloudFormation을 사용하면 프로그래밍 언어 또는 간단한 텍스트 파일을 사용하여 모든 리전 및 계정에서 애플리케이션에 필요한 모든 리소스를 자동화되고 안전한 방식으로 모델링하고 프로비저닝 할 수 있습니다.
이상 해당 포스트는 여기서 마치고 다음에 포스트로 뵙겠습니다.
감사합니다!
'AWS' 카테고리의 다른 글
AWS Certified Cloud Practitioner 클라우드 자격증 실전 문제를 활용한 준비-[3] (0) | 2020.12.27 |
---|---|
AWS Certified Cloud Practitioner 클라우드 자격증 실전 문제를 활용한 준비-[2] (0) | 2020.12.25 |
AWS Certified Cloud Practitioner 클라우드 자격증 (0) | 2020.12.13 |
container보다 빠른 새로운 가상화 기술 Firecracker (0) | 2019.04.19 |
AWS Lambda PyTorch RNN 모델 서빙하기 (0) | 2019.01.23 |