실습 개요
이 실습에서는 Amazon Simple Storage Service(Amazon S3)를 스토리지로 사용하고, Amazon DynamoDB를 데이터베이스로 사용하고, Amazon Elastic Compute Cloud (Amazon EC2)를 사용하여 웹 애플리케이션을 호스트하는 사진 공유 웹 사이트를 배포하는 방법을 설명합니다.
이 실습에서 시스템의 핵심 아키텍처를 생성하여 콘텐츠 검색 및 업로드 같은 기본 기능을 제공합니다. 이 실습의 목적상 미디어 콘텐츠가 이미지로 제한되지만 여기서 설명하는 개념은 문서(PDF, RTF, 프레젠테이션 등), 음악, 비디오 등 다른 미디어 형식에도 적용됩니다. 또한 시스템은 사용자가 이미지를 검색 및 저장할 수 있는 웹 인터페이스를 제공합니다.
목표
이 실습을 마치면 다음을 수행할 수 있습니다.
- 미디어 파일을 저장할 새 Amazon S3 버킷을 생성
- 미디어 파일 메타데이터를 저장할 DynamoDB 테이블을 생성
- 웹 서버를 실행할 새 EC2 인스턴스를 시작
- 배포 테스트
실습 사전 조건
이 실습을 성공적으로 마치려면 AWS 관리 콘솔의 기본적인 사용 방법과 텍스트 편집기를 사용하여 스크립트를 편집하는 데 익숙해야 합니다.
소요 시간
본 실습은 완료하는 데 60분 정도가 소요됩니다.
아이콘 설명
이 실습에서는 다양한 유형의 지침 및 참고 사항에 대한 주의를 환기하기 위해 다양한 아이콘이 사용됩니다. 각 아이콘의 용도는 다음과 같습니다.
- 참고: 힌트, 팁 또는 중요한 가이드입니다.
솔루션 개요
미디어 스토리지
이미지는 Amazon Elastic Block Store 볼륨에 저장할 수 있지만, 용량을 미리 프로비저닝해야 하고 볼륨을 추가하여 이 스토리지 계층의 확장을 관리해야 합니다. 또한 HTTP를 통해 콘텐츠를 제공하려면 이러한 볼륨을 EC2 인스턴스에 연결해야 합니다. 그러면 데이터가 다른 인스턴스에 복제되고 해당 인스턴스로부터 제공되지 않을 경우 시스템에 단일 실패 지점이 형성됩니다.
이보다 나은 방법은 Amazon S3를 미디어 파일용 스토리지 리포지토리로 사용하는 것입니다. Amazon S3는 높은 데이터 내구성과 HTTP를 통해 콘텐츠를 제공할 수 있는 기능을 제공합니다. 단일 Amazon S3 버킷에 저장할 수 있는 개체 수는 제한이 없으며 버킷을 한 개 사용하든 여러 개 사용하든 성능 편차가 없습니다. 모든 객체를 하나의 버킷에 저장할 수도 있고 여러 버킷에 저장할 수 있습니다.
이 실습에서는 다음과 같은 솔루션을 구축합니다.
사용자가 이미지를 업로드하면 웹 서버가 이미지를 수신하고 썸네일을 생성합니다. 그런 다음 이미지 및 썸네일을 S3 버킷에 업로드하고 이미지 메타데이터를 DynamoDB 테이블에 삽입합니다.
Amazon S3 및 DynamoDB는 모두 확장성 및 내결함성이 있지만 단일 EC2 인스턴스에서 실행되는 웹 서버는 분명히 단일 실패 지점(웹 애플리케이션에 장애가 발생할 경우 시스템을 액세스할 수 없고 복구할 수 없음)과 병목 현상(중요한 요청이 들어올 때 시스템을 사용할 수 없음)을 초래합니다.
다음은 실습 시나리오에서 사용되는 각 서비스에 대한 간략한 소개입니다.
참고: 이러한 AWS 서비스에 대해 잘 알고 있는 경우 서비스 소개를 건너뛰고 실습 시작 섹션으로 바로 이동할 수 있습니다.
Amazon EC2
Amazon Elastic Compute Cloud(Amazon EC2)는 클라우드에서 크기 조정 가능한 컴퓨팅 용량을 제공하는 웹 서비스입니다. 개발자가 좀 더 쉽게 웹 규모 컴퓨팅 작업을 할 수 있도록 설계되었습니다. Amazon EC2의 간단한 웹 서비스 인터페이스를 통해 간편하게 필요한 컴퓨팅 파워를 확보하고 구성할 수 있습니다. 컴퓨팅 리소스에 대한 포괄적인 제어권을 제공하며, Amazon의 검증된 컴퓨팅 인프라에서 실행할 수 있습니다. Amazon EC2에서는 몇 분이면 새로운 서버 인스턴스를 확보하고 시작할 수 있으므로, 컴퓨팅 요구 사항의 변경에 따라 용량을 신속하게 확장 및 축소할 수 있습니다. 또한 실제 사용한 만큼만 요금을 지불하면 되므로, 컴퓨팅 비용이 절약됩니다.
Amazon EC2를 사용하면 몇 시간 또는 며칠이 아닌 몇 분 내에 용량을 늘리거나 줄일 수 있습니다. 한 개, 수백 개 또는 수천 개의 서버 인스턴스를 동시에 지정할 수 있습니다. 물론 이 모든 과정이 웹 서비스 API로 제어되므로 애플리케이션이 필요에 따라 자동으로 확장 및 축소할 수 있습니다.
사용자가 인스턴스를 완전히 제어할 수 있는 권한을 보유합니다. 각 인스턴스에 대한 루트 액세스가 허용되며 어떤 머신을 사용하든 인스턴스와 상호 작용할 수 있습니다. 부팅 파티션에 데이터를 보관한 채로 인스턴스를 중지한 다음 나중에 웹 서비스 API를 사용하여 동일한 인스턴스를 다시 시작할 수 있습니다. 인스턴스는 웹 서비스 API를 사용하여 원격으로 재부팅할 수 있습니다. 또한 인스턴스의 콘솔 출력에 액세스할 수도 있습니다.
여러 인스턴스 유형, 운영 체제 및 소프트웨어 패키지를 선택할 수 있습니다. Amazon EC2를 사용하면 선택한 운영 체제 및 애플리케이션에 가장 적합한 메모리, CPU, 인스턴스 스토리지 및 부팅 파티션 크기의 구성을 선택할 수 있습니다. 예를 들어 다양한 Linux 배포와 Microsoft Windows Server를 운영 체제로 선택할 수 있습니다.
Amazon EC2에 대한 자세한 내용은 다음을 참조하십시오. https://aws.amazon.com/ec2/
DynamoDB
Amazon DynamoDB는 빠른 실행 속도를 자랑하는 완전관리형 NoSQL 데이터베이스 서비스로, 간단하고 비용 효율적인 방법으로 원하는 양의 데이터를 저장 및 검색하고 원하는 수준의 요청 트래픽을 처리합니다. 이 서비스는 처리량과 한 자릿수 밀리초 수준의 대기 시간을 보장하기 때문에 게임, 광고 기술, 모바일 및 기타 다양한 애플리케이션에 이상적입니다.
DynamoDB는 API 및 사용이 쉬운 관리 콘솔을 통해 처리량과 스토리지 크기를 원활하게 조정하여 사용자의 요구에 맞게 쉽게 확장하거나 축소할 수 있습니다. 많은 고객이 한 번의 버튼 클릭으로 단 몇 분 만에 DynamoDB 배포를 생성하여 매년 엄청난 양의 데이터베이스 요청을 지원할 수 있습니다.
DynamoDB 테이블은 스키마가 고정되어 있지 않으므로 항목마다 속성 수가 서로 다를 수 있습니다. 여러 데이터 유형으로 풍부한 데이터 모델을 제공합니다. 보조 인덱스는 성능에 영향을 주지 않으면서 쿼리 수행 시 유연성을 더해 줍니다.
SSD 스토리지 및 자동 3방향 복제 기능으로 성능, 안정성 및 보안성이 기본적으로 보장됩니다. Amazon DynamoDB는 입증된 암호화 방법을 사용하여 안전하게 사용자를 인증하고 데이터에 불법으로 액세스하는 것을 차단합니다.
Amazon DynamoDB에 대한 자세한 내용은 다음을 참조하십시오. https://aws.amazon.com/dynamodb/
Amazon S3
Amazon S3는 인터넷용 스토리지입니다. 개발자가 좀 더 쉽게 웹 규모 컴퓨팅 작업을 할 수 있도록 설계되었습니다.
Amazon S3는 언제든지 웹상 어디에서나 용량과 관계없이 데이터를 저장하고 검색하는 데 사용할 수 있는 간단한 웹 서비스 인터페이스를 제공합니다. 따라서 개발자들은 Amazon에서 자체 글로벌 웹 사이트 네트워크를 운영할 때 사용하는 것과 동일한 수준의 높은 확장성과 안정성을 제공하면서도 안전하고 빠르며 비용 효율적인 인프라를 활용할 수 있습니다. 이 서비스의 목적은 규모의 이점을 극대화하고 개발자들에게 이러한 이점을 제공하는 것입니다.
Amazon S3는 인터넷 기반 스토리지는 품질이 기본이라는 생각에서 출발했습니다. Amazon S3 덕분에 개발자들은 데이터를 어떻게 저장할지, 데이터 저장 방법이 안전성과 보안성을 모두 갖추고 있는지, 사용할 수 있는 스토리지가 충분한지 여부를 걱정할 필요가 없게 되었습니다. 또한 스토리지 서버를 지속적으로 유지 관리 및 확장하는 비용뿐 아니라 자체 스토리지 솔루션을 구축하는 초기 비용을 부담하지 않아도 됩니다. Amazon S3의 기능은 단순하면서도 강력합니다. 원하는 양의 데이터를 저렴하고 안전하게 저장하는 동시에 필요할 때 언제든지 데이터를 사용할 수 있습니다. Amazon S3를 사용하면 개발자들이 데이터 저장 방법을 고심하는 대신 데이터를 이용한 혁신에 집중할 수 있게 됩니다.
Amazon S3에 대한 자세한 내용은 http://aws.amazon.com/s3/를 참조하십시오.