2014-12-07 5 views
0

AWS에서 서비스를 실행하는 초기 단계에 있습니다. Google 서버는 AWS, VPC, 개인 및 공용 서브넷에서 호스팅되며 프론트 엔드 웹 서버에 ELB 및 자동 확장 설정 (AMI 사용)을 사용하는 개인 및 공용 서브넷에 여러 인스턴스가 있습니다. 전체 환경 (VPC, 보안 그룹, EC2 인스턴스, DB 인스턴스, S3 버킷, 클라우드 프런트)은 처음에 AWS 콘솔을 사용하여 수동으로 설정됩니다. 응용 프로그램 서버 호스트 jboss 및 war 파일이 서버에 배포됩니다.AWS의 모범 사례

AWS 모범 사례에 따라 Google은 클라우드 정보를 사용하여 전체 인프라를 만들고 테스트/스테이지/생산성 환경을 설정하고자합니다.

- 하나의 cloudformation 스택/템플릿을 사용하여 위의 모든 구성 요소 (VPC, 보안 그룹, EC2 인스턴스, DB 인스턴스, S3 버킷, 클라우드 프론트 등)를 보유하는 것이 좋습니다. 또는 우리는 1) 네트워크 재배포 된 구성 요소와 2) EC2 관련 구성 요소를 갖는 두 개의 스택을 생성해야합니까?

- 우리는 cloudformation stact로 실행되는 제품을 가지고 있습니다. 미래에 새로운 AMI를 업데이트하려는 경우 중단없이 cloudform을 사용하여 실제 실행중인 EC2 인스턴스를 어떻게 업데이트 할 수 있습니까?

- 새로운 릴리스가 완료 될 때 여러 EC2 노트에 코드를 배포하는 모범 사례/여러 가지 방법은 무엇입니까? 우리는 현재 Contineus 통합을 사용하지 않습니다.

답변

1

설정을 여러 스택으로 분리하는 것이 좋습니다. 한 가지 분명한 이유는 스택에 결국 도달 할 수있는 특정 제한이 있다는 것입니다. 더 실용적인 이유는 새 버전을 배포하기를 원할 때마다 VPC를 업데이트 할 필요가 없다는 것입니다. 일반적으로 네트워크 아키텍처는 자주 변경되지 않습니다. 하나의 거대한 템플릿을 사용하지 않거나 "중요한"템플릿을 불필요하게 변경하는 또 다른 이유는 사용자가 항상 혼란 스러울 위험을 감수해야한다는 것입니다. 템플릿에 오류가 있으며 중요한 리소스를 우연히 (예 : 주석 처리 된) 제거하면 매우 유감입니다. 그래서 깎아 지른주의에서 스택을 분리하는 것은 좋은 생각 일 것입니다.

응용 프로그램을 업데이트하려면 새 AMI로 템플릿을 업데이트하기 만하면 CFN에서 다시 만들거나 업데이트해야 할 내용을 알 수 있습니다. 롤링 업데이트 here에 대해 읽을 수 있습니다. 그러나 Anabilities 또는 Chef와 같은 실제 코드를 배포하는 데 좀 더 간단한 방법을 사용하는 것이 좋습니다.

Docker를 검사하여 응용 프로그램 노드를 패키징하고 배포하는 것이 좋습니다. 매우 편리합니다.