Design Resilient Architectures

AWS Certified Solutions Architect Associate

다중 계층 아키텍처 솔루션 설계방법

AWS SQS

  • 상황

    • 새 애플리케이션은 여러 ECS 작업에서 실행된다.

    • 프론트앤드 애플리케이션 로직은 데이터를 처리한 다음 해당 데이터를 백엔드 ECS 작업으로 전달하여 추가 처리를 수행하고 데이터 저장소에 데이터를 쓴다.

    • 이러한 상황에서 장애가 다른 구성요소에 영향을 미치지 않도록 상호 의존성을 줄일 수 있는 방법은?

  • 답변

    • SQS 대기열을 생성하고 메시지를 대기열에 추가하도록 프론트앤드를 구성하고 대기열에서 메시지를 폴링하도록 백엔드를 구성한다.

  • 기술 정리

    • SQS는 메시지 버스를 통해 응용 프로그램을 분리하는데 사용하는 서비스이다.

    • 프론트 앤드 애플리케이션은 큐에 메시지를 배치할 수 있으며, 백엔드는 새 메시지에 대한 큐를 폴링할 수 있다.

    • SQS는 풀 기반이라는 점이 중요, SNS는 푸시 기반

고가용성 및 내결함성에 대한 아키텍처 설계방법

Elastic Load Balancing

  • 상황

    • AWS 서비스를 이용하여 멀티플레이어 게임을 호스팅

    • 애플리케이션은 단일 가용 영역에서 EC2 인스턴스를 사용하고 있다.

    • 클라이언트는 L4를 통해 연결하는 상황

    • 이와같은 상황에서 고가용성 및 비용 효율적인 설계를 하는 방법?

  • 답변

    • EC2 인스턴스 앞에 Network Load Balancer를 구축 또는 여러 AZ의 인스턴스를 자동으로 추가하거나 제거하도록 Auto Scaling 그룹을 구성

  • 기술 정리

    • 고가용성을 위한 컴퓨팅 서비스 선택

      • Amazon EC2 Auto Scaling 그룹을 생성하여 여러 가용 영역에 인스턴스를 추가 및 제거

    • 비용 효율적인 서비스를 제공하기 위한 컴퓨팅 서비스 선택

      • 트래픽을 인스턴스에 분배하기 위해 아키텍처는 L4에서 작동하는 Network Load Balancer를 사용

      • Auto Scaling 그룹은 클라이언트의 요청에 따라 적절한 수의 인스턴스가 실행되도록 보장하므로 비용 효율적이다.

  • 상황

    • 웹 애플리케이션은 퍼블릭 및 프라이빗 서브넷에서 실행된다.

    • 앱플리케이션 아키텍처는 웹 계층과 EC2 인스턴스에서 실행되는 데이터베이스 계층으로 구성된다.

    • 두 계층 모두 단일 가용 영역(AZ)에서 실행된다.

    • 위 상황에서 고가용성을 제공하기 위한 방법은?

  • 답변

    • 여러 AZ에 걸쳐 있는 Amazon EC2 Auto Scaling 그룹 및 Application Load Balancer를 생성한다.

    • 동일한 VPC에서 각각 새 AZ에 새 퍼블릭 및 프라이빗 서브넷을 생성한다.

    • 데이터베이스를 Amazon RDS 다중 AZ 배포로 마이그레이션한다.

  • 기술정리

    • 고가용성을 보장하기 위해서는 웹 및 데이터베이스 계층 모두 변경해야 한다.

    • 웹 티어의 경우 ALB가 있는 여러 AZ에 걸친 Auto Scaling 그룹은 항상 인스턴스가 실행되고 트래픽이 분산되도록 한다.

    • 다중 AZ 기능이 있는 관리형 데이터베이스를 활용하려면 데이터베이스 계층을 EC2 인스턴스에서 Amazon RDS로 마이그레이션 해야 한다.

    • 이렇게 하면 기본 데이터베이스에 대한 액세스를 방해하는 문제가 있는 경우 보조 데이터베이스가 인계받을 수 있다.

  • 상황

    • 웹 애플리케이션은 공용 및 개인 서브넷에서 실행된다. 애플리케이션 아키텍처는 EC2 인스턴스에서 실행되는 웹 계층과 데이터베이스 계층으로 구성된다.

    • 두 계층 모두 단일 AZ(Availability Zone)에서 실행된다.

    • 이러한 아키텍처에 고가용성을 제공하기 위해 어떤 단계를 조합해야 할까?

  • 답변

    • 여러 AZ에 걸쳐 있는 EC2 Auto Scaling Group 및 ALB를 생성한다.

    • 동일한 VPC에 각각 새 AZ에 새 공용 및 개인 서브넷을 만든다. 그리고 데이터베이스를 RDS 다중 AZ 배포로 마이그레이션한다.

    • 현재 아키텍처에 고가용성을 추가하기 위해서는 웹 및 데이터베이스 계층 모두 변경이 필요하다.

    • 웹 계층의 경우 ALB가 있는 여러 AZ에 걸쳐 자동 확장 그룹은 항상 인스턴스가 실행 중이고, 트래픽이 해당 인스턴스에 배포되고 있음을 보장할 것이다.

    • Multi-AZ 기능이 있는 관리되는 데이터베이스를 활용하려면 데이터베이스 계층을 EC2 인스턴스에서 Amazon RDS 마이그레이션해야 한다.

    • 그리하면 주 데이터베이스에 대한 액세스를 금지하는 문제가 있는 경우 보조 데이터베이스가 대신할 수 있다.

AWS 서비스를 이용한 디커플링 매커니즘 설계방법

탄력적인 스토리지를 선택하는 방법

S3

  • 상황

    • 하나의 EC2 인스턴스는 데이터를 생성하고 저장하는 애플리케이션이 작동

    • 또 다른 EC2 인스턴스 그룹에는 데이터를 분석하고 수정하는 애플리케이션이 작동

    • 위 상황에서 스토리지의 용량이 지속적으로 늘어날 것이 분명할 때 어떤 스토리지를 선택해야 할지 생각하기

  • 답변

    • EFS는 여러 EC2 인스턴스에 탑재가 가능하고 동시에 액세스 할 수 있는 확장 가능한 파일 시스템을 제공할 수 있다.

  • 기술 정리

    • Amazon EFS(Amazon Elastic File System)

      • EFS를 애플리케이션 인스턴스에 파일 시스템을 마운트 할 수 있다.

      • 단순하고 확장 가능한 탄력적인 NFS 파일 시스템으로 클라우드 서비스 및 온프레미스 리소스와 함께 사용이 가능

      • 애플리케이션을 중단하지 않고 온디맨드 방식으로 페타바이트 단위로 확장 가능

      • 파일을 추가 및 제거 할 때 자동으로 확장 및 축소되므로 확장하기 위해서 용량을 프로비저닝하고 관리할 필요가 없다.

      • EFS는 네트워크 파일 시스템 버전4(NFSv4.1 및 NFSv.4.0) 프로토콜을 지원

      • EC2 인스턴스가 EFS 파일 시스템에 동시에 액세스하여 둘 이상의 인스턴스 또는 서버에서 실행되는 워크로드 및 애플리케이션에 대한 공통 데이터 소스를 제공할 수 있다.

  • 상황

    • 중요한 데이터를 S3 버킷에 저장하고 있는 상황에서 실수로 데이터를 삭제하는 경우 어떻게 복구할 수 있을까?

  • 답변

    • S3의 버전 관리를 통해 이를 해결할 수 있다.

  • 기술 정리

    • S3

      • 객체 버전 관리는 동일한 S3 버킷에 객체의 여러 버전을 유지할 수 있는 방법이다.

      • 버전 관리는 의도하지 않은 작업과 응용 프로그램의 오류를 모두 복구할 수 있는 기능을 제공한다.

      • 버전 관리를 사용하여 S3 버킷에 저장된 모든 객체의 모든 버전을 보존, 검색 및 복원할 수 있다.

  • 상황

    • 온프레미스 인프라에서 AWS 클라우드로 마이그레이션하려는 상황

    • 응용 프로그램 중 하나는 DFSR(분산 파일 시스템 복제)을 사용하여 데이터를 동기화 상태로 유지하는 Windows 파일 서버 팜에 파일을 저장하고 있다.

    • 위 상황에서 DFSR을 어떤 서비스로 변경하여야 할까?

  • 답변

    • Amazon FSx

  • 기술 정리

    • 윈도우 파일 서버용 FSx는 업계 표준 SMB 프로토콜을 통해 액세스 할 수 있는 매우 안정적인 관리형 파일 스토리지를 제공한다.

    • FSx는 윈도우 서버를 기반으로 하며 최종 사용자 파일 복원, 사용자 할당량 및 ACL을 포함하는 다양한 관리 기능을 제공한다.

    • FSx는 단일 AZ 및 다중 AZ 배포 모두에서 DFSR을 지원한다.

  • 상황

    • 웹 사이트는 CloudFront 배포의 오리진 역할을 하는 ALB 뒤에 Auto Scaling 그룹의 EC2 인스턴스에서 실행되고 있다.

    • AWS WAF는 SQL 주입 공격으로부터 보호하는데 사용된다.

    • 보안 로그를 검토한 결과 웹 사이트 접근을 차단해야 하는 외부 악성 IP를 발견했을 때 애플리케이션을 보호하기 위한 방법은 무엇일까?

  • 답변

    • 악성 IP 주소를 차단하는 IP 일치 조건을 추가하도록 AWS WAF 구성을 수정한다.

  • 기술 정리

    • AWS Web Application Firewall은 "IP set match statements" 라는 기능을 제공 한다.

    • IP 일치 조건IP 집합 일치라는 기능은 IP 주소주소 범위 집합에 대해 웹 요청 출처의 IP주소를 검사한다.

    • 이를 사용하여 요청이 들어온 IP 주소를 기반으로 웹 요청을 허용하거나 차단한다.

    • IPv4 및 IPv6 주소 범위를 지원하며 IP set은 확인할 IP 주소 또는 IP 주소 범위를 최대 10,000개 까지 보유할 수 있다.

  • 상황

    • 문서 제출을 위한 응용 프로그램을 구축하는데 애플리케이션은 S3 버킷을 스토리지로 사용하려고 한다.

    • 실수로 문서를 삭제하는 것을 방지하고 모든 버전의 문서를 사용할 수 있도록 해야 한다.

    • 사용자는 문서를 업로드하고 수정할 수 있어야 할 때, 어떤 서비스가 이 요구사항을 만족할 수 있을까?

  • 답변

    • 버킷에서 버전관리를 활성화, MFA 삭제를 활성화

    • 요구사항에서의 기능을 딱 만족하는 솔루션은 없기 때문에 각각의 요구사항을 만족할 수 있는 기능을 찾아야 한다.

  • 기술 정리

  • 상황

    • 어플리케이션은 고객이 업로드한 이미지를 수신하여 S3에 저장한다.

    • AWS Lambda 함수가 이미지를 처리하여 그래픽 요소를 추가한다.

    • 처리된 이미지는 사용자가 30일 동안 다운로드할 수가 있어야 하며, 그 이후에는 삭제할 수 있다.

    • 처리된 이미지는 원본 이미지에서 쉽게 다시 만들 수 있다.

    • 원본 이미지는 30일 동안 즉시 사용할 수 있어야 하며 추가로 90일 동안 24시간 이내에 액세스 할 수 있다.

    • 원본 이미지와 처리된 이미지를 가장 비용 효율적으로 사용할 수 있는 S3 스토리지 조합은 무엇인가?

  • 답변

    • 원본 이미지를 STANDARD 에 30일 동안 저장, GLACIER로 90일 동안 전환한 다음 데이터를 만료한다.

    • 처리된 이미지를 ONEZONE_IA에 저장하고 30일 후에 데이터를 만료한다.

  • 기술 정리

    • 원본이미지에 대한 주요 요구 사항은 30일 동안 즉시 사용할 수 있어야 하고(STANDARD) 24시간 이내에 90일 동안 사용할 수 있어야 한다.(GLACIER)

    • 그 이후에는 필요하지 않다.

    • 처리된 이미지에 대한 주요 요구 사항은 30일 동안 즉시 사용할 수 있어야 하며(원본에서 다시 만들 수 있으므로 ONEZONE_IA), 그 이후에는 필요하지 않다.

AWS DataSync

  • 상황

    • 조직은 온프레미스 환경의 데이터 센터에 많은 양의 데이터(파일) 를 보유하고 있다.

    • 조직에서 데이터를 S3로 옮기고 싶을 때 AWS Direct Connect 링크를 통한 데이터 마이그레이션을 자동화 하려고 할 떄 어떤 서비스를 이용해야 할까?

  • 답변

    • AWS DataSync

  • 기술정리

    • AWS DataSync는 온프레미스 스토리지와 S3 또는 Elastic File System(EFS) 간에 대용량 데이터를 온라인으로 이동할 수 있다.

    • DataSync는 복사 작업 스크립팅, 예약, 전송 모니터링, 데이터 유효성 검사, 네트워크 활용 최적화를 포함하여 이러한 많은 작업을 제거하거나 자동으로 처리한다.

    • 소스 데이터 저장소는 SMB(서버 메시지 블록) 파일 서버일 수 있다.

AWS DMS(Database Migration Service)

  • 상황

    • 웹 애플리케이션의 데이터베이스 계층은 윈도우즈 서버에서 실행 중이다.

    • 데이터베이스는 마이크로소프트 SQL 서버 데이터베이스를 사용하고 있다.

    • 데이터베이스를 AWS RDS 인스턴스로 마이그레이션 한다고 할때 최소한의 관리 작업과 다운타임으로 마이그레이션을 실행하는 방법은?

  • 답변

    • 데이터베이스를 RDS로 직접 마이그레이션하려면 AWS DMS(Database Migration Service)를 사용한다.

  • 기술 정리

Last updated