.NET 프로젝트 용 Elastic Beanstalk와 CloudFormation의 차이점은 무엇입니까?


121

저는 .NET MVC 애플리케이션을 개발했으며 AWS를 사용하고 Visual Studio Toolkit을 통해 배포하기 시작했습니다. 툴킷의 Elastic Beanstalk 옵션을 사용하여 애플리케이션을 성공적으로 배포했습니다.

툴킷을 사용하여 .NET 앱을 AWS에 배포하기위한 자습서를 살펴보면서 Elastic Beanstalk 및 CloudFormation 둘 다로 배포하기위한 자습서가 있음을 알았습니다 . 이 둘의 차이점은 무엇입니까?

제가 알 수 있듯이 둘 다 본질적으로 동일한 작업을 수행하는 것 같습니다. 애플리케이션을 AWS 클라우드에 쉽게 배포 할 수 있도록합니다 (EC2 인스턴스 설정,로드 밸런서, 자동 확장 등). 나는 둘 다 읽어 보려고했지만 나에게 똑같은 소리를내는 유행어들 외에는 아무것도 얻을 수없는 것 같다. 이 정확한 질문에 답해야하는 FAQ 를 AWS 웹 사이트에서 찾았 지만 실제로 이해가되지 않습니다.

둘 중 하나를 사용해야합니까? 양자 모두?


이 질문은 Stackoverflow의 주제에서 약간 벗어난 주제이지만 아마도 ServerFault에도 적합하지 않을 것입니다 ... 이와 같은 질문에 대한 새 사이트를 제안했습니다. 동의하면 따르십시오! area51.stackexchange.com/proposals/82757/…
Dan Ciborowski-MSFT 2013 년

답변:


212

그들은 실제로 꽤 다릅니다. Elastic Beanstalk는 개발자의 삶을 더 쉽게 만들어줍니다. CloudFormation은 시스템 엔지니어의 삶을보다 쉽게 ​​만들어줍니다.

Elastic Beanstalk는 기본 EC2 인스턴스, Elastic Load Balancer, Auto Scaling 그룹 등을 추상화하는 AWS의 IaaS 서비스 상단에있는 PaaS와 유사한 계층입니다. 따라서 모든 것을 처리하고 싶지 않은 개발자가 훨씬 쉽게 처리 할 수 ​​있습니다. 애플리케이션을 AWS에 신속하게 배포 할 수 있습니다. Heroku, EngineYard, Google App Engine 등과 같은 다른 PaaS 제품과 매우 유사합니다. Elastic Beanstalk를 사용하면 기본 마법의 작동 방식을 이해할 필요가 없습니다.

반면에 CloudFormation은 자동으로 아무것도 수행하지 않습니다. 배포에 필요한 모든 리소스를 거대한 JSON 파일로 정의하는 단순한 방법입니다. 따라서 CloudFormation 템플릿은 실제로 두 개의 ElasticBeanstalk 환경 (프로덕션 및 스테이징), 두 개의 ElasticCache 클러스터, DyanmoDB 테이블, 그리고 Route53에서 적절한 DNS를 생성 할 수 있습니다. 그런 다음이 템플릿을 AWS에 업로드하고 자리를 비우고 45 분 후에 모든 것이 준비되고 대기합니다. 일반 텍스트 JSON 파일이기 때문에 내 애플리케이션 배포를 버전 화하는 좋은 방법을 제공하는 소스 제어에 붙일 수 있습니다. 또한 다른 지역에 신속하게 배포 할 수있는 반복 가능한 "알려진 양호한"구성이 있는지 확인합니다.


감사! 지금은 EBS를 고수 할 것 같습니다.
kspearrin 2013 년

37
@xxkylexx FYI : "EBS"는 "Elastic Block Store"라는 AWS 서비스를 나타냅니다. "EBS"대신 "Elastic Beanstalk"를 말하는 것 같아요.
ekillaby

2
.Net 등의 애플리케이션을위한 Elastic Beanstalk 환경을 생성하기 위해 Cloud Formation 템플릿을 사용하고 자동화했다고 생각합니다. FWIW
codeputer

51

표준 .NET 웹 애플리케이션을 빠르게 배포하기 시작 하려면 Elastic Beanstalk 가 적합한 서비스입니다.

앱 서비스 비교 그래픽

AWS CloudFormation : "템플릿 기반 프로비저닝"

AWS CloudFormation은 개발자와 시스템 관리자가 관련 AWS 리소스 모음을 생성 및 관리하고이를 순서 있고 예측 가능한 방식으로 프로비저닝 및 업데이트 할 수있는 쉬운 방법을 제공합니다.

CloudFormation (CFn)은 기존 AWS API에 대한 경량의 저수준 추상화입니다. 정적 JSON / YAML 템플릿 문서 를 사용하여 AWS API의 CRUD 작업에 해당하는 리소스 세트 (예 : EC2 인스턴스 또는 S3 버킷 )를 선언합니다 .

CloudFormation 스택을 생성하면 CloudFormation은 해당 API를 호출하여 관련 리소스를 생성하고, 스택을 삭제하면 CloudFormation이 해당 API를 호출하여 삭제합니다. 대부분 (전부는 아님) AWS API 가 지원됩니다.

AWS Elastic Beanstalk : "간편한 웹 앱"

AWS Elastic Beanstalk는 Apache, Nginx, Passenger와 같은 친숙한 서버에서 Java , .NET , PHP , Node.js , Python , Ruby , GoDocker로 개발 된 웹 애플리케이션 및 서비스를 배포하고 확장하기위한 사용하기 쉬운 서비스입니다. 및 IIS.

코드를 업로드하기 만하면 Elastic Beanstalk가 용량 프로비저닝,로드 밸런싱, 자동 확장에서 애플리케이션 상태 모니터링에 이르기까지 배포를 자동으로 처리합니다.

Elastic Beanstalk (EB)는 웹 애플리케이션 호스팅을위한 상위 수준의 관리 형 '서비스로서의 플랫폼'(PaaS)으로, 범위가 Heroku 와 유사 합니다. 낮은 수준의 AWS 리소스를 직접 처리하는 대신 EB는 웹 인터페이스를 사용하여 애플리케이션 환경 을 생성하고, 애플리케이션에서 사용 하는 플랫폼을 선택 하고, 소스 번들을 생성 및 업로드하고 , 나머지는 EB가 처리 하는 완전 관리 형 플랫폼 을 제공 합니다 .

EB를 사용하면 애플리케이션 환경모니터링 하고 애플리케이션의 새 버전을 배포 하기 위한 모든 종류의 기본 제공 기능을 얻을 수 있습니다 .

내부적으로 EB는 CloudFormation을 사용하여 애플리케이션의 다양한 AWS 리소스를 생성하고 관리합니다. 애플리케이션과 함께 배포 된 EB 구성 파일에 CloudFormation 리소스 를 추가하여 기본 EB 환경을 사용자 지정하고 확장 할 수 있습니다 .

결론

애플리케이션이 Elastic Beanstalk의 지원되는 플랫폼 중 하나를 사용하는 표준 웹 계층 애플리케이션이고 애플리케이션에 대해 관리하기 쉽고 확장 성이 뛰어난 호스팅을 원하는 경우 Elastic Beanstalk를 사용 하십시오 .

만약 너라면:

  • 애플리케이션의 모든 AWS 리소스를 직접 관리하고 싶습니다.
  • 인스턴스 프로비저닝 또는 배포 프로세스를 관리하거나 크게 사용자 지정하려는 경우
  • Elastic Beanstalk에서 지원하지 않는 애플리케이션 플랫폼을 사용해야합니다. 또는
  • 더 높은 수준의 Elastic Beanstalk 기능을 원하거나 필요로하지 않습니다.

그런 다음 CloudFormation을 직접 사용 하고 Elastic Beanstalk의 추가 된 구성 계층을 피하십시오.


14

Cloud Formation은 AWS 서비스를 배포 할 수있는 서비스입니다. 원하는 서비스를 설명하는 템플릿 파일을 만듭니다. 해당 템플릿을 배포하면 Cloud Formation이 리소스를 '패키지'로 생성합니다. 템플릿에 정의한 모든 리소스가 함께 시작되고 종료됩니다. Cloud Formation으로 생성 할 수있는 리소스 유형의 예는 S3, EC2 인스턴스, AutoScaling, DynamoDb 등입니다. EC2의 경우 Cloud Formation은 "cfn-init"스크립트를 사용할 수있는 기능도 제공합니다. 인스턴스를 부트 스트랩하기 위해 템플릿과 함께 사용할 수 있습니다.

Elastic Beanstalk는 Cloud Formation 템플릿 및 scipts를 사용하여 다음을 수행합니다. 1.로드 밸런서 및 Auto Scaling 그룹 생성, 2. 코드를 S3에 복사, 3. Ec2 인스턴스를 부트 스트랩하여 S3에서 코드를 다운로드하고 배포합니다.

Cloud Formation은 EB만큼 사용하기 쉽지는 않지만 EC2 인스턴스 이외의 리소스를 생성하고 cfn-init 스크립트 등을 제어 할 수 있기 때문에 훨씬 더 강력합니다.


10

주목할만한 다른 차이점이 있습니다. Elastic beanstalk는 단일 앱의 컨테이너로 설계되었습니다. 여러 웹 사이트와 서비스를 보유하고 있지만 Beantalk로 여러 웹 사이트를 배포하는 것이 매우 어려웠고 여러 번의 시도 끝에 AWS가이 상황에서 추가 유연성이 있기 때문에 클라우드 형성을 사용하도록 도움을 요청했습니다. AWS 구름 형성 부트 스트랩 및 실행중인 사이트 업데이트에 대한 프로그래머 정말 도움이 기사는 여기 AWS 페이지보다 훨씬 명확 이잖아. VS에서 곧바로 S3에 저장된 클라우드 형성 템플릿으로 배포하고 beantalk와 같이 자동 업데이트되도록 할 수 있는지 여전히 고민 중입니다.


3

이러한 서비스는 서로를 보완하도록 설계되었습니다. AWS Elastic Beanstalk는 클라우드에서 애플리케이션을 쉽게 배포하고 실행할 수있는 환경을 제공합니다. 개발자 도구와 통합되어 애플리케이션의 수명주기를 관리 할 수있는 원 스톱 환경을 제공합니다. AWS CloudFormation은 광범위한 AWS 및 타사 리소스를위한 편리한 프로비저닝 메커니즘입니다. 기존 엔터프라이즈 애플리케이션, 레거시 애플리케이션, 다양한 AWS 리소스를 사용하여 구축 된 애플리케이션 및 컨테이너 기반 솔루션 (AWS Elastic Beanstalk를 사용하여 구축 된 솔루션 포함)과 같은 다양한 유형의 애플리케이션의 인프라 요구 사항을 지원합니다.

AWS CloudFormation은 AWS 리소스 유형 중 하나로 Elastic Beanstalk 애플리케이션 환경을 지원합니다. 예를 들어 애플리케이션 데이터를 저장할 RDS 데이터베이스와 함께 AWS Elastic Beanstalk 호스팅 애플리케이션을 생성하고 관리 할 수 ​​있습니다. RDS 인스턴스 외에도 지원되는 다른 AWS 리소스도 그룹에 추가 할 수 있습니다.


1

Elastic Beanstalk는 업로드 한 코드를 기반으로 용량 프로비저닝,로드 밸런싱, 자동 확장에서 애플리케이션 상태 모니터링에 이르기까지 배포를 자동으로 처리합니다. 여기서 CloudFormation은 JSON 스크립트를 통해 전체 클라우드 환경을 배포하도록 설계된 자동화 된 프로비저닝 엔진입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.