 |
|
난이도 : 초급 Prabhakar Chaganti, CTO, Ylastic, LLC
원문 게재일 : 2008 년 7 월 29 일 번역 게재일 : 2009 년 3 월 10 일 기본적인 Amazon SDB(SimpleDB) 개념에 대해 알아보고 SDB와 상호 작용하기
위한 오픈 소스 Python 라이브러리인 boto에서 제공하는 일부 함수를 살펴보십시오. 이 "Amazon
Web Services를 사용한 클라우드 컴퓨팅" 시리즈에서는 Amazon Web Services를 사용한 클라우드
컴퓨팅에 대해 설명합니다. 신뢰할 수 있는 확장 가능한 애플리케이션을 만들고 빌드할 수 있는
Amazon Web Services의 뛰어난 기능을 살펴보십시오. 이 첫 번째 기사에서는 이 가상 인프라의
빌딩 블록 기능에 대해 설명합니다. Amazon Web Services를 사용하여 웹 스케일 시스템을 구축하는
방법을 살펴보십시오.
클라우드 컴퓨팅이란?
클라우드 컴퓨팅은 간단히 말해서 외부 환경에서 서비스로 제공되는 확장
가능한 컴퓨팅 리소스를 사용량에 따라 요금을 지불하는 방식으로 사용하는 것이라고 정의할 수
있다. 필요한 리소스만 사용한 후 사용한 리소스에 대해서만 비용을 지불하고 인터넷을 통해 시간과
장소에 제약을 받지 않고 "클라우드"에 있는 모든 리소스에 액세스할 수 있다. 그러면서도 화면
뒤의 클라우드에 있는 리소스의 유지 관리에 신경을 쓰지 않아도 된다.
 | | 기술 아키텍처 다이어그램에서 인터넷이나 IP 가용성을 클라우드(구름)로 묘사하는
데서 유래된 클라우드 컴퓨팅은 2007년부터 수평적 확장 문제에 대한 솔루션으로 알려지면서 주목을 받았다.
|
|
클라우드는 애플리케이션의 요구에 대한 높은 가용성과 빠른 응답성을 지원한다. 클라우드 컴퓨팅은 유틸리티
컴퓨팅 또는 그리드 컴퓨팅이라고도 한다.
클라우드 컴퓨팅은 확장 가능한 애플리케이션을 만들고 제공하는 방법에 있어서 패러다임의
변화를 가져왔다. 과거에는 기업에서 소중한 시간과 리소스를 투자하여 인프라를 구축하였으며,
이 인프라가 바로 기업 경쟁력의 밑바탕이 되었다. 이러한 방식은 "만들어라. 그러면 수익이
발생한다"라는 사고 방식에 기반을 두고 있었다. 이 접근 방식의 특징은 다음과 같다.
- 사용되지 않는 많은 양의 컴퓨팅 자원이 대규모 데이터 센터의
많은 공간을 차지한 채로 남아 있다.
- 서버를 관리할 인력이 필요하다.
- 에너지 비용이 든다.
추가 컴퓨팅 주기에 비용을 지불하려는 회사나 사용자가 나타나지 않는 한 사용되지 않는
컴퓨팅 리소스는 결국 폐기되고 만다.
클라우드 컴퓨팅에서는 잉여 컴퓨팅 성능을 고객에게 판매하여 수익을 올릴
수 있다. 이처럼 컴퓨팅 및 IT 인프라를 유틸리티로 전환하는 발상의 전환은 모두에게 주어지는
공정한 기회이다. 클라우드 컴퓨팅은 컴퓨팅 리소스보다는 아이디어에 바탕을 둔 경쟁력을 제공한다.
애플리케이션 및 IT 시스템에 필요한 리소스는 본질적으로 스토리지, 컴퓨팅 리소스, 메시징 시스템
및 데이터베이스에 대한 수요 증가를 충족하기 위해 상품화된다. 그리고 고객은 가장 좋은 가격과
서비스를 제공하는 업체에서 이 인프라를 임대할 수 있다. 단순하다. 그렇지 않은가? 이 아이디어는
완전히 새로운 것은 아니지만 단순하면서도 혁신적인 아이디어다. 지금은 Amazon에서 도입한 획기적인
클라우드 컴퓨팅 환경으로 인해 최신 기술 트렌드를 이끌고 있다.
Amazon Web Services
Amazon Web Services는 바로 사용할 수 있는 Amazon의 컴퓨팅 인프라에 프로그래밍
방식으로 액세스할 수 있도록 지원하는 서비스 집합이다. Amazon에서 여러 해 동안 심혈을 기울여
구축한 강력한 컴퓨팅 플랫폼을 이제 인터넷을 이용하는 모든 사람이 사용할 수 있게 되었다. Amazon에서
제공하는 웹 서비스에는 여러 가지가 있지만 이 시리즈에서는 대부분의 시스템에 반드시 필요한 기능
중 일부인 스토리지, 컴퓨팅, 메시징 및 데이터세트를 제공하는 기본 빌딩 블록 서비스에 대해서만
설명한다.
Amazon에서 제공하는 신뢰할 수 있고 비용 효율적인 빌딩 블록 서비스의 기능을
활용하여 복잡하고 다양한 엔터프라이즈 애플리케이션을 만들 수 있다. 웹 서비스 자체는 사용자의
환경 외부에 있는 클라우드에 상존하며 고가용성을 지원한다.
 |
Amazon Web Services 성공 사례
SmugMug는 500TB 이상의 데이터를
S3에 저장하는 온라인 포토 스토리지 애플리케이션으로 서비스 및 스토리지에 대한 비용을 1백만 달러
가까이 절감한 것으로 추산된다. SmugMug는 EC2(Elastic Compute Cloud) 컴퓨팅 리소스의 수요를 급증시킨
상위 사용자(heavy user)이다.
37Signals는 유명한 온라인 프로젝트
관리 소프트웨어인 Basecamp의 제작업체로 S3를 사용하여 스토리지 요구를 해결하고 있다.
New York Times에는 용량이 수 TB에 달하는 아카이브 데이터를 수백 개의
EC2 인스턴스를 사용하여 36시간 이내에 처리할 수 있는 EC2의
성능에 관한 기사가 실렸다.
Animoto는 비디오 처리를 위해
대용량의 컴퓨팅 성능이 필요한 온라인 프리젠테이션 비디오 생성기로, 최근에 EC2를 사용하여
처리 성능을 신속하게 확장함으로써 회사의 시스템에 치명적인 손상을 입힐 수도 있었던 웹
트래픽의 급증을
성공적으로 견뎌냈다. 당시에 무려 3,500개의 가상 인스턴스가 동시에 실행되고 있었다.
|
|
초기 비용을 투자할 필요가 없으며 사용량에 따라 비용을 지불하면 된다. Amazon에서 하드웨어를
관리하고 서비스를 제공하므로 유지 보수 비용이 들지 않는다.
가상 인프라는 오늘날 웹 환경에서 가장 위대한 도구이다. 실제 IT 매장에서는 수
주가 걸릴 수도 있겠지만 가상 인프라에서는 단 몇 분만에 빠르게 인프라를 구축할 수 있다. 여기에서
중요한 점은 인프라가 탄력적이라는 것이다. 즉, 요구에 따라 인프라를 자유롭게 확장하거나 축소할
수 있다. 전세계의 여러 회사에서 이 탄력적인 컴퓨팅 인프라를 사용하고 있다(사이드바 참조).
막대한 인프라 투자 비용과 유지 보수 비용에 대한 부담이 없기 때문에 더욱 좋은
혁신 기회를 맞이할 수 있다. 이제부터는 소유하고 있는 수많은 서버에서 발생하는 문제를 해결하거나
디스크 공간 부족을 걱정하는 등의 사소한 부분에 시달릴 필요 없이 중요한 비즈니스 아이디어에
집중할 수 있다. Amazon의 추정에 따르면 기업에서 인프라를 구축하고 관리하는 데 약 70%의 시간을
할애하는 반면 비즈니스의 핵심 아이디어에 실제로 투자하는 작업 시간은 30%에 불과하다고 한다. Amazon에서
하드웨어 및 인프라에 대한 실질적인 관리와 고가용성을 유지하는 방법을 처리하기 때문에 사용자는 자신의
아이디어를 실현하는 데 집중할 수 있다.
이 웹 스케일 인프라의 중심 요소는 다음과 같다. 이러한 요소는 대부분의 애플리케이션에 일반적으로 필요한 빌딩 블록을 제공한다.
-
스토리지
- 파일, 문서, 사용자 다운로드 또는 백업을 위해 모든 사람에게는 스토리지가
필요하다. 애플리케이션에 필요한 모든 것을 Amazon S3(Simple Storage Service)에 저장해 두고 확장성,
신뢰성, 고가용성 및 경제성을 갖춘 스토리지를 활용할 수 있다.
-
컴퓨팅
-
Amazon EC2(Elastic Compute Cloud)는 컴퓨팅 리소스를 요구에 따라 확장 또는 축소할 수 있는 기능을
제공하며 새 서버 인스턴스를 매우 쉽게 제공할 수 있다.
-
메시징
- Amazon SQS(Simple Queue Service)에서 제공하는 신뢰할 수 있는 무제한
메시징을 사용하여 애플리케이션 구성 요소를 분리할 수 있다.
-
데이터세트
- Amazon SDB(SimpleDB)는 유지 보수 작업이 필요 없고 확장 가능한 인덱스
스토리지를 제공할 뿐 아니라 데이터세트에 대한 처리 및 쿼리도 지원한다.
서비스는 필요에 따라 조합해서 사용할 수 있으며, 서로 잘 연동되도록 디자인되었다. Amazon
환경 내에서 실행하기 때문에 서비스 끼리의 모든 통신은 일반적으로 매우 빠르다.
기업에서는 이 가상 인프라를 활용하여 확장 가능하고 신뢰할 수 있는 애플리케이션을 빌드할
수 있을 뿐 아니라 요구되는 데이터 처리량의 급격한 변동에 대처하기 위해 대규모 서버 팜을
갖춰야 하는 기존 애플리케이션 호스팅 플랫폼에 비해 많은 비용을 절감할 수 있다. 이 가상
인프라는 높은 수준의 중복성도 제공한다.
Amazon Web Services 사용자는 다음 두 가지 레벨의 지원을 사용할 수 있다.
- Amazon 포럼을 모니터링하는 Amazon 관계자의 무료 포럼 기반 지원
- 보다 신중하게 도움을 요청할 수 있는 1:1 전화 지원을 제공하는 유료 지원 패키지
Amazon에서는 공객적으로 액세스할 수 있는 대시보드에 모든 웹 서비스의
상태를 게시하며, 이 대시보드는 서비스에 대한 모든 문제와 함께 업데이트된다. 서비스 중단이 발생할
경우 Amazon Web Services 팀에서는 문제에 대한 조치를 취하는 동안 문제가 해결될 때까지 15~30분
간격으로 업데이트된 사항을 공지한다.
Amazon에서는 각 서비스의 상호 작용을 위해 표준 기반 SOAP 및 REST 인터페이스를 제공한다. Amazon이나
써드파티에서 이들 서비스와의 통신을 위해 Ruby, Python, Java™, Erlang, PHP 등을 포함한 여러
가지 언어로 작성한 개발자 라이브러리를 사용할 수 있다. 또한 명령행 도구를 사용하여 EC2의 컴퓨팅 리소스를
관리할 수 있다. REST 인터페이스는 사용하기 쉽기 때문에 원하는 프로그래밍 언어로 작성된 클라이언트를
사용하여 HTTP를 통해 웹 서비스를 요청할 수 있다.
Amazon S3를 사용한 스토리지
Amazon S3(Simple Storage Service)는 데이터 저장 및 검색 기능을 갖춘 웹 서비스
인터페이스를 제공한다. 데이터의 유형에는 제한이 없으며 인터넷을 통해 어디에서나 데이터를
저장하고 액세스할 수 있다. S3에 저장할 수 있는 오브젝트의 수에는 제한이 없으며 저장할 수 있는
오브젝트의 크기 범위는 1바이트에서 5GB까지이다. 스토리지 자체는 미국이나 유럽 연합에
있으며 버킷(운영 체제의 폴더 개념)을 만들 때 오브젝트를 저장할 스토리지 위치를
선택할 수 있다. 데이터는 Amazon의 월드와이드 e-commerce 웹 사이트에 사용되는 것과 동일한
데이터 스토리지 인프라를 사용하여 안전하게 저장된다.
S3에 저장한 각 오브젝트에 액세스 제한을 지정할 수 있으며, 간단한 HTTP 요청을
사용하여 오브젝트에 액세스할 수 있다. BitTorrent 프로토콜을 사용해서도 오브젝트를 다운로드할
수 있다.
S3를 사용하면 스토리지 공간, 데이터 액세스 및 데이터 보안에 대한 걱정을 완전히
덜 수 있다. 스토리지 서버 관리 비용까지도 신경쓰지 않아도 된다.
Amazon에서 파일의 고가용성을 보장하므로 필요할 때마다 파일을 사용할 수 있다. Amazon에서
제공하는 S3 관련 서비스 레벨 계약은 월간 측정치를 기준으로 99.9%의 가동 시간을 보장한다.
Amazon EC2를 사용한 탄력적 컴퓨팅
Amazon EC2는 가상 시스템을 수 분 내에 요청하고 수요에 따라 용량을 손쉽게
확장 또는 축소할 수 있는 웹 서비스이다. 사용한 컴퓨팅 시간에 대해서만 비용을 지불하면
된다. 컴퓨팅 용량을 늘려야 하는 경우 가상 인스턴스를 신속하게 실행할 수 있으며 수요가
줄어든 후 종료할 수 있다.
이들 인스턴스는 Linux®를 기반으로 하며 원하는 애플리케이션이나
소프트웨어를 모두 실행할 수 있다. 각 인스턴스를 사용자가 제어할 수 있다. EC2 환경
자체는 캠브리지 대학교에서 개발한 오픈 소스 Xen 하이퍼바이저를
기반으로 빌드되었다. 이 환경에서는 인스턴스에 대한 템플리트로 작동하는 AMI(Amazon
machine images)를 만들 수 있다. 권한을 지정하여 인스턴스에 대한 액세스를 제어할 수 있다. 인스턴스를
사용하여 원하는 모든 작업을 수행할 수 있지만 인스턴스가 Linux 기반 이미지여야 한다는 한 가지
제약이 따른다. 최근에 Sun Microsystems과의 제휴로 Amazon에서 Open Solaris 지원을 발표하기는
했지만 무료 또는 상업용으로 사전 빌드된 EC2 이미지는 대부분 Linux를 기반으로 하고 있다.
Amazon EC2는 진정한 웹 스케일 컴퓨팅을 제공하기 때문에 컴퓨팅 리소스를 손쉽게
확장하고 축소할 수 있다. Amazon의 데이터 센터에서 실행되는 이 컴퓨팅 환경을 사용자가 완벽하게
제어할 수 있다. Amazon에서는 5가지 유형의 서버를 제공하며, 사용자의 애플리케이션 요구에 적합한
서버를 선택할 수 있다. 상용 싱글 코어 x86 서버부터 8코어 x86_64 서버까지 다양한 서버가 있다. 장애에
대비하기 위해 여러 지역 또는 가용성 영역에 인스턴스를 배치할 수 있다. Amazon에서는 IP 주소를
인스턴스에 동적으로 할당할 수 있는 탄력적 IP 주소라는 개념도 도입했다.
Amazon Simple Queue Service를 통해 신뢰할 수 있는 메시징 인프라 구축하기
Amazon SQS(Simple Queue Service)는 Amazon에 사용되는 신뢰할 수 있는 메시징
인프라에 대한 액세스를 제공한다. 간단한 REST 기반 HTTP 요청을 사용하여 어디에서나 메시지를
보내고 검색할 수 있다. 아무 것도 설치하거나 구성할 필요가 없다. 만들 수 있는 큐의 수와 보낼
수 있는 메시지의 수에 제한이 없으며 Amazon에서 여러 서버와 데이터 센터에 메시지를 저장하므로
메시징 시스템에 필요한 중복성과 신뢰성을 갖출 수 있다. 각 메시지는 최대 8KB의 텍스트 데이터를
포함할 수 있다. 메시지에 사용할 수 있는 유니코드 문자는 다음과 같다.
#x9 | #xA | #xD | [#x20 ~ #xD7FF] | [#xE000 ~ #xFFFD] | [#x10000 ~ #x10FFFF]
각 큐의 가시성 제한 시간을 구성하여 큐에 대한 여러 리더의 액세스를 제어할
수 있다. 한 애플리케이션이 큐의 메시지를 읽고 있으면 제한 시간이 만기될 때까지 다른 리더에서는
해당 메시지가 표시되지 않는다. 제한 시간이 경과되면 큐의 메시지가 다시 표시되고 다른 리더
프로세스에서 메시지를 처리할 수 있다.
SQS는 다른 Amazon Web Services와 매우 잘 통합되기 때문에 EC2 인스턴스에서 SQS에
메시지를 보내 서로 통신하고 워크플로우를 조정하는 데 사용할 수 있는 분리된 시스템을 효과적으로
구축할 수 있다. 또한 큐를 사용하여 사용자의 애플리케이션에 사용할 자기 치료 및 자동 확장 기능을
갖춘 EC2 기반 인프라를 구축할 수 있다. SQS에서 제공하는 인증 메커니즘을 사용하여 큐의 메시지에
대한 무단 액세스를 차단할 수 있다.
Amazon SimpleDB를 통해 데이터세트 처리하기
Amazon SDB(SimpleDB)는 구조화된 데이터세트를 저장, 처리 및 쿼리하는 기능을
제공하는 웹 서비스이다. 일반적인 의미의 관계형 데이터베이스는 아니지만 클라우드 내에 약하게
구조화된 데이터 저장소를 갖춘 가용성 높은 스키마로 키 값을 저장하고 검색하는 데 사용할 수
있다. 각 키 값 세트에는 고유 항목 이름이 필요하며, 항목 자체는 도메인으로 파티션되어 있다. 각
항목은 최대 256개의 키값 데이터 쌍을 포함할 수 있다. 각 도메인 내에서 데이터세트에 대한
쿼리를 수행할 수 있다. SDB에서는 아직까지 도메인 간 쿼리가 지원되지 않는다.
SDB는 사용하기 쉬우며 관계형 데이터베이스의 기능을 대부분 제공한다. 설치나 구성
작업이 필요하지 않기 때문에 일반적인 데이터베이스에 비해 유지 보수가 훨씬 쉽다. Amazon에서 모든
관리 작업을 수행한다. 데이터는 자동으로 인덱싱되며 언제 어디서나 사용할 수 있도록 제공된다. 스키마로
제한되지 않을 경우 얻게 되는 주요 장점은 데이터를 즉시 삽입하고 새 열이나 키를 동적으로 추가할 수
있다는 것이다.
Amazon 인프라의 일부인 SDB는 사용자의 간섭 없이 자동으로 크기가 조정되므로 중요한
업무에 더 많은 시간을 투자할 수 있다. 다시 한번 말하지만 비용은 사용한 데이터세트 리소스에 대해서만
지불하면 된다.
확장 가능한 아키텍처
확장 가능한 시스템을 구축하는 데 도움이 되는 Amazon Web Services의 특징은 다음과 같다.
- 신뢰성
- Amazon의 자체 비즈니스를 실행하고 극한 테스트를 거친 고가용성 데이터
센터에서 서비스가 실행된다.
- 보안
- 기본 보안 및 인증 메커니즘을 바로 사용할 수 있으며 서비스에 애플리케이션
관련 보안 기능을 추가하여 필요에 따라 보안을 강화할 수 있다.
- 비용 절감
- 고정 비용이나 유지 보수 비용이 없다. 사용한 만큼 서비스 비용을
지불하고 필요에 따라 리소스와 예산을 확장할 수 있다.
- 손쉬운 개발
- 단순한 API를 사용하여 가장 널리 사용되는 프로그래밍 언어로 제공되는
라이브러리와 이 가상 인프라의 모든 기능을 활용할 수 있다.
- 탄력성
- 컴퓨팅 자원을 수요에 따라 확장 또는 축소할 수 있다. 한 서버에서 여러
서버로 빠르게 확장하여 애플리케이션 요구에 대응할 수 있다.
- 연동성
- 4가지 핵심 빌딩 블록 서비스(스토리지, 컴퓨팅,
메시징 및 데이터세트)는
완벽하게 연동되도록 디자인되었으며 다양한 애플리케이션 도메인에서 작동하는 완벽한 솔루션을 제공한다.
- 커뮤니티
- 왕성한 활동을 통해 이러한 웹 서비스가 폭넓게 채택될 수 있도록
이끌고 있고 이 인프라를 기반으로 하는 고유한 애플리케이션을 만들고 있는 역동적인 사용자
커뮤니티의 도움을 받을 수 있다.
준비하기
이 "Amazon
Web Services를 사용한 클라우드 컴퓨팅" 시리즈의 나머지 부분에서 서비스를 자세히 살펴보려면
먼저 Amazon Web Services 계정(참고자료 참조)을 등록해야 한다. 계정을
등록하면 "Part 2: Amazon S3(Simple
Storage Service)를 통해 클라우드의 스토리지 수요에 대응하기"에서 설명하는 다양한 라이브러리와 도구를
사용할 때 필요한 공용 및 개인용 보안 액세스 키와 x.509 인증서가 제공된다.
이들 웹 서버스와 상호 작용하는 데 사용할 수 있는 도구와 라이브러리는 다양한
언어로 작성되어 있다. 이 시리즈의 기사에서는 언어 불문적인 자세를 유지하기 위해 여러 언어로
작성된 예제를 사용하기는 하지만 Java, Ruby 또는 Python에 익숙하다면 더 쉽게 이해할 수 있을
것이다.
결론
이 기사에서는 Amazon의 클라우드 컴퓨팅 환경을 소개한 후 이 인프라의 네
가지 주요 부분에 대해 간략하게 설명했다. 이 시리지의 나머지 부분에서는 각 Amazon Web
Service를 자세히 살펴본 후 이 가상 인프라를 활용하여 애플리케이션을 구축하는 데 사용할
수 있는 다양한 라이브러리와 도구에 대해 설명한다.
참고자료 교육
제품 및 기술 얻기
- IBM 제품 평가판을
다운로드하여 IBM® DB2®, Lotus®, Rational®, Tivoli® 및 WebSphere®의
애플리케이션 개발 도구 및 미들웨어 제품을 사용해 보기 바란다.
토론
필자소개  | 
|  | Prabhakar Chaganti는 사용자의 전체 AWS 클라우드 컴퓨팅 환경(EC2, S3, SQS 및 SimpleDB
포함)을 설계, 관리 및 모니터링하는 단일 통합 인터페이스를 만들고 있는 신생 업체 Ylastic의
CTO이다. 최근에 Xen Virtualization과 GWT Java AJAX Programming이라는 두 권의
책을 집필한 그는 VMware Global Virtual Appliance Challenge에서 가장 혁신적인 가상 어플라이언스에
주어지는 커뮤니티 초이스 상을 수상하기도 했다. |
기사에 대한 평가
 |
| 이 문서 북마킹 하기
|
|