10분 만에 AWS Marketplace 에서 AMI 제품 판매 과정 마스터 하기
AWS Marketplace 는 고객이 솔루션을 구축하고 비즈니스를 운영하는 데 필요한 소프트웨어, 서비스 그리고 데이터를 구매하고 즉시 사용할 수 있는 온라인 장터 입니다. 현재 전세계 260,000명의 AWS Marketplace 고객이 1500 개 이상의 ISV(Independent Software Vendor) 제공하는 39개 분야의 다양한 솔루션을 이용하고 있습니다. AWS Marketplace 에서 ISV 파트너는 자사의 소프트웨어, 데이터, 서비스를 다양한 배포 형태, 유연한 요금 옵션과 함께 전 세계 AWS 고객에게 간소화 된 방법으로 판매할 수 있습니다.
AWS ISV 파트너가 판매자로서 AWS Marketplace 에서 판매 할 수 있는 제품의 패키지 유형은 다음과 같습니다.
- Amazon Machine Image (AMI) 방식
- CloudFormation 배포 방식
- SaaS (Software-as a Service) 방식
- 컨테이너 방식
- AI/ML 알고리즘 및 모델
- 데이터 판매
- 프로페셔널 서비스
이번 블로그 에서 저희는 ISV 가 AWS Marketplace 에서 자사의 솔루션을 AMI 제품 형태로 판매 하기 위해 필요한 기술 적 준비 사항과 프로세스를 살펴 보겠습니다. 참고로 이번 블로그 에서는 여러분의 이해를 돕기 위해 판매자는 ISV, 구매자는 고객이 된다는 점을 미리 말씀 드립니다.
AWS Marketplace AMI 제품 유형
Amazon Machine Images(AMI) 는 ISV 가 판매 하고자 하는 자사의 솔루션을 패키징 하는 형태 중 하나 입니다. 따라서 AWS Marketplace 에서 ISV는 자사의 솔루션이 담긴 고유한 AMI 를 만들어 판매 할 수 있으며, 고객은 ISV 가 판매하는 AMI 를 구매하여 자신의 Amazon Elastic Compute Cloud(Amazon EC2) 에 곧바로 실행 할 수 있습니다.
AWS Marketplace 에서 ISV는 자사의 솔루션을 단일 AMI 또는 여러개의 AMI 로 패키징 하여 판매 할 수 있습니다. 이때 여러개의 AMI 로 패키징 하여 판매 하는 경우 해당 제품은 CloudFormation 이라는 카테고리로 분류되어 고객에게 판매 됩니다.
AMI 제품 판매 프로세스
다음 다이어그램은 AMI 제품 등록 프로세스를 요약해 보여 줍니다.
단계 별로 간단하게 살펴 보면 다음과 같습니다.
- ISV는 판매를 원하는 솔루션을 AMI 로 패키징 합니다. 이 단계에서 ISV는 판매 과금 모델을 선택 하고 소프트웨어를 이에 맞춰 패키징 합니다. 이때 모범 사례를 따르는 AMI 로 만들어야 합니다.
- ISV는 AWS Marketplace 에서 제공하는 AMI Self scan 을 통해 준비한 AMI 제품에 대한 취약점을 사전에 점검 합니다.
- ISV는 준비한 AMI를 AWS Marketplace에 제출 합니다. 제출을 위해 사용 되는 도구는 AWS Marketplace Management Portal에서 지원되는 웹 환경 기반의 Self-Service-Listing, 엑셀 파일 업로드 기반의 Product Load Form 두 가지 가 있습니다. 아래와 같이 AMI 제품의 과금 모델에 따라 두 도구 가운데 한 가지를 선택해야 합니다.
Figure-2: AMI 제품 제출 도구
- AMI 제품을 제출 하면 AWS Marketplace 운영팀에서 검토를 시작 합니다. 제품에 문제가 있는 경우 ISV 에게 공지 합니다. 이 작업은 보통 3 영업일 정도 소요 되지만 검토 결과에 따라 추가 적인 시간이 소요 될 수 있습니다.
- AMI 제품 검토가 끝이 나면 AWS Marketplace 운영팀에서 이를 ISV만 접근 가능한 상태로 게시 합니다. ISV 는 이 한시적인 게시를 통해 제품 게시가 의도한대로 되었는지 점검 할 수 있습니다.
- ISV의 동의가 이루어지면 AMI 제품이 최종적으로 AWS Marketplace에 게시 되고 본격적으로 판매를 시작 할 수 있습니다.
- 만약 ISV가 제품의 변경(예, 지원 정보,버전 업데이트 등)을 한다면 앞선 과정과 마찬가지로 AWS Marketplace Management Portal 을 통해 변경 하고 이를 AWS Marketplace 운영팀에서 검토 합니다.
그럼 크게 AMI 제품 준비, 제출 그리고 최종 게시로 이어지는 AMI 제품 판매 프로세스를 좀 더 자세히 살펴 보겠습니다.
AMI 제품 준비
AMI 기반 제품의 경우 판매 가능한 상용화 솔루션을 준비 했다면 ISV 여러분은 다음 두 가지에 대해서만 준비 및 결정을 하면 됩니다.
- AWS 모범 사례를 준수한 AMI
- AMI 제품에 대한 요금 모델
우선 모범 사례에 대한 고려 사항을 살펴보겠습니다.
모범 사례를 따르는 AMI 준비
우선 판매할 소프트웨어를 구성한 EC2 인스턴스를 AMI 형태로 만들어야 하는데, 이때 모든 AMI는 상용 서비스가 가능한 수준 이어야 하며, AWS Marketplace Portal에 등록된 ISV 계정의 미국 동부(버지니아 북부) 리전에 등록되어야 합니다. 따라서 해당 리전에서 EC2 작업 후 이미지를 생성하거나 AMI 리전간 복사를 활용 하여 미국 동부(버지니아 북부) 리전에 위치 시켜야 합니다.
또한 AWS Marketplace에 제출되는 모든 AMI는 구매자가 안전하게 사용할 수 있도록 제품 보안 정책을 준수해야 합니다. 주요한 내용들을 몇가지 살펴보겠습니다.
- AMI는 HVM(하드웨어 가상 머신) 가상화 및 64비트 아키텍처를 사용하는 퍼블릭 AMI 이어야 하며, 보안 취약점이나 말웨어, 또는 바이러스가 포함 되어 있어서는 안됩니다. 따라서 AMI를 생성할 때는 취약점이 없는 최신 운영 체제나 패키지를 사용해야 하고, 불필요한 서비스 데몬들을 삭제 혹은 비활성화 하는 것이 좋습니다.
- 어떤 이유로든 AMI에 고정된 패스워드, 액세스 키, 키페어와 같은 자격증명이 포함 되어 있어서는 안됩니다.
- 리눅스 운영체제의 경우 SSH (22번 포트)를 사용하고 루트 계정 로그인을 비활성화하고 sudo 권한을 가진 사용자(예: ec2-user) 를 제공해야 하며 sshd_config의 PasswordAuthentication을 No로 설정하여 SSH 암호 인증을 비활성화야합니다.
- 윈도우 운영체제의 경우 RDP (5985 포트)를 사용하며 EC2Launch v2 를 이용하여 인스턴스 시작 작업을 수행해야하고, 게스트 계정 및 원격 데스크톱 사용자는 허용되지 않습니다.
- 관리 접근에 대해서도 고정된 패스워드를 사용하면 안되기 때문에 EC2를 시작할때 사용자 데이터(userdata)에서 인스턴스 메타데이터를 통해 관리 접근을 위한 패스워드를 동적으로 구성하면 구매자가 추가 작업없이 자동으로 초기화를 수행할 수 있도록 할 수 있습니다.
- AMI는 그 자체로 완성된 형태여야 하며, 고객 환경에 배포된 이후 외부 인터넷에 접속해 추가 소프트웨어나 라이브러리를 다운로드 받는 등의 추가 작업이 요구 되어서는 안됩니다.
- AMI에 대한 투명한 취약점 점검을 위해 암호화된 파일시스템을 사용해서는 안됩니다.
- AMI는 모든 AWS 리전에서 실행할 수 있도록 빌드해야 하며 리전에 따라 다르게 빌드된 AMI는 허용되지 않습니다.
그외 다양한 AMI 보안 정책에 대한 자세한 내용은 다음을 참고하시기 바랍니다.
이렇게 만들어진 AMI는 등록 과정에서 Self-Scan 을 통해 직접 취약점을 점검할 수 있습니다. 또한 AWS Marketplace는 이미 제출된 제품에 대해서도 지속적으로 검사하여 계속 변화하는 보안 요구사항을 충족할 수 있도록 요구합니다. 따라서 AMI 개발 > 업데이트 > 게시 로 이어지는 반복적인 프로세스를 위한 파이프라인을 구축해 놓는 것이 좋습니다.
라이센스 모델과 요금 모델 선택
AMI가 준비 되었다면, 그 다음엔 판매를 위한 요금 모델을 결정해야 합니다. AWS Marketplace는 클라우드 사용자가 원하는 방식으로 제품을 판매할 수 있도록 다양하고 유연한 요금 옵션을 제공합니다. AMI 제품의 경우 인프라 비용(예: EC2)과 소프트웨어 비용의 합으로 요금이 산정되며, 소프트웨어 비용은 크게 무료, BYOL, 또는 유료 라이센스 모델을 바탕으로 제공 할 수 있고, 유료 라이센스 모델은 다시 시간 기반 요금과 사용량 기반 요금으로 나뉘게 됩니다. 여기서 유의할 점은, 모든 BYOL 제품들은 유료 라이센스 모델 옵션도 반드시 가지고 있어야 하고, 관련하여 BYOL 제품 등록 이후 최대 90일간의 유예가 주어집니다.
시간 기반 요금 모델은 시간당(hourly), 매월(Monthly), 연간(Annual) 요금과 5-31일 사이의 무료 평가판의 조합으로 만들 수 있으며, 이 글에서는 사용량 기반 요금에 대한 설명을 자세히 다루므로 시간 기반 요금에 대한 자세한 내용은 다음을 참고해주시기 바랍니다.
사용량 기반 과금 모델
사용량 기반 과금 모델은 단순하게 시간 기반으로 과금을 하는 것이 적합하지 않은 경우에 선택할 수 있습니다. 예를 들어 BI 솔루션을 가지고 있는 ISV 는 실제 BI를 사용하는 사용자수 기반으로 과금을 하고 싶을 수 있고, 보안 ISV의 host-agent 기반의 스캐닝 솔루션은 스캔한 host의 숫자 기반으로 과금을 하고 싶을 수 있습니다. 그럴 경우 적절한 요금 카테고리 (예 : 사용자, 호스트, 대역폭 및 데이터)를 선택하고 그 안에서 최대 24개의 차원(dimension)으로 정의가 가능 합니다.
다음은 사용량 기반 과금 모델의 예시입니다. 예시에서는 호스트를 기반으로 사용량을 측정하고, 국가와 호스트의 개수로 차원을 나누어 요금을 책정합니다.
Figure-3: 사용량 기반 과금 모델 예시
사용량 기반 과금 모델에서 고려해야 하는 사항은 다음과 같습니다.
- 사용량 기반 과금 모델은 AMI 제품 등록 과정에서 Paid Usage Pricing 옵션을 선택하고 Product Load Form을 작성하여야 합니다. 또한 AWS Marketplace Metering API를 이용해 사용량을 전송해야하므로 제품 준비와 등록 과정이 시간 기반 요금에 비해 복잡해질 수 있습니다.
- 차원이 단순한 경우 제품 당 에이전트 개수 혹은 사용자 수를 제약하는 다수의 제품을 등록하고 각 가격모델은 단순하게 시간당으로 가져가는 방법도 있습니다. (제품 1 : BI server upto 10 Users, 제품 2: BI server upto 25 Users)
- 다른 요금 모델을 사용하던 제품을 사용량 기반으로 변경하는 것은 불가능하며, 새로 등록을 해야합니다. 두 종류의 요금 모델을 동시에 서비스 하는 것도 가능합니다.
사용량 기반 과금 정책을 선택한 경우, ISV는 결정한 요금 기준에 기반 하여 매시간 고객의 사용량 데이터를 AWS Marketplace Metering Service 로 전송 해주어야 합니다. 그러면 AWS Marketplace는 이 사용량 데이터를 참고하여 ISV 대신 고객에게 AMI 제품 사용 요금을 청구 합니다. 다음 Python 조각 코드는 AWS Marketplace가 제공하는 Metering API의 MeterUsage를 통해 Usage 측정 값을 AWS Marketplace로 전송하는 하는 예시 입니다.
response = client.meter_usage(
ProductCode='string',
Timestamp=datetime(2015, 1, 1),
UsageDimension='string',
UsageQuantity=123,
DryRun=True|False,
UsageAllocations=[
{
'AllocatedUsageQuantity': 123,
'Tags': [
{
'Key': 'string',
'Value': 'string'
},
]
},
]
)
ISV는 이 start-minuate 을 기준으로 매 시간 고객의 Usage 데이터를 AWS Marketplace Metering Service 로 전송 해야 합니다. start-minute 는 고객이 ISV의 AMI 제품을 구매 하고 실행 한 시점을 의미 합니다. 이를 제품에 반영 할 때 고려 할 수 있는 구현 방법은 thread, daemon 또는 cron job이 있을 수 있습니다.
고객의 Usage 데이터를 전송하고 수신 하는 것은 판매자인 ISV의 책임으로, 측정이 안된 경우 AWS에서는 해당 사용에 대해 요금을 청구할 수 없으므로 사용량 측정은 아주 중요한 부분 입니다. AMI 제품이 실행 되는 EC2 인스턴스가 Metering API를 호출 할 수 있도록 하기 위해, AMI 제품 구매자는 AWS Internet Gateway를 보유하고 있어야 하고, 아래 예제 처럼 Metering API를 호출 할 수 있는 권한 설정에 대한 안내가 적절하게 이루어져야 합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
aws-marketplace:MeterUsage
],
"Effect": "Allow",
"Resource": "*"
}
]
}
마지막으로 위와 같이 고정된 요금 모델 외에, 고객과 구매에 대한 맞춤형 요금 및 최종 사용자 라이선스계약 (EULA) 조건을 협상할 수 있는 비공개 제안(Private offer)를 생성할 수도 있습니다. 이때 유연한 결제 스케줄러 (Flexible Payment Scheduler)를 이용해 고객의 결제 일정도 사용자 지정할 수 있고, AWS 컨설팅 파트너가 Marketplace에 등록되 ISV 제품을 리셀 할 수 있도록 구성하는 것도 가능합니다. 비공개 제안에 대한 자세한 내용은 다음을 참고해주시기바랍니다.
AMI 제품 제출
AWS Marketplace Management Portal
현재 집중해 살펴 보고 있는 AMI 제품 뿐 아니라 AWS Marketplace 에서 허용 하는 모든 제품은 AMMP(AWS Marketplace Management Portal) 을 통해 등록 합니다. 등록 뿐 아니라, ISV는 AWS Marketplace Management Portal을 통해 Marketplace에 등록된 제품을 관리, Private offer 제공, 매출 현황 파악 등 판매자로서 필요한 활동을 이곳에서 할 수 있습니다.
Figure-4: AWS Marketplace Management Portal
AMI self-scan
ISV는 AMI 제품 등록을 시작 하기에 앞서, AMMP 에서 제공하는 준비된 AMI를 Assets으로 등록 한 다음 Self-Scan 하여 취약점을 사전에 점검 할 수 있습니다.
Figure-5: AMI Self-scan 화면
취약점이 발견 되는 경우 문제에 대한 내용과 권장 되는 조치 방법을 안내 하기 때문에 ISV 는 이를 통해 AMI 제품을 안전하게 만들 수 있습니다. 만약 아래와 같이 AMI에 취약점이 발견된 경우 조치 후 앞선 Assets 등록 과정을 다시 진행 하여 Scanning 을 완료할 수 있습니다.
Figure-6: AMI Self-Scan 통한 취약점 감지
참고로 이 Self-scanning 을 위해서 AWS Marketplace는 ISV의 AMI를 복사하고 점검 작업을 합니다. 따라서 ISV 는 사전에 해당 작업을 작업을 할 수 있는 권한과 이를 위임 받을 수 있는 신뢰 정책을 포함 하는 IAM Role 을 만들어 AWS Marketplace 에게 부여해야 합니다.
Figure-7: AMI Self-Scan을 위한 IAM Role 부여
AMMP 통한 AMI 등록 절차: AMI 라이센스 모델 선택
AMMP 를 통해 AMI 제품을 등록 하는 과정을 살펴 보겠습니다. AMMP 상단 메뉴에서 Products 하위의 Server 를 선택 합니다. 이곳에서 AMI 뿐 아니라 CloudFormation, Container 제품을 등록 할 수 있습니다. 아래 그림 과 같이 AMI 제품이 크게 7 가지 유형으로 분류 되어 있습니다.
Figure-8: AWS Marketplace Self-Service Listing 화면
이 가운데 BOYL, Free, Paid hourly or hourly-annual 제품은 AMMP 메뉴를 통해 직접 제품 제출이 가능하며 그 외 AMI 제품 유형, 예를 들어 Usage pricing 의 제품을 선택 하는 경우 ISV 가 원하는 판매 기준이 포함된 별도 양식 파일을 통해서만 제품 제출이 가능 합니다. 이 때 사용 되는 제품 등록 양식 파일(PLF, Product Load Form)은 AMMP 팝업 안내에 따라 다운로드 할 수 있습니다.
Figure-9: AWS Marketplace Product Listing Form
AMMP 통한 AMI 등록 절차: AMI 제품 정보 입력
라이센스 모델을 선택 한 다음 AMI 제품 정보를 입력하는 화면으로 전환 됩니다. 본 예제는 Free 라이센스 모델을 선택한 경우 입니다. BYOL, Paid hourly or hourly-annual 과정 역시 이와 크게 다르지 않습니다. 이 단계에서 ISV 가 입력 해야 하는 항목 들은 다음과 같습니다.
- 제품 기본 정보: 소개, 제품 버전, 제품 카테고리, AWS Marketplace 검색어 지정, EULA 등
- AMI 정보: AMI ID, AMI 가상화 유형, OS 버전, 제품 실행시 생성될 보안 그룹 등
- 리전 정보: AMI 제품을 배포 할 리전 선택
- 인스턴스 유형: AMI 제품이 지원할 인스턴스 유형 선택
Figure-10: AWS Marketplace AMI 제품 정보 입력 화면
이 가운데 제품 기본 정보는 최종적으로 ISV 제품이 AWS Marketplace에 게시 되었을 때 고객에게 노출 되는 정보 입니다. 따라서 훌륭한 고객 경험 제공을 위하여 고객의 입장에서 필요로 하는 정보를 충실히 입력 하시기를 권장 드립니다.
AMMP 통한 AMI 제출 절차: 제출 및 확인
AMI 제품 등록을 위한 정보 입력이 완료 된 후 제출을 하면 아래와 같이 Requests 메뉴에서 해당 등록 요청 건에 대한 결과를 확인 할 수 있습니다. 제출 이후 내용에 대한 수정이 필요한 경우 역시 본 메뉴에서 수정 단계로 진입 할 수 있습니다.
Figure-11: AWS Marketplace 제품 제출 요청 현황 확인 화면
제품을 제출하면 AWS Marketplace 팀에서 보안 요구사항을 포함한 제품 검토를 하게 되고, 필요시 ISV와 AWS Marketplace 상호 간 피드백을 기반으로 제품을 최종 완성시키게 됩니다. 제품 제출 요청이 성공적으로 완료가 되면 Request status가 Under review 에서 Succeeded로 변경됩니다.
AMI 제출을 완료 하고나면, 각 제품마다 고유한 제품 코드(Product code)가 부여됩니다. 참고로 이 제품 코드는 AMI와 연결되어 있는 인스턴스 메타데이터로, AWS Marketplace 에서 제품을 식별하기 위해 사용하는 고유값인 제품 ID(Product ID)와는 다른 값입니다.
제품 코드는 고객이 AMI를 구매 하고 시작한 이후, 이를 바탕으로 새로운 AMI를 생성 하더라도 여전히 동일하게 유지되므로 크게 두가지 용도로 사용됩니다. 첫번째로 고객이 실행한 인스턴스가 구매한 AMI로 부터 실행 된 것인지 점검하는 유효성 검사에 기준 값으로 활용 될 수 있습니다. 두번째는 MeterUsage 처럼 AWS Marketplace Metering API를 통해 제품 사용량을 측정하기 위한 기준으로 사용됩니다.
다음 예시는 AMI 제품으로 시작한 EC2 인스턴스의 메타데이터 입니다. 이 중 marketplaceProductCodes
필드에서 고유한 제품 코드를 확인할 수 있습니다.
curl http://169.254.169.254/latest/dynamic/instance-identity/document
{
"accountId" : "0123456789",
"architecture" : "x86_64",
"availabilityZone" : "us-east-1e",
"billingProducts" : null,
"devpayProductCodes" : null,
"marketplaceProductCodes" : [ "0vg0000000000000000000000" ],
"imageId" : "ami-0123456789abcdef1",
"instanceId" : "i-0123456789abcdef0",
"instanceType" : "t2.medium",
"kernelId" : null,
"pendingTime" : "2020-02-25T20:23:14Z",
"privateIp" : "10.0.0.2",
"ramdiskId" : null,
"region" : "us-east-1",
"version" : "2017-09-30"
}
AMI 제품 게시
Figure-1 과 같이 AWS Marketplace 운영팀 으로 부터 제품 게시가 승인 되면 ISV 에게 제공하는 한시적인 제품 URL이 제공 됩니다. 이는 일종의 미리 보기 버전으로 ISV 는 이를 통해 AMI 제품이 의도한대로 게시 될 지 점검 할 수 있습니다. 이후 ISV 의 최종 게시 동의를 하면 AMI 제품이 최종적으로 AWS Marketplace 에 게시 됩니다. 이 후 ISV 에게 예상 되는 활동은 크게 두 가지 입니다
- 제품 업데이트
- 판매 데이터 분석
ISV는 언제든지 AMI 제품을 변경 하고 이를 게시된 제품에 반영 할 수 있습니다. 변경 사항은 일반적으로, 새로운 버전, 제품 정보 변경(예, 설명, 사용 지침 등), 요금 변경, 요금 모델 변경, 지원 인스턴스 유형 변경, 제품 중단 등이 있을 수 있습니다.
판매 데이터 분석은 성공적인 마켓플레이스 비즈니스를 위해 필수적 입니다. 이를 위해 AWS Marketplace 는 ISV 에게 판매 데이터를 두 가지 형태로 제공 합니다. 첫 번째는, AWS Marketplace Management Portal 내 Report 화면을 통해 비즈니스 레포트 를 제공 합니다. 두 번째는 AWS Marketplace Commerce Anaytics Service(CAS)에서 API 를 통해 판매 관련 데이터를 제공 합니다. 즉 ISV가 AWS SDK 또는 CLI을 통해 CAS API을 호출(판매 데이터 요청) 하면 CAS가 요청 받은 판매 데이터를 ISV 소유의 S3 버킷에 배포 합니다. 이어서 배포가 완료 되면 이를 Amazon SNS 를 통해 알림을 보내 옵니다. 따라서 ISV 는 이를 활용 하여 판매 데이터 수집 을 자동화 하고, 더 나아가 다양한 AWS 분석 서비스와 연계 하여 판매 데이터 분석을 수행할 수 있습니다.
Figure-12: AWS Marketplace 판매 데이터 수집 아키텍처
결론
이 글에서 저희는 AWS Marketplace 에서 AMI 형태의 솔루션을 판매 하기 위한 준비 사항과 프로세스를 살펴 보았습니다. AWS Marketplace는 ISV 판매자 입장에서 경쟁력 있는 소프트웨어를 다양한 배포 형태, 유연한 요금 옵션과 함께 AWS 글로벌 고객에게 빠르고 쉽게 제공할 수 있는 도구입니다. 특히 AMI 제품 유형은 기존 소프트웨어 전달 방식과 크게 다르지 않기 때문에 새롭게 개발해야하는 부분이 적고 AWS Marketplace 에 등록하는 과정도 비교적 간단하여 쉽게 시작할 수 있는 유형입니다. 우선 AMI 제품 유형과 함께 클라우드로 마이그레이션을 시작 하는 것도 좋은 전략 입니다. AWS Marketplace 와 AMI 제품 유형에 대한 더 자세한 내용은 웹사이트 및 AWS 개발자 가이드를 참고해 주시기 바랍니다.
– 장진서, 파트너 솔루션즈 아키텍트
– 조이정, 솔루션즈 아키텍트
– AWS Marketplace 관한 문의는 isv-kr-marketplace@amazon.com 로 하실 수 있습니다.