AWS에서 내결함성 애플리케이션 구축 1/2

빌드업웍스
11 min readFeb 17, 2020

--

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

[ 고지 사항 (Disclaimer) ]

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

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

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

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

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

2부 링크 : AWS에서 내결함성 애플리케이션 구축 2/2

소개

소프트웨어는 세계 거의 모든 지역에서 일상 생활의 중요한 부분이 되었습니다. 우리가 어디에 있든 간에, 우리는 우리의 휴대폰을 사용하든, 자동화된 은행 기계에서 돈을 인출하든, 아니면 신호등에서 멈춰서든 상관없이 소프트웨어와 상호작용을 합니다.

소프트웨어는 우리의 일상 생활에서 매우 중요한 부분이 되었기 때문에, 이 소프트웨어가 계속 작동하고 사용 가능하도록 하기 위해 많은 작업이 이루어져야 합니다.

일반적으로 말해서, 이 연구 영역을 내결함성이라고 하는데, 시스템 구축에 사용된 구성 요소 중 일부가 고장난 경우에도 시스템이 계속 작동하는 기능입니다.

필수 시스템을 항상 사용할 수 있어야 하는 것은 사실이지만, 우리는 또한 훨씬 더 광범위한 소프트웨어를 항상 사용할 수 있기를 기대합니다. 예를 들어 전자상거래 사이트를 방문하여 제품을 구입하고자 할 수 있습니다. 월요일 아침 9시든, 공휴일 오전 3시든, 사이트를 이용할 수 있고 구매를 받아들일 준비가 되어 있을 것으로 기대합니다. 이러한 기대치를 충족하지 못하는 비용은 많은 기업에게 치명적일 수 있습니다. 매우 보수적인 가정에도 불구하고, 바쁜 전자 상거래 사이트는 이용할 수 없는 매 순간마다 수천 달러의 손실을 볼 수 있다고 추정되고 있습니다. 이는 기업과 조직이 결함에서 살아남을 수 있는 소프트웨어 시스템을 개발하려고 노력하는 이유를 보여주는 하나의 예에 불과합니다.

AWS(Amazon Web Services)는 장애 발생 방지 소프트웨어 시스템을 구축하는 데 이상적인 플랫폼을 제공합니다. 그러나 이 특성은 당사의 플랫폼에만 있는 것은 아닙니다. 충분한 리소스와 시간이 주어지면 거의 모든 플랫폼에 무장애 소프트웨어 시스템을 구축할 수 있습니다. AWS 플랫폼은 최소한의 인적 교류와 선불 금융 투자로 작동하는 내결함성 시스템을 구축할 수 있기 때문에 독특합니다.

고장이 그렇게 흥미로워서는 안 됩니다.

사내 데이터 센터 환경에서 서버가 다운되거나 하드 디스크 공간이 부족해지면 관리자에게 즉시 알립니다. 이러한 이벤트는 개입이 아니더라도 주의를 요하는 주목할 만한 이벤트이기 때문입니다. 기존의 사내 데이터 센터 환경에서 이상적인 상태는 문제를 해결하기 위해 즉시 조치를 취할 수 있는 관리자 직원에게 장애 통지를 안정적으로 전달하는 것입니다. 많은 조직에서 이러한 IT 열정에 도달할 수 있지만, 이를 위해서는 일반적으로 광범위한 경험, 초기 재무 투자 및 상당한 인력이 필요합니다.

Amazon Web Services에서 제공하는 플랫폼을 사용하는 경우에는 해당되지 않습니다. 이상적으로, 우리 플랫폼에 구축 된 애플리케이션의 장애는 시스템 자체에 의해 자동으로 처리 될 수 있으며 결과적으로 상당히 흥미롭지 않은 이벤트입니다.

Amazon Web Services는 컴퓨팅, 스토리지 및 통신 등 방대한 양의 IT 인프라에 액세스할 수 있도록 지원하므로 거의 모든 종류의 장애를 고려하여 자동으로(또는 거의 자동으로) 할당할 수 있습니다. 실제로 사용하는 리소스에 대해서만 요금이 부과되므로 미리 자금을 투자할 필요가 없습니다.

Amazon Machine Images

Amazon Elastic Compute Cloud(Amazon EC2)는 소프트웨어 시스템을 구축하고 호스팅하는 데 사용하는 컴퓨팅 리소스(말 그대로 서버 인스턴스)를 제공하는 Amazon Web Services 내의 웹 서비스입니다. Amazon EC2는 애플리케이션 개발을 위한 Amazon Web Services의 자연스러운 진입 지점입니다. 여러 EC2 인스턴스를 사용하여 매우 안정적이고 내결함성이 높은 시스템을 구축할 수 있습니다. 이 도구와 자동 확장 및 탄력성 로드 밸런싱과 같은 보조 서비스를 사용합니다.

표면적으로는 Amazon EC2 인스턴스가 기존 하드웨어 서버와 매우 유사합니다. Amazon EC2 인스턴스는 Linux, Windows 또는 OpenSolaris와 같은 익숙한 운영 체제를 사용합니다. 따라서 이러한 운영 체제에서 실행할 수 있는 거의 모든 종류의 소프트웨어를 수용할 수 있습니다. Amazon EC2 인스턴스에는 IP 주소가 있으므로 원격 시스템과 상호 작용하는 일반적인 방법(예: SSH 또는 RDP)을 사용할 수 있습니다.

서비스 인스턴스를 정의하는 데 사용하는 템플릿을 AMI(Amazon Machine Image)라고 합니다. 이 템플릿은 기본적으로 소프트웨어 구성(예: 운영 체제, 애플리케이션 서버 및 애플리케이션)을 포함하며 인스턴스 유형에 적용됩니다.

Amazon EC2의 인스턴스 유형은 기본적으로 하드웨어 원형입니다. 응용 프로그램에 필요한 메모리 양(예: RAM) 및 계산 전력(예: CPU 수)과 일치하는 인스턴스 유형을 선택합니다.

단일 AMI를 사용하여 서로 다른 인스턴스 유형의 서버 리소스를 생성할 수 있습니다. 이 관계는 아래에 설명되어 있습니다.

그림 1 — Amazon Machine Image

Amazon은 일반적인 소프트웨어 구성을 포함하는 많은 AMI를 게시합니다. 또한, AWS 개발자 커뮤니티의 다양한 회원들도 자신만의 맞춤형 AMI를 출판했습니다. 이러한 모든 AMI는 AWS 웹 사이트의 Amazon 시스템 이미지 리소스 페이지에서 찾을 수 있습니다.

그러나 AWS에서 내결함성 애플리케이션을 구축하기 위한 첫 번째 단계는 사용자 고유의 AMI 라이브러리를 생성하는 것입니다. 응용 프로그램은 사용자가 만든 하나 이상의 AMI로 구성되어야 합니다. 그러면 애플리케이션을 시작하는 것은 AMI를 시작하는 것입니다.

예를 들어 응용 프로그램이 웹 사이트 또는 웹 서비스인 경우 AMI는 웹 서버(예: Apache 또는 Microsoft Internet Information Server), 관련 정적 콘텐츠 및 모든 동적 페이지에 대한 코드를 사용하여 구성해야 합니다. 또는 인스턴스가 시작되면 즉시 부트스트랩 스크립트를 실행하여 필요한 모든 소프트웨어 구성 요소와 컨텐츠를 설치하도록 AMI를 구성할 수 있습니다. 따라서 AMI를 실행한 후 웹 서버가 시작되고 응용 프로그램이 요청을 수락하기 시작할 수 있습니다.

AMI를 생성한 후에는 장애가 발생한 인스턴스를 교체하는 것이 매우 간단합니다. 템플릿과 동일한 AMI를 사용하는 대체 인스턴스를 문자 그대로 시작할 수 있습니다.

이 작업은 API 호출, 스크립트 가능 명령줄 도구를 통해 또는 아래 그림과 같이 AWS 관리 콘솔을 통해 수행할 수 있습니다. 이 문서 뒷부분에서는 실패하거나 성능 저하된 인스턴스를 자동으로 새 인스턴스로 대체할 수 있는 자동 확장 서비스를 소개합니다.

그림 2-Amazon EC2 인스턴스 시작

이것은 정말로 내결함성을 향한 첫 번째 단계입니다. 이 시점에서 장애로부터 신속하게 복구할 수 있습니다. 인스턴스가 실패하거나 원하는 대로 동작하지 않는 경우 동일한 템플릿을 기반으로 다른 인스턴스를 실행할 수 있습니다. 다운타임을 최소화하기 위해 언제든지 예비 인스턴스를 실행 상태로 유지할 수 있습니다. 장애가 발생한 경우 이를 인수할 수 있습니다. 이 작업은 탄력적인 IP 주소를 사용하여 효율적으로 수행할 수 있습니다. 탄력적인 IP 주소를 새 인스턴스에 다시 연결하여 대체 인스턴스 또는 예비 실행 인스턴스로 쉽게 페일오버할 수 있습니다. 탄력적인 IP 주소는 문서 뒷부분에 자세히 설명되어 있습니다.

사용자가 정의한 AMI를 기반으로 교체 인스턴스를 신속하게 시작할 수 있는 것은 내결함성을 위한 중요한 첫 번째 단계입니다. 다음 단계는 이러한 서버 인스턴스가 액세스할 수 있는 영구 데이터를 저장하는 것입니다.

Elastic Block Store

Amazon EBS(Amazon Elastic Block Store)는 Amazon EC2 인스턴스와 함께 사용할 블록 레벨 스토리지 볼륨을 제공합니다. Amazon EBS 볼륨은 인스턴스의 수명으로부터 독립적으로 지속되는 오프인스턴스 스토리지입니다.

Amazon EBS 볼륨은 기본적으로 실행 중인 Amazon EC2 인스턴스에 연결할 수 있는 하드 디스크입니다. Amazon EBS는 특히 데이터베이스, 파일 시스템 또는 원시 블록 레벨 스토리지에 대한 액세스가 필요한 애플리케이션에 적합합니다. EBS 볼륨은 데이터를 중복 저장하여 일반적인 하드 드라이브보다 내구성이 높습니다. EBS 볼륨의 연간 고장률(AFR)은 0.1%와 0.5%로 일반 하드 드라이브의 4%와 비교됩니다.

Amazon EBS와 Amazon EC2는 종종 AWS 플랫폼에서 결함성 애플리케이션을 구축할 때 서로 함께 사용됩니다. 유지되어야 하는 모든 데이터는 각 Amazon EC2 인스턴스와 관련된 소위 “임페멀 스토리지”가 아니라 Amazon EBS 볼륨에 저장되어야 합니다. Amazon EC2 인스턴스가 실패하여 교체해야 하는 경우 Amazon EBS 볼륨을 새로운 Amazon EC2 인스턴스에 간단히 연결할 수 있습니다. 이 새 인스턴스는 기본적으로 원본의 복제본이기 때문에 데이터나 기능이 손실되지 않아야 합니다.

Amazon EBS 볼륨은 매우 신뢰성이 높지만, 장애 가능성을 더욱 완화하기 위해 스냅샷이라는 기능을 사용하여 이러한 볼륨의 백업을 생성할 수 있습니다. 강력한 백업 전략에는 간격(일반적으로 일일 수도 있지만 특정 애플리케이션의 경우 더 자주), 보존 기간(애플리케이션 및 롤백에 대한 비즈니스 요구 사항에 따라 달라짐) 및 복구 계획이 포함됩니다. 스냅샷은 Amazon S3에서 높은 내구성을 위해 저장됩니다.

스냅샷을 사용하여 새 Amazon EBS 볼륨을 생성할 수 있으며, 이 볼륨은 스냅샷을 만들 당시의 원래 볼륨의 정확한 복제본입니다. 백업은 애플리케이션의 디스크 상태를 나타내기 때문에 스냅샷을 시작하기 전에 메모리 내 데이터를 디스크에 플러시해야 합니다.

이러한 Amazon EBS 작업은 API를 통해 또는 AWS Management Console에서 아래 그림과 같이 수행할 수 있습니다.

그림 3 — Amazon EBS

Elastic IP Addresses

Elastic IP 주소는 특정 EC2 영역 내의 모든 EC2 인스턴스에 매핑(라우팅)할 수 있는 공용 IP 주소입니다. 주소는 특정 인스턴스나 인스턴스의 수명이 아닌 AWS 계정과 연결되며 내결함성 응용 프로그램을 구성하는 데 도움이 되도록 설계되었습니다. 장애가 발생한 인스턴스에서 탄력적인 IP 주소를 분리한 다음 매우 짧은 시간 내에 대체 인스턴스에 매핑할 수 있습니다. Amazon EBS 볼륨(및 그 밖의 모든 EC2 리소스에 대해)과 마찬가지로 탄력적인 IP 주소에 대한 모든 작업은 API를 통해 프로그래밍 방식으로 또는 AWS Management Console에서 수동으로 수행할 수 있습니다.

그림 4 — Elastic IP addresses

AWS는 IT 인프라 비용을 절감하고 기업의 핵심가치에 더욱 집중할 수 있도록 합니다.

AWS에 대한 자세한 문의사항은 여기를 눌러 주세요.

빌드업웍스는 AWS 컨설팅 파트너로 고객 비즈니스를 최우선으로 하며 고객의 클라우드의 성공적인 시작과 운영을 지원합니다.

http://buw.co.kr

--

--

빌드업웍스
빌드업웍스

Written by 빌드업웍스

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

No responses yet