AWS OpsWorks 스택 - AWS OpsWorks

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS OpsWorks 스택

클라우드 기반 컴퓨팅에는 일반적으로 Amazon EC2 인스턴스와 Amazon Relational Database Service(RDS) 인스턴스 같은 AWS 리소스 그룹이 필요하며, 이들은 집단적으로 생성하고 관리해야 합니다. 예를 들어 웹 애플리케이션에는 일반적으로 애플리케이션 서버, 데이터베이스 서버, 로드 밸런서 등등이 필요합니다. 이 인스턴스 그룹을 보통 스택이라고 하는데, 간단한 애플리케이션 서버 스택은 다음과 같이 보입니다.

인스턴스를 생성하고 필요한 패키지를 설치하는 것 외에도 일반적으로 애플리케이션 서버에 애플리케이션 분산, 스택 성능 모니터링, 보안 및 권한 관리 등을 수행할 방법이 필요합니다.

AWS OpsWorks Stacks는 스택과 애플리케이션을 생성 및 관리할 수 있는 간단하고 유연한 방법입니다.

다음은 AWS OpsWorks Stacks의 기본적인 애플리케이션 서버 스택의 모습으로서 Elastic Load Balancing 로드 밸런서 뒤에서 실행되는 애플리케이션 서버 그룹과 백엔드 Amazon RDS 데이터베이스 서버로 구성됩니다.

이 스택은 비교적 단순하지만 AWS OpsWorks Stacks의 모든 주요 기능을 보여 줍니다. 이 기능들이 조합되는 방식은 다음과 같습니다.

스택

스택은 핵심 AWS OpsWorks Stacks 구성 요소입니다. 스택이란 기본적으로 공통의 목적이 있고 논리적으로 함께 관리해야 하는 AWS 리소스(Amazon EC2 인스턴스, Amazon RDS 데이터베이스 인스턴스 등)의 컨테이너입니다. 스택은 이러한 리소스를 그룹으로 관리하는 데 도움이 되며, 인스턴스의 운영 체제와 AWS 리전 같은 일부 기본적인 구성 설정도 정의합니다. 일부 스택 구성 요소를 직접적인 사용자 상호 작용에서 격리하려면 스택을 VPC에서 실행하면 됩니다.

계층

하나 이상의 계층을 추가하여 스택의 구성 요소를 정의합니다. 계층은 애플리케이션에 서비스하거나 데이터베이스 서버를 호스팅하는 등 특정 목적에 사용되는 Amazon EC2 인스턴스 집합을 나타냅니다.

패키지의 기본 구성을 수정하고 추가 패키지 설치 등등의 작업을 수행하는 Chef 레시피를 추가하여 계층을 사용자 지정하거나 확장할 수 있습니다.

모든 스택의 경우, AWS OpsWorks Stacks에는 다음의 AWS 서비스를 나타내는 서비스 계층이 포함됩니다.

  • Amazon Relational Database Service

  • Elastic Load Balancing

  • Amazon Elastic Container Service

계층을 통해 어떤 패키지가 설치되고, 어떻게 패키지를 구성하며, 애플리케이션이 어떻게 배포되는지 등을 완전히 제어할 수 있습니다.

레시피 및 수명 주기 이벤트

계층은 인스턴스에 패키지 설치, 앱 배포, 스크립트 실행 등의 작업을 처리하기 위해 Chef 레시피에 의존합니다. AWS OpsWorks Stacks의 주요 기능 중 하나는 각 인스턴스에서 적절한 시간에 지정된 레시피 집합을 자동으로 실행하는 Setup, Configure, Deploy, Undeploy, Shutdown 등의 수명 주기 이벤트 집합입니다.

각 계층에는 각각의 수명 주기 이벤트에 할당되어 해당 이벤트와 계층을 위해 다양한 작업을 처리하는 레시피 집합이 있을 수 있습니다. 예를 들어 웹 서버 계층에 속하는 인스턴스가 부팅을 완료한 후에 AWS OpsWorks Stacks는 다음을 수행합니다.

  1. 웹 서버 설치 및 구성과 같은 작업을 수행할 수 있는 계층의 Setup 레시피를 실행합니다.

  2. 리포지토리에서 인스턴스로 계층의 애플리케이션을 배포하고 서비스 재시작 같은 관련 작업을 수행하는 계층의 Deploy 레시피를 실행합니다.

  3. 각 인스턴스가 필요에 따라 구성을 조정해 새 인스턴스를 수용할 수 있도록 스택의 모든 인스턴스에서 Configure 레시피를 실행합니다.

    예를 들어 로드 밸런서를 실행하는 인스턴스에서 Configure 레시피는 로드 밸런서의 구성을 수정하여 새 인스턴스를 포함시킬 수 있습니다.

인스턴스가 여러 계층에 속하는 경우, AWS OpsWorks Stacks는 각 계층에 대해 레시피를 실행하므로 예컨대 PHP 애플리케이션 서버와 MySQL 데이터베이스 서버를 지원하는 인스턴스를 둘 수 있습니다.

레시피를 구현한 경우, 각 레시피를 적절한 계층과 이벤트에 할당할 수 있습니다. 그러면 AWS OpsWorks Stacks가 적절한 시간에 자동으로 레시피를 실행합니다. 레시피는 언제든지 수동으로 실행할 수도 있습니다.

인스턴스

인스턴스는 Amazon EC2 인스턴스와 같은 단일 컴퓨팅 리소스를 나타냅니다. 인스턴스는 운영 체제와 크기 같은 리소스의 기본적 구성을 정의합니다. 탄력적 IP 주소 또는 Amazon EBS 볼륨 등 그 밖의 구성 설정은 인스턴스의 계층에 의해 정의됩니다. 계층의 레시피는 패키지 설치 및 구성, 앱 배포와 같은 작업을 수행하여 구성을 완료합니다.

AWS OpsWorks Stacks를 사용하여 인스턴스를 생성하고 인스턴스를 계층에 연결할 수 있습니다. 인스턴스를 시작할 때 AWS OpsWorks Stacks는 인스턴스와 그 계층에 의해 지정된 구성 설정을 사용하여 Amazon EC2 인스턴스를 시작합니다. Amazon EC2 인스턴스 부팅이 완료된 후 AWS OpsWorks Stacks는 인스턴스와 서비스 간 통신을 처리하고 수명 주기 이벤트에 응답하여 적절한 레시피를 실행하는 에이전트를 설치합니다.

AWS OpsWorks Stacks는 시작 및 중지 방식으로 특징지어지는 다음과 같은 인스턴스 유형을 지원합니다.

  • 24/7 인스턴스는 수동으로 시작되며 중지할 때까지 실행됩니다.

  • 시간 기반 인스턴스는 지정된 일간 및 주간 일정에 따라 AWS OpsWorks Stacks에 의해 실행됩니다.

    이 인스턴스를 통해 스택은 자동으로 인스턴스를 조정하여 예측 가능한 사용 패턴을 수용할 수 있습니다.

  • 로드 기반 인스턴스는 CPU 사용률 같은 지정된 로드 측정치를 기반으로 AWS OpsWorks Stacks에 의해 자동으로 시작되고 중지됩니다.

    이 인스턴스를 통해 스택은 자동으로 인스턴스 수를 조정하여 수신 트래픽의 변동을 수용할 수 있습니다. 로드 기반 인스턴스는 Linux 기반 스택에서만 사용할 수 있습니다.

AWS OpsWorks Stacks는 인스턴스 자동 복구를 지원합니다. 에이전트와 서비스의 통신이 중지되면 AWS OpsWorks Stacks는 인스턴스를 자동으로 중지하고 다시 시작합니다.

AWS OpsWorks Stacks 외부에서 생성된 스택에 Linux 기반 컴퓨팅 리소스를 통합할 수도 있습니다.

  • Amazon EC2 콘솔, CLI 또는 API를 사용하여 직접 생성한 Amazon EC2 인스턴스.

  • 가상 머신에서 실행되는 인스턴스를 비롯하여 자체 하드웨어에서 실행되는 온프레미스 인스턴스.

이러한 인스턴스 중 하나를 등록한 후에는 이 인스턴스가 AWS OpsWorks Stacks 인스턴스가 되며, AWS OpsWorks Stacks를 사용하여 생성한 인스턴스와 비슷한 방법으로 관리할 수 있습니다.

애플리케이션과 관련 파일은 Amazon S3 버킷과 같은 리포지토리에 저장합니다. 각각의 애플리케이션은 애플리케이션 유형을 지정하고 리포지토리에서 인스턴스로 애플리케이션을 배포하는 데 필요한 정보(예: 리포지토리 URL 및 암호)가 포함된 으로 표시됩니다. 앱을 배포하면 AWS OpsWorks Stacks는 스택의 인스턴스에서 Deploy 레시피를 실행하는 Deploy 이벤트를 트리거합니다.

앱은 다음 방법으로 배포할 수 있습니다.

  • 자동 - 인스턴스를 시작할 때 AWS OpsWorks Stacks가 자동으로 인스턴스의 Deploy 레시피를 실행합니다.

  • 수동 - 새 앱이 있거나 기존 앱을 업데이트하려는 경우, 수동으로 온라인 인스턴스의 Deploy 레시피를 실행할 수 있습니다.

일반적으로는 AWS OpsWorks Stacks가 전체 스택에서 Deploy 레시피를 실행하도록 하십시오. 그러면 다른 계층의 인스턴스가 구성을 적절히 수정할 수 있습니다. 하지만 예컨대 새 앱을 모든 앱 서버 인스턴스에 배포하기 전에 테스트하려는 경우, 인스턴스의 하위 집합으로 배포를 제한할 수 있습니다.

스택 사용자 지정

AWS OpsWorks Stacks는 특정 요구 사항을 충족하도록 계층을 사용자 지정하는 다양한 방법을 제공합니다.

  • 다양한 구성 설정을 나타내는 속성을 재정의하거나 심지어 구성 파일 생성에 사용되는 템플릿을 재정의하여 AWS OpsWorks Stacks가 패키지를 구성하는 방법을 수정할 수 있습니다.

  • 자체 레시피를 제공하여 스크립트 실행이나 비표준 패키지 설치 및 구성과 같은 작업을 수행하도록 기존 계층을 확장할 수 있습니다.

모든 스택에는 최소한의 레시피 집합으로만 시작하는 하나 이상의 계층이 포함될 수 있습니다. 패키지 설치, 앱 배포 등의 작업을 처리하도록 레시피를 구현하여 계층에 기능을 추가합니다. 사용자 지정 레시피와 관련 파일을 하나 이상의 쿡북에 패키징하고 Amazon S3 또는 Git 같은 리포지토리에 쿡북을 저장합니다.

수동으로 레시피를 실행할 수도 있지만 AWS OpsWorks Stacks는 다음 다섯 가지 수명 주기 이벤트를 지원하므로 이 프로세스를 자동화할 수 있습니다.

  • Setup은 새 인스턴스가 성공적으로 부팅된 후 새 인스턴스에서 발생합니다.

  • Configure는 인스턴스가 온라인 상태에 진입하거나 온라인 상태에서 나갈 때 스택의 모든 인스턴스에서 발생합니다.

  • Deploy는 앱을 배포할 때 발생합니다.

  • Undeploy는 앱을 삭제할 때 발생합니다.

  • Shutdown은 인스턴스를 중지할 때 발생합니다.

각 계층에서 각 이벤트에 할당할 수 있는 레시피의 수에는 제한이 없습니다. 계층의 인스턴스에서 수명 주기 이벤트가 발생하면 AWS OpsWorks Stacks는 연결된 레시피를 실행합니다. 예를 들어 앱 서버 인스턴스에서 Deploy 이벤트가 발생하면 AWS OpsWorks Stacks는 계층의 Deploy 레시피를 실행하여 앱을 다운로드하거나 관련 작업을 수행합니다.

리소스 관리

탄력적 IP 주소와 같은 다른 AWS 리소스를 스택에 통합할 수 있습니다. AWS OpsWorks Stacks 콘솔 또는 API를 사용하여 리소스를 스택에 등록하고, 등록된 리소스를 인스턴스에 추가하거나 인스턴스에서 분리하고, 한 인스턴스에서 다른 인스턴스로 리소스를 이동할 수 있습니다.

보안 및 권한

AWS OpsWorks 스택은 AWS Identity and Access Management(IAM)과 통합되어 다음을 비롯한 사용자들의 AWS OpsWorks Stacks 액세스 방식을 제어하는 강력한 방법을 제공합니다.

  • 계층과 인스턴스 같은 스택 리소스를 생성할 수 있는지 여부 혹은 SSH나 RDP를 사용하여 스택의 Amazon EC2 인스턴스에 연결할 수 있는지 여부 등 개별 사용자가 각 스택과 상호 작용할 수 있는 방법.

  • AWS OpsWorks Stacks가 사용자를 대신하여 Amazon EC2 인스턴스 같은 AWS 리소스와 상호 작용할 수 있는 방법.

  • AWS OpsWorks Stacks 인스턴스에서 실행되는 앱이 Amazon S3 버킷 같은 AWS 리소스에 액세스할 수 있는 방법.

  • 사용자의 퍼블릭 SSH 키와 RDP 암호를 관리하고 인스턴스에 연결하는 방법.

모니터링 및 로깅

AWS OpsWorks Stacks는 스택을 모니터링하고 스택과 레시피 문제 해결에 도움이 되는 몇 가지 기능을 제공합니다. 모든 스택:

  • AWS OpsWorks Stacks가 제공하는 Linux 스택용 사용자 지정 CloudWatch 측정치 세트는 사용자의 편의를 위해 모니터링 페이지에 요약되어 있습니다.

    AWS OpsWorks Stacks는 Windows 스택용 표준 CloudWatch 측정치를 지원합니다. 측정치는 CloudWatch 콘솔로 모니터링할 수 있습니다.

  • AWS 계정에서 AWS OpsWorks Stacks가 수행하거나 이를 대신하여 이루어지는 API 호출을 기록하는 CloudTrail 로그.

  • 스택에서 모든 이벤트를 나열하는 이벤트 로그.

  • 어떤 레시피가 실행되었고 어떤 오류가 발생했는지 등 각 인스턴스에서 각 수명 주기에 무엇이 발생했는지 상세히 기록하는 Chef 로그.

Linux 기반 스택에는 스택의 인스턴스에 대한 세부 모니터링 데이터를 수집하고 표시하는 데 사용할 수 있는 Ganglia master 계층도 포함될 수 있습니다.

CLI, SDK 및 AWS CloudFormation 템플릿

콘솔 외에도 AWS OpsWorks Stacks는 작업 수행에 사용할 수 있는 여러 언어의 명령줄 인터페이스(CLI)와 SDK도 지원합니다. 다음 기능을 고려하십시오.

  • AWS OpsWorks Stacks CLI는 AWS CLI의 일부이며, 명령줄에서 어떤 작업이든 수행하는 데 사용할 수 있습니다.

    AWS CLI는 여러 AWS 서비스를 지원하며, Windows, Linux 또는 OS X 시스템에 설치할 수 있습니다.

  • AWS OpsWorks Stacks는 Windows PowerShell용 AWS 도구에 포함되며, Windows PowerShell 명령줄에서 어떤 작업이든 수행하는 데 사용할 수 있습니다.

  • AWS OpsWorks Stacks SDK는 AWS SDK에 포함되며, Java, JavaScript(브라우저 기반 및 Node.js), .NET, PHP, Python(boto) 또는 Ruby로 구현된 애플리케이션이 사용할 수 있습니다.

또한 AWS CloudFormation 템플릿을 사용하여 스택을 프로비저닝할 수도 있습니다. 몇 가지 예제는 AWS OpsWorks 조각을 참조하십시오.