Design High Performing Architectures

AWS Certified Solutions Architect Associate

탄력적이고 확장이 가능한 솔루션을 식별하는 방법

Amazon SQS

  • 상황

    • 컴퓨팅 계층은 EC2 인스턴스에서 병렬로 실행되고 있고, 처리할 작업 수에 따라 확장되어야 한다.

    • 컴퓨팅 계층은 Stateless인 상태이다.

    • 응용 프로그램이 느슨하게 연결되어 있고, 작업 항목이 영구적으로 저장되어 있는지 확인해야 하는 상황에서 어떤 디자인을 사용해야 할까?

  • 답변

    • 처리해야 하는 작업을 보관하는 Amazon SQS 대기열을 생성한다.

    • 애플리케이션에 대한 EC2 Auto Scaling 그룹을 생성하여 SQS 대기열의 항목 수에 따라 노드를 추가 및 제거할 수 있도록 Auto Scaling 그룹에 대한 조정 정책을 설정하도록 한다.

  • 기술 정리 (어려움)

    • Amazon SQS

      • 작업을 저장하기 위해 내구성있고 느슨하게 결합된 솔루션이다.

      • 대기열에서 대기 중인 작업 수를 기반으로 동적으로 조정할 수 있도록 구성할 수 있다.

      • 이런 조정을 구성하기 위해서는 인스턴스당 백로그 지표를 사용하여 유지 관리할 인스턴스당 허용 가능한 백로그를 목표 값으로 사용할 수 있다.

        • 인스턴스당 백로그를 계산하기 위해서는 ApproximateNumberOfMessages 대기열 속성으로 시작하여 SQS 대기열의 길이(대기열에서 검색할 수 있는 메시지 수)를

          결정한다.

        • 해당 숫자를 집합의 실행 용량(Auto Scaling 그룹의 경우 InService 상태의 인스턴스 수)으로 나누어 인스턴스당 백로그를 얻는다.

        • 인스턴스당 허용 가능한 백로그는 목표 값을 계산하기 위해서는 먼저 애플리케이션이 대기 시간 측면에서 허용할 수 있는 것을 결정해야 한다.

        • 그런 다음 허용 가능한 지연 시간 값을 가져와 EC2 인스턴스가 메시지를 처리하는 데 걸리는 평균 시간으로 나눈다.

      • Amazon SQS 솔루션은 대기 중인 작업 수를 기반으로 Auto Scaling을 사용하여 EC2 인스턴스를 확장한다.

Amazon Aurora

  • 상황

    • 날시 업데이트를 제공하는 웹 애플리케이션은 ALB 뒤에 Multi AZ Auto Scaling Group의 EC2 인스턴스 집합에서 실행되고 있다.

    • 인스턴스는 Aurora 데이터베이스에 데이터를 저장하고 있다.

    • 요청 속도가 산발적으로 증가하여 애플리케이션을 보다 탄력적으로 만들 수 있는 솔루션을 찾고자 할 때 알맞은 솔루션은?

  • 답변

    • 아키텍처는 이미 복원력이 높지만 요청 비율이 갑자기 증가하면서 성능이 저하될 수 있다.

    • 이러한 상황을 해결하기 위해서는 Aurora 읽기 전용 복제본을 사용하여 기본 데이터베이스의 요청을 오프로드하는 읽기 트래픽을 제공할 수 있다.

    • FrontEnd 에서 ALB 앞에 CloudFront를 배치할 수 있다.

    • 위와 같은 방법으로 구성하면 컨텐츠를 캐싱하고 백엔드에서 요청을 오프로드할 수 있기 때문에 더 나은 성능을 기대할 수 있다.

Database Migration

  • 상황

    • 웹 애플리케이션의 데이터베이스 계층은 온프레미스 Window 서버에서 실행된다.

    • 데이터베이스는 Microsoft SQL Server 데이터베이스이다.

    • 애플리케이션 소유자가 데이터베이스를 RDS 인스턴스로 마이그레이션 하려고 할 때 최소한의 관리 노력과 가동 중지 시간으로 마이그레이션 하는 방법은?

  • 답변

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

  • 기술정리

확장 가능한 고성능 스토리지를 선택하는 방법

Kinesis

  • 상황

    • 매장과 창고가 많은 소매 회사는 IoT 센서를 구현하여 각 위치의 장치에서 모니터링 데이터를 수집한다.

    • 데이터는 실시간으로 AWS에 전송되며, 각 장치에 대해 이벤트를 순서대로 수신하고 향후 처리를 위래 데이터를 저장하는 솔루션을 제공해야 한다.

    • 위 상황에서 어떤 솔루션을 선택하는 것이 가장 효율적일까?

  • 답변

    • 각 디바이스의 파티션 키가 있는 실시간 이벤트에 Amazon Kinesis Data Streams를 사용한다.

    • Amazon Kinesis Data Firehose를 사용하여 S3에 데이터를 저장한다.

  • 기술정리 (어려움)

    • Amazon Kinesis Data Streams는 실시간으로 데이터를 수집하고 처리한다.

    • Kinesis data stream은 샤드의 집합으로 각 샤드는 스트림에서 고유하게 식별된 데이터 레코드 시퀀스이다.

    • 각 데이터 레코드에는 Kinesis data stream에서 할당한 시퀀스 번호가 있다.

    • 파티션 키 스트림 내에 샤드로 그룹 데이터에 사용된다.

    • Kinesis data stream은 스트림에 속한 데이터 레코드를 여러 샤드로 분리한다.

    • 각 데이터 레코드와 연결된 파티션 키를 사용하여 주어진 데이터 레코드가 속한 샤드를 결정한다.

    • 각 장치에 대해 파티션 키를 사용하여 해당 장치에 대한 레코드가 샤드별로 그룹화되고 샤드 자체가 순서를 보장한다.

    • S3는 데이터 레코드를 저장하기 위한 대상이다.

고성능 네트워킹 솔루션을 선택하는 방법

고성능 데이터베이스 솔루션을 선택하는 방법

Aurora

  • 상황

    • 한 보험 회사에 영국과 호주의 사용자에게 서비스를 제공하는 웹 애플리케이션이 있다.

    • 애플리케이션은 eu-west-2에서 호스팅되는 데이터베이스 계층에 MySQL 데이터베이스를 사용하고 있다.

    • 웹 계층은 eu-west-2ap-southeast-2에서 실행되고 있다.

    • Route 53은 사용자를 가장 가까운 웹 계층으로 안내하는 지리 근접 라우팅으로 사용된다.

    • 오스트레일리아 사용자의 경우 쿼리에 대한 응답 시간이 느리다는 이슈가 발생했을 때 성능을 향상시키기 위한 데이터베이스 계층에서의 방법은?

  • 답변

    • 문제가 발생하는 곳이 읽기 쿼리가 호주에서 영국으로 향하는 대기시간이고, 물리적으로 거리가 멀기 때문에 호주에서 읽기 성능을 향상시키기 위한 솔루션이 필요하다.

    • ap-southeast-2에서 읽기 전용 복제본을 구성하고 MySQL 호환 모드에서 데이터베이스를 Amazon Aurora 글로벌 데이터베이스로 마이그레이션한다.

    • 이러한 작업은 오스트레일리아 지겅의 사용자에게 더 나은 성능을 제공할 수 있다.

    • 쓰기는 여전히 영국 리전에서 이루어져야 하지만 읽기 성능은 크게 향상 될 수 있다.

  • 기술 정리

    • Aurora Global Database

      • 데이터가 마스터링되는 단일 기본 AWS 리전과 최대 5개의 읽기 전용 보조 AWS 리전으로 구성되어 있다.

      • Aurora는 1초 미만의 일반적인 지연 시간으로 보조 AWS 리전에 데이터를 복제한다.

      • 기본 AWS 리전의 기본 DB 인스턴스에 직접 쓰기 작업을 실행한다.

Last updated