AWS상에 내결함성이 뛰어난 애플리케이션 구축 2/2

빌드업웍스
17 min readMar 18, 2020

--

https://AWS.amazon.com/ko/

본 문서는 총 2부로 구성되어 있으며 이 글은 2부입니다.

1부 링크 : AWS상에 내결함성이 뛰어난 애플리케이션 구축 1/2

Amazon Simple Queue Service

Amazon SQS (Amazon Simple Queue Service)는 완전 관리형 메시지 대기열 서비스로, 마이크로 서비스, 분산 시스템 및 서버리스 애플리케이션을 분리하고 확장 할 수 있습니다. Amazon SQS는 메시지 지향 미들웨어 관리 및 운영과 관련된 복잡성과 오버 헤드를 제거하고 개발자가 차별화 된 작업에 집중할 수 있도록 합니다. Amazon SQS를 사용하면 메시지를 잃거나 다른 서비스를 사용할 필요없이 볼륨에 상관없이 소프트웨어 구성 요소간에 메시지를 보내고 저장하고 받을 수 있습니다.

메시지는 생성 한 대기열에 저장됩니다. 각 큐는 URL로 정의되므로 해당 큐의 ACL (액세스 제어 목록)에 따라 인터넷에 액세스 할 수 있는 모든 서버에서 액세스 할 수 있습니다. 대기열을 항상 사용할 수 있도록 Amazon SQS를 사용하십시오. 큐로 보내는 모든 메시지는 최대 14 일 동안 유지됩니다.

SQS는 두 가지 유형의 메시지 큐를 제공합니다. 표준 대기열은 최고의 처리량, 최상의 주문 순서 및 최상의 주문 순서로 최소 한 번에 제공합니다. SQS FIFO 대기열은 처리량이 높으며 메시지가 전송 된 순서대로 정확히 한 번만 처리되도록 설계되었습니다.

다른 AWS 인프라 웹 서비스와 함께 Amazon SQS 사용

Amazon SQS 메시지 큐잉은 Amazon Redshift, Amazon DynamoDB, Amazon Relational Database Service (Amazon RDS), Amazon EC2, Amazon Elastic Container Service (Amazon ECS), AWS Lambda 및 Amazon S3와 같은 다른 AWS 서비스와 함께 사용하여 보다 확장 가능하고 안정적인 애플리케이션을 분산시킬 수 있습니다. 일반적인 디자인 패턴은 다음과 같습니다.

· 작업 대기열 — 동일한 양의 작업을 동시에 처리하지 않을 수 있는 분산 응용 프로그램의 구성 요소를 분리합니다.

· 버퍼 및 배치 작업 — 아키텍처에 확장 성과 안정성을 추가하고 메시지 손실이나 대기 시간 증가없이 임시 볼륨 급증을 완화합니다.

· 요청 오프로드 — 요청을 대기열에 추가하여 대화식 요청 경로에서 느린 작업을 수행합니다.

· 팬 아웃 — SNS (Simple Notification Service)와 SQS를 결합하여 동일한 메시지 사본을 여러 대기열에 동시에 보냅니다.

· 우선 순위 — 작업 우선 순위를 제공하기 위해 별도의 대기열을 사용합니다.

· 확장성 — 메시지 큐가 프로세스를 분리하므로 다른 프로세스를 추가하여 메시지 전송 또는 수신 속도를 확장합니다.

· 탄력성 — 대기열에서 메시지를 읽는 프로세스가 실패하더라도 메시지를 대기열에 계속 추가합니다. 메시지 큐가 시스템의 구성 요소를 분리하므로 시스템이 복구되면 큐를 처리 할 수 있습니다.

Amazon Simple Storage Service

Amazon S3는 내구성이 뛰어나고 안전하며 내결함성이있는 데이터 스토리지를 제공하는 객체 스토리지 서비스입니다. AWS는 가용성과 내결함성을 유지합니다. 사용한 스토리지 비용 만 지불하면됩니다. 데이터는 버킷이라는 리소스 내에 객체로 저장되며 단일 객체의 크기는 최대 5TB입니다.

뒤에서 Amazon S3는 AWS 리전의 여러 시설에 있는 여러 디바이스에 객체를 중복 저장합니다. 따라서 AWS 데이터 센터에서 장애가 발생하는 경우에도 데이터에 계속 액세스 할 수 있습니다. Amazon S3는 99.999999999 % 의 내구성을 위해 설계되었으며 전 세계 기업을 위한 수백만 개의 애플리케이션에 대한 데이터를 저장합니다.

Amazon S3는 애플리케이션에 있을 수 있는 모든 종류의 객체 데이터 스토리지 요구 사항에 이상적입니다. Amazon S3는 AWS Management Console, URL, CLI (Command Line Interface) 또는 프로그래밍 언어가 선택된 SDK를 사용하는 API를 통해 액세스 할 수 있습니다.

Amazon S3의 버전 관리 기능을 사용하면 S3에 저장된 이전 버전의 객체를 유지하고 오작동하는 응용 프로그램으로 인해 실수로 삭제되는 것을 방지 할 수 있습니다. 모든 S3 버킷에 대해 버전 관리를 활성화 할 수 있습니다. 또한 S3 Cross-Region Replication (CRR)을 사용하여 다른 리전의 객체를 복제하거나 SRR (Same-Region Replication)을 사용하여 지연 시간, 보안, 재해 복구 및 기타 사용 사례를 줄이기 위해 동일한 AWS 리전의 객체를 복제 할 수 있습니다.

고가용성 스토리지를 제공하는 것 외에도 Amazon S3는 여러 스토리지 클래스를 제공하여 스토리지 비용을 줄이면서도 고가용 성과 내구성을 제공합니다. S3 수명주기 정책을 사용하면 저렴한 스토리지로 객체를 전송할 수 있습니다. 데이터 액세스 패턴을 잘 모를 경우 액세스 패턴 변경에 따라 자동으로 데이터를 이동시키는 S3 Intelligent-Tiering을 선택할 수 있습니다.

Amazon S3를 사용하면 내결함성 (데이터 스토리지)의 중요한 측면 중 하나에 대한 책임을 AWS에 위임 할 수 있습니다.

Windows 파일 서버용 Amazon Elastic File System 및 Amazon FSx

Amazon Elastic File System 및 Windows 파일 서버용 Amazon FSx Amazon S3는 객체로 데이터에 액세스 할 수있는 애플리케이션에 이상적이며, 많은 애플리케이션은 파일로 데이터를 저장하고 액세스합니다. Amazon Elastic File System (Amazon EFS) 및 Windows File Server 용 Amazon FSx (Amazon FSx)는 애플리케이션을 위한 파일 기반 스토리지를 제공하는 완전 관리형 AWS 서비스입니다.

Amazon EFS는 Linux 기반 워크로드를 위한 간단하고 확장 가능한 탄력적 파일 시스템을 제공합니다. 파일 시스템은 필요에 따라 확장 및 축소되며 페타 바이트 용량으로 확장 할 수 있습니다.

Amazon EFS는 고가용 성과 내구성을 위해 여러 가용 영역 내에서 데이터를 저장하는 지역 서비스입니다. 여러 EC2 인스턴스에서 공유 스토리지에 액세스해야하는 애플리케이션은 Amazon EFS에 데이터를 안정적으로 안전하게 저장할 수 있습니다.

Amazon FSx는 완전히 관리되는 기본 Microsoft Windows 파일 시스템을 제공하므로 파일 스토리지가 필요한 Windows 기반 애플리케이션을 AWS로 이동할 수 있습니다. Amazon FSx를 사용하면 최대 수천 개의 애플리케이션 인스턴스에서 액세스 할 수 있는 내구성과 가용성이 높은 Windows 파일 시스템을 시작할 수 있습니다. Amazon FSx는 단일 AZ 내에서 고가용성을 제공합니다. 추가 수준의 가용성이 필요한 애플리케이션의 경우 Amazon FSx는 분산 파일 시스템 (DFS) 복제를 사용하여 다중 AZ 배포를 지원합니다.

Amazon EFS 또는 Amazon FSx를 사용하면 AWS에서 실행중인 애플리케이션에 고가용성, 내결함성 파일 스토리지를 제공 할 수 있습니다.

Amazon Relational Database Service

Amazon Relational Database Service는 클라우드에서 관계형 데이터베이스의 설정, 운영 및 확장을 안내합니다. 하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업과 같은 시간 소모적 인 관리 작업을 자동화하면서 비용 효율적이고 크기 조정이 가능한 용량을 제공합니다. 또한 응용 프로그램에 집중할 수 있으므로 필요한 빠른 성능, 고가용성, 보안 및 호환성을 제공 할 수 있습니다.

Amazon RDS는 여러 데이터베이스 인스턴스 유형에서 사용할 수 있으며 메모리, 성능 또는 I / O에 최적화되어 있습니다. Amazon Aurora, PostgreSQL, MySQL, MariaDB, Oracle Database 및 SQL Server를 포함한 6 개의 익숙한 데이터베이스 엔진 중에서 선택할 수 있습니다.

Amazon RDS에는 자동 백업, 데이터베이스 스냅 샷 및 자동 호스트 교체를 포함하여 중요한 프로덕션 데이터베이스의 안정성을 향상시키는 많은 기능이 있습니다.

· 관리 — Amazon RDS 관리 콘솔, AWS RDS CLI 또는 API 호출을 사용하여 프로젝트 개념에서 배포로 이동하여 즉시 프로덕션 관계형 데이터베이스의 기능에 액세스합니다. 데이터베이스 소프트웨어를 인프라 프로비저닝 또는 설치 및 유지 관리 할 필요가 없습니다.

· 확장성 — 종종 다운 타임없이 콘솔이나 API 호출을 사용하여 데이터베이스 컴퓨팅 및 스토리지 리소스를 확장합니다. 많은 Amazon RDS 엔진 유형을 사용하면 기본 데이터베이스 인스턴스에서 읽기 트래픽을 오프로드하기 위해 하나 이상의 읽기 전용 복제본을 시작할 수 있습니다.

· 가용성 — 다른 Amazon Web Services에서 사용하는 것과 동일한 안정성이 높은 인프라에서 실행됩니다. 가용 영역 전체의 프로덕션 워크로드에 대한 가용성 및 안정성을 향상 시키려면 Amazon RDS를 복제에 사용하십시오. 다중 AZ 배포 옵션을 사용하면 기본 데이터베이스에서 동기식으로 복제 된 보조 데이터베이스로의 고가용성 및 자동 장애 조치 기능이 내장 된 미션 크리티컬 워크로드를 실행할 수 있습니다.

· 보안 — 데이터베이스 인스턴스를 격리하고 업계 표준 암호화 IPsec VPN을 통해 기존 IT 인프라에 연결할 수 있는 Amazon VPC에서 데이터베이스 인스턴스를 실행하여 데이터베이스에 대한 네트워크 액세스를 제어합니다. 많은 Amazon RDS 엔진 유형은 미사용 암호화와 전송 중 암호화를 제공합니다.

· 비용 — 선불 또는 장기 약정없이 실제로 소비하는 자원에 대해서만 지불합니다. 온 디맨드 리소스를 사용하거나 예약 인스턴스 요금을 활용하여 비용을 추가로 절감 할 수 있습니다.

Amazon DynamoDB

Amazon DynamoDB는 모든 규모에서 한 자리 밀리 초 성능을 제공하는 키-값 및 문서 데이터베이스입니다. 인터넷 규모의 애플리케이션을위한 내장 된 보안, 백업 및 복원, 인 메모리 캐싱 기능을 갖춘 완전 관리 형, 다중 리전, 다중 마스터 데이터베이스입니다.

Amazon DynamoDB는 미션 크리티컬 워크로드를 위해 특수 제작되었습니다. DynamoDB는 기본적으로 유휴 암호화로 데이터를 보호하고 서비스 수준 계약을 통해 안정성을 보장하면서 데이터를 지속적으로 백업하여 보호합니다. PITR (Point-in-Time Recovery)은 실수로 쓰기 또는 삭제 작업으로부터 DynamoDB 테이블을 보호합니다. PITR은 DynamoDB 테이블 데이터의 지속적인 백업을 제공하며 이전 35 일 동안 최대 1 초까지 해당 테이블을 복원 할 수 있습니다.

Amazon DynamoDB에는 프로비저닝, 패치 또는 관리 할 서버와 설치, 유지 관리 또는 운영 할 소프트웨어가 없습니다. DynamoDB는 자동으로 테이블을 확장하여 용량을 조정하고 관리가 필요 없는 성능을 유지합니다. 가용성 및 내결함성이 내장되어 있어 이러한 기능을 위해 애플리케이션을 설계 할 필요가 없습니다.

고가용성을 위해 서버리스 아키텍처 사용

서버리스란 무엇입니까?

서버리스는 클라우드의 기본 아키텍처로, 더 많은 운영 책임을 AWS로 전환하여 민첩성과 혁신을 향상시킵니다. 서버리스를 사용하면 서버에 대한 생각없이 응용 프로그램 및 서비스를 구축하고 실행할 수 있습니다. 서버 또는 클러스터 프로비저닝, 패치, 운영 체제 유지 관리 및 용량 프로비저닝과 같은 인프라 관리 작업이 필요 없습니다. 서버리스는 기본 제공 가용성 및 내결함성을 제공합니다. 응용 프로그램을 실행하는 서비스가 기본적으로 이를 제공하므로 이러한 기능을 위해 설계 할 필요가 없습니다.

많은 서버리스 설계의 중심은 AWS Lambda입니다. AWS Lambda는 서버를 프로비저닝하거나 관리 할 필요없이 단일 리전의 여러 가용 영역에 분산 된 고가용성, 내결함성 인프라에서 코드를 자동으로 실행합니다. Lambda를 사용하면 사실상 모든 유형의 응용 프로그램 또는 백엔드 서비스에 대한 코드를 관리하지 않고 실행할 수 있습니다. 코드를 업로드하면 Lambda가 코드를 실행하고 고가용성으로 확장합니다. 다른 AWS 서비스에서 자동으로 트리거하거나 모든 웹 또는 모바일 앱에서 직접 호출하도록 코드를 설정할 수 있습니다. AWS Lambda는 각 트리거에 응답하여 코드를 실행하여 애플리케이션을 자동으로 확장합니다. 코드는 병렬로 실행되며 각 트리거를 개별적으로 처리하여 워크로드의 크기에 따라 정확하게 확장됩니다.

AWS Lambda 외에도 다른 AWS 서버리스 기술에는 다음이 포함됩니다.

· AWS Fargate — 컨테이너 용 서버리스 컴퓨팅 엔진

· Amazon DynamoDB — 빠르고 유연한 NoSQL 데이터베이스

· Amazon Aurora 서버리스 — MySQL 호환 관계형 데이터베이스

· Amazon API Gateway — API를 생성, 게시, 모니터링 및 보안하는 서비스

· Amazon S3 — 안전하고 내구성이 뛰어나고 확장 성이 뛰어난 객체 스토리지

· Amazon Elastic File System — 간단하고 확장 가능하며 탄력적인 파일 스토리지

· Amazon SNS — 완전 관리 형 펍 / 서브 메시징 서비스

· Amazon SQS — 완전 관리 형 메시지 대기열 서비스

지속적인 통합 및 지속적인 배포 / 배달을 사용하여 응용 프로그램 변경 사항 롤아웃

지속적인 통합이란 무엇입니까?

CI (Continuous Integration)는 개발자가 코드 변경 사항을 중앙 저장소에 정기적으로 병합 한 후 자동화 된 빌드 및 테스트가 실행되는 소프트웨어 개발 사례입니다.

지속적인 배포 / 배달이란 무엇입니까?

CD (Continuous Deployment / Delivery)는 코드 변경이 자동으로 빌드, 테스트 및 프로덕션 릴리스 준비되는 소프트웨어 개발 사례입니다. 빌드 단계가 완료된 후 모든 코드 변경 사항을 테스트 환경, 프로덕션 환경 또는 둘 다에 배포하여 지속적인 통합을 확장합니다. 워크 플로 프로세스를 통해 지속적인 제공을 완전히 자동화하거나 중요한 단계에서 수동 단계를 통해 부분적으로 자동화 할 수 있습니다.

이것이 어떻게 도움이 됩니까?

지속적인 통합 및 지속적인 배포 / 배달 도구는 애플리케이션 변경을 롤아웃하는 인적 요소를 제거하고 가능한 한 자동화를 추가합니다. CI / CD 도구 이전에는 수동 개입이나 시작 프로세스가 필요한 스크립트가 사용되었습니다. 주말 동안 비즈니스에 대한 잠재적 중단을 최소화하기 위해 많은 배포가 발생했으며 문제가 발생한 경우 신속하게 롤백 할 수 있습니다. 배포 단계는 일반적으로 Runbook에 설명되어 있습니다.

AWS CodeBuild, AWS CodePipeline 및 AWS CodeDeploy는 DevOps 팀이 환경에서 애플리케이션 또는 애플리케이션 변경 사항을 배포하는 데 사용하는 CI / CD 서비스의 일부입니다. 예를 들어 단일 파이프 라인은 한 지역에서 애플리케이션 변경을 롤아웃 할 수 있으며, 성공하면 동일한 파이프 라인이 다른 지역에서 변경 사항을 롤아웃 할 수 있습니다.

간소화 된 CI / CD 파이프 라인을 통해 개발자는 최종 사용자에게 투명한 애플리케이션 변경 사항을 배포 할 수 있습니다. 이러한 파이프 라인을 활용하여 다중 지역 배포를 수행하거나 버그 수정을 신속하게 배포 할 수 있습니다. 한 환경에서 오류가 발생하면 사용자를 다른 환경 (또는 지역)으로 리디렉션하고 업데이트를 결함이 있는 환경으로 롤아웃 할 수 있습니다. 오류가 해결되면 사용자를 원래 환경으로 다시 리디렉션 할 수 있습니다.

Utilize Immutable Environment Updates

불변 환경은 배포 된 리소스 (즉, 서버)가 결코 수정되지 않는 일종의 인프라입니다. 일반적으로 이러한 서버는 공통 이미지 (예 : Amazon Machine Image)로 구축됩니다. 이러한 유형의 환경의 이점은 안정성, 일관성 및 예측 가능한 환경이 향상된다는 것입니다. AWS에서는 AWS CloudFormation 또는 CDK (AWS Cloud Development Kit)를 사용하여 인프라를 생성하여이를 달성 할 수 있습니다.

AWS Elastic Beanstalk 활용

AWS Elastic Beanstalk를 사용하면 해당 애플리케이션을 실행하는 인프라에 대해 알 필요없이 AWS 클라우드에서 애플리케이션을 신속하게 배포 및 관리 할 수 있습니다. Elastic Beanstalk는 선택 또는 제어를 제한하지 않고 관리 복잡성을 줄입니다. 애플리케이션을 업로드 한 후 Elastic Beanstalk는 용량 프로비저닝,로드 밸런싱, 스케일링 및 애플리케이션 상태 모니터링에 대한 세부 정보를 자동으로 처리합니다.

Amazon CloudWatch

Amazon CloudWatch는 AWS 리소스 및 그 위에서 실행되는 애플리케이션에 대한 완전 관리 형 모니터링 서비스입니다. Amazon CloudWatch를 사용하여 자체 인프라와 별개이며 독립적인 내구성 있는 플랫폼에서 지표를 수집하고 저장할 수 있습니다. 이러한 메트릭을 사용하여 성능 및 응답 시간을 측정하고 응용 프로그램의 사용자 지정 메트릭을 캡처 할 수 있습니다. Auto Scaling 트리거, 알림, 팬 아웃, 자동화 된 작업 트리거 등과 같은 추가 작업을 수행하는 데 사용할 수 있는 이러한 메트릭입니다.

사용자 지정 지표를 캡처하려면 간단한 API 요청을 통해 고유 한 지표를 CloudWatch에 게시 할 수 있습니다.

결론

Amazon Web Services는 클라우드에서 안정성, 내결함성 및 고가용성 시스템을 구축하기위한 서비스 및 인프라를 제공합니다. Amazon EC2 및 Amazon EBS와 같은 기본 인프라를 제공하는 서비스는 가용 영역, 탄력적 IP 주소 및 스냅 샷과 같은 특정 기능을 제공합니다. 특히 Amazon EBS는 EC2에서 실행되는 애플리케이션에 내구성 있는 블록 스토리지를 제공하고 Auto Scaling 그룹은 Amazon EC2 플릿이 필요한 용량으로 작동하고 장애를 자동으로 감지하고 필요에 따라 인스턴스를 교체하도록 합니다. Amazon S3와 같은 높은 수준의 빌딩 블록은 11 9s의 내구성으로 확장 성이 뛰어나고 전 세계적으로 액세스 가능한 객체 스토리지를 제공합니다. AWS에서 실행되는 애플리케이션을위한 내구성있는 내결함성 파일 스토리지를 위해 Amazon EFS 및 Windows 용 Amazon FSx를 사용할 수 있습니다. 사용 가능한 광범위한 빌딩 블록은 필요한 안정적이고 고가용성 환경을 설정하고 소비하는 서비스에 대해서만 비용을 지불 할 수 있는 유연성과 기능을 제공합니다.

[ 고지 사항 (Disclaimer) ]

본 컨텐츠는 고객의 편의를 위하여 AWS 서비스 설명을 위해 제작, 제공된 것입니다. 만약 AWS 사이트와 컨텐츠 상에서 차이나 불일치가 있을 경우 AWS 사이트 (AWS.amazon.com)가 우선합니다. 또한 AWS 사이트 상에서 한글 번역문과 영어 원문에 차이나 불일치가 있을 경우(번역의 지체로 인한 경우 등 포함), 영어 원문이 우선합니다.

본 문서는 Fault-Tolerant Components on AWS(2019년, 영문) 내용에 기반하여 작성 되었습니다.

이 문서는 정보 제공의 목적으로만 제공됩니다. 본 문서의 발행일 당시 AWS의 현재 제품 오퍼링 및 실행방법 등을 설명하며, 예고 없이 변경될 수 있습니다. 고객은 본 문서에 포함된 정보나 AWS 제품 또는 서비스의 사용을 독립적으로 평가할 책임이 있으며, 각 정보 및 제품은 명시적이든 묵시적이든 어떠한 종류의 보증 없이 “있는 그대로” 제공됩니다. 본 문서는 AWS, 그 자회사, 공급업체 또는 라이선스 제공자로부터 어떠한 보증, 표현, 계약 약속, 조건 또는 보장을 구성하지 않습니다. 고객에 대한 AWS의 책임 및 의무는 AWS 계약에 의해 관리되며 본 문서는 AWS와 고객 사이의 어떠한 계약에도 속하지 않으며 계약을 변경하지도 않습니다.

© 2020, Amazon Web Services, Inc. or its affiliates. All rights reserved.

--

--

빌드업웍스
빌드업웍스

Written by 빌드업웍스

클라우드 교육, 구축, 운영, 관리, 컨설팅 및 교육 리소스 디지털 퍼블리싱 : AWS 파트너, 유데미 파트너| buw.co.kr | admin@buw.co.kr | 053–954–3711

No responses yet