첫 번째 Node.js 스택 생성 - AWS OpsWorks

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

첫 번째 Node.js 스택 생성

중요

이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 수명이 종료되었으며 신규 고객과 기존 고객 모두 사용할 수 없게 되었습니다. 고객은 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션할 것을 강력히 권장합니다. 마이그레이션에 대해 궁금한 점이 있으면 AWS re:Post 또는 Premium AWS Support를 통해 AWS Support 팀에 문의하세요.

이 예제는 Node.js 애플리케이션 서버를 지원하는 Linux 스택을 생성하고 간단한 애플리케이션을 배포하는 방법을 설명합니다. 스택의 구성 요소는 다음과 같습니다.

사전 조건 

이 연습에서는 다음과 같이 가정합니다.

  • AWS 계정이 있고 AWS OpsWorks Stacks 사용 방법에 대한 기본적인 이해가 있어야 합니다.

    AWS OpsWorks Stacks나 AWS를 처음 사용하는 경우 에서 입문 자습서를 완료하여 기본 사항을 알아보십시오. Chef 11 Linux 스택 시작하기

  • Node.js 애플리케이션 구현 방법에 대한 기본적인 이해가 있습니다.

    Node.js가 생소하다면 Node: Up and Running과 같은 입문용 자습서를 완료하여 기본 사항에 대해 알아보십시오.

  • 이 예제를 사용할 AWS 리전에서 이미 하나 이상의 스택이 생성되어 있습니다.

    리전에 첫 번째 스택을 생성하면 AWS OpsWorks 스택은 각 계층 유형에 대해 Amazon Elastic Compute Cloud (Amazon EC2) 보안 그룹을 생성합니다. Amazon RDS 데이터베이스(DB) 인스턴스를 생성하려면 이러한 보안 그룹이 필요합니다. AWS OpsWorks 스택을 처음 사용하는 경우, 의 자습서를 따랐을 때 수행한 것과 동일한 지역을 이 예제에 사용하는 것이 좋습니다. Chef 11 Linux 스택 시작하기 새 리전을 사용하려면 리전에서 새 스택을 생성합니다. 스택이 계층 또는 인스턴스를 포함할 필요는 없습니다. 스택을 생성하자마자 AWS OpsWorks Stacks는 보안 그룹 세트를 지역에 자동으로 추가합니다.

  • 기본 VPC에서 스택을 생성합니다.

    이 연습에서 EC2-Classic을 사용할 수 있지만 일부 세부 내용이 약간 다릅니다. 예를 들어 EC2-Classic에서는 서브넷 대신 인스턴스의 가용 영역(AZ)을 지정합니다.

  • IAM 사용자는 스택에 대한 전체 액세스 권한을 가집니다. AWS OpsWorks

    보안상의 이유로 이 연습에서 계정의 루트 자격 증명은 사용하지 않는 것이 좋습니다. 대신 AWS OpsWorks Stacks의 전체 액세스 권한을 가진 사용자를 생성하고 해당 자격 증명을 Stacks에 사용하십시오. AWS OpsWorks 자세한 정보는 관리 사용자 생성을 참조하세요.

애플리케이션 구형

이 안내에서는 Amazon RDS DB 인스턴스에 연결하고 인스턴스의 데이터베이스를 나열하는 간단한 Express 애플리케이션을 사용합니다.

애플리케이션을 구현하려면 워크스테이션의 편리한 위치에 nodedb라는 디렉터리를 생성하고 다음 세 파일을 이 디렉터리에 추가합니다.

패키지 설명자

애플리케이션의 패키지 설명자를 생성하려면 다음 콘텐츠가 포함된 package.json이라는 파일을 nodedb 디렉터리에 추가합니다. package.json은 Express 애플리케이션에 필요하며 애플리케이션의 루트 디렉터리에 위치해야 합니다.

{ "name": "Nodejs-DB", "description": "Node.js example application", "version": "0.0.1", "dependencies": { "express": "*", "ejs": "*", "mysql": "*" } }

package.json 예제는 최소한으로 구성되어 있습니다. 필수 nameversion 속성을 정의하고 종속 패키지를 나열합니다.

  • expressExpress 패키지를 참조합니다.

  • ejs는 애플리케이션이 텍스트를 HTML 레이아웃 파일에 삽입할 때 사용하는 EJS 패키지를 참조합니다.

  • mysql은 애플리케이션이 RDS 인스턴스에 연결할 때 사용하는 node-mysql 패키지를 참조합니다.

패키지 설명자에 대한 자세한 정보는 package.json 단원을 참조하세요.

레이아웃 파일

애플리케이션의 레이아웃 파일을 생성하려면 views 디렉터리에 nodedb 디렉터리를 추가하고, 콘텐츠가 포함된 views이라는 파일을 index.html에 추가합니다.

<!DOCTYPE html> <html> <head> <title>AWS Opsworks Node.js Example</title> </head> <body> <h1>AWS OpsWorks Node.js Example</h1> <p>Amazon RDS Endpoint: <i><%= hostname %></i></p> <p>User: <i><%= username %></i></p> <p>Password: <i><%= password %></i></p> <p>Port: <i><%= port %></i></p> <p>Database: <i><%= database %></i></p> <p>Connection: <%= connectionerror %></p> <p>Databases: <%= databases %></p> </body> </html>

이 예제에서는 레이아웃 파일이 Amazon RDS로부터의 일부 데이터를 표시하는 간단한 HTML 문서입니다. 각 <%= ... => 요소는 이 다음에 생성할 애플리케이션의 코드 파일에서 정의되는 변수의 값을 나타냅니다.

코드 파일

애플리케이션의 코드 파일을 생성하려면 다음 콘텐츠가 포함된 server.js 파일을 nodedb 디렉터리에 추가합니다.

중요

AWS OpsWorks Stacks를 사용하면 Node.js 애플리케이션의 기본 코드 파일 이름을 server.js 지정하고 애플리케이션의 루트 폴더에 위치해야 합니다.

var express = require('express'); var mysql = require('mysql'); var dbconfig = require('opsworks'); //[1] Include database connection data var app = express(); var outputString = ""; app.engine('html', require('ejs').renderFile); //[2] Get database connection data app.locals.hostname = dbconfig.db['host']; app.locals.username = dbconfig.db['username']; app.locals.password = dbconfig.db['password']; app.locals.port = dbconfig.db['port']; app.locals.database = dbconfig.db['database']; app.locals.connectionerror = 'successful'; app.locals.databases = ''; //[3] Connect to the Amazon RDS instance var connection = mysql.createConnection({ host: dbconfig.db['host'], user: dbconfig.db['username'], password: dbconfig.db['password'], port: dbconfig.db['port'], database: dbconfig.db['database'] }); connection.connect(function(err) { if (err) { app.locals.connectionerror = err.stack; return; } }); // [4] Query the database connection.query('SHOW DATABASES', function (err, results) { if (err) { app.locals.databases = err.stack; } if (results) { for (var i in results) { outputString = outputString + results[i].Database + ', '; } app.locals.databases = outputString.slice(0, outputString.length-2); } }); connection.end(); app.get('/', function(req, res) { res.render('./index.html'); }); app.use(express.static('public')); //[5] Listen for incoming requests app.listen(process.env.PORT);

이 예제는 데이터베이스 연결 정보를 표시하며 데이터베이스 서버에 쿼리하여 서버의 데이터베이스 를 표시합니다. 손쉽게 이를 일반화하여 필요에 따라 데이터베이스와 상호 작용할 수 있습니다. 다음 참고 사항은 이전 코드에서 번호가 매겨진 주석 단원을 참조합니다.

[1] Include database connection data

require 문은 데이터베이스 연결 데이터를 포함시킵니다. 나중에 설명하겠지만, 데이터베이스 인스턴스를 앱에 연결하면 AWS OpsWorks Stacks는 다음과 비슷한 이름의 opsworks.js 파일에 연결 데이터를 저장합니다.

exports.db = { "host":"nodeexample.cdlqlk5uwd0k.us-west-2.rds.amazonaws.com", "database":"nodeexampledb", "port":3306, "username":"opsworksuser", "password":"your_pwd", "reconnect":true, "data_source_provider":"rds", "type":"mysql"}

opsworks.js는 애플리케이션의 shared/config 디렉터리인 /srv/www/app_shortname/shared/config에 있습니다. 하지만 AWS OpsWorks Stacks는 애플리케이션의 루트 디렉터리에 심볼릭 링크를 추가하므로 just를 사용하여 객체를 포함할 수 있습니다. opsworks.js require 'opsworks'

[2] Get database connection data

이 문 세트는 db 객체에서 app.locals 속성 세트로 값을 할당하여 opsworks.js의 연결 데이터를 표시합니다. 각 속성은 index.html 파일 내 <%= ... %> 요소 중 하나에 매핑됩니다. 렌더링된 문서에서는 <%= ... %> 요소가 해당 속성 값으로 바뀝니다.

[3] Connect to the Amazon RDS instance

이 예제는 node-mysql을 사용하여 데이터베이스에 액세스합니다. 데이터베이스에 연결하려면 연결 데이터를 connection에 전달하여 createConnection 객체를 생성한 후 connection.connect를 호출하여 연결을 설정합니다.

[4] Query the database

연결이 설정되면 이 예제가 connection.query를 호출하여 데이터베이스를 쿼리합니다. 이 예제는 단순히 서버의 데이터베이스 이름을 쿼리합니다. query가 데이터베이스 이름이 Database 속성에 할당된 results 객체를 데이터베이스마다 하나씩 반환합니다. 이 예제는 이름을 연결하여 그 결과를 렌더링된 HTML 페이지에 목록을 표시하는 app.locals.databases,에 할당합니다.

이 예제에는 RDS 인스턴스를 생성할 때 지정된 nodeexampledb 데이터베이스와 Amazon RDS가 자동으로 생성한 4개의 데이터베이스 등 5개의 데이터베이스가 있습니다.

[5] Listen for incoming requests

이 마지막 문은 지정된 포트에서 수신 요청을 수신 대기합니다. 명시적 포트 값을 지정할 필요는 없습니다. 앱을 스택에 추가할 때 애플리케이션이 HTTP 또는 HTTPS 요청을 지원하는지 여부를 지정합니다. AWS OpsWorks 그러면 스택은 PORT 환경 변수를 80 (HTTP) 또는 443 (HTTPS) 으로 설정하고 애플리케이션에서 해당 변수를 사용할 수 있습니다.

다른 포트에서도 수신 대기할 수 있지만 Node.js 앱 서버 계층의 내장 보안 그룹인 AWS- OpsWorks -NodeJS-App-Server는 포트 80, 443, 22 (SSH) 로의 인바운드 사용자 트래픽만 허용합니다. 다른 포트로의 인바운드 사용자 트래픽을 허용하려면 적절한 인바운드 규칙을 사용하여 보안 그룹을 생성하고 Node.js 앱 서버 계층에 할당합니다. 내장 보안 그룹을 편집하여 인바운드 규칙을 수정하지 마십시오. 스택을 생성할 때마다 AWS OpsWorks Stacks는 기본 제공 보안 그룹을 표준 설정으로 덮어쓰므로 변경한 내용은 모두 손실됩니다.

참고

연결된 앱을 생성 또는 업데이트할 때 애플리케이션에 사용자 지정 환경 변수를 연결할 수 있습니다. 또한 사용자 지정 JSON과 사용자 지정 레시피를 사용하여 데이터를 애플리케이션으로 전달할 수도 있습니다. 자세한 내용은 애플리케이션으로 데이터 전달 섹션을 참조하세요.

데이터베이스 서버 및 로드 밸런서 생성

이 예제는 Amazon RDS 데이터베이스 서버 및 Elastic Load Balancing 로드 밸런서 인스턴스를 사용합니다. 각 인스턴스를 별도로 생성한 후 스택으로 가져와야 합니다. 이 섹션에서는 새 데이터베이스 및 로드 밸런서 인스턴스를 생성하는 방법을 설명합니다. 기존 인스턴스를 대신 사용할 수 있지만 인스턴스를 올바로 구성할 수 있도록 절차를 끝까지 읽는 것이 좋습니다.

다음 절차는 이 예제에는 충분한, 최소한으로 구성된 RDS DB 인스턴스를 생성하는 방법을 설명합니다. 자세한 내용은 Amazon RDS 사용 설명서를 참조하세요.

RDS DB 인스턴스를 생성하려면
  1. 콘솔을 엽니다.

    Amazon RDS 콘솔을 열고 지역을 미국 서부(오레곤)로 설정합니다. 탐색 창에서 [RDS 대시보드]를 선택한 다음 [DB 인스턴스 시작]을 선택합니다.

  2. 데이터베이스 엔진을 지정합니다.

    데이터베이스 엔진으로 [MySQL 커뮤니티 에디션]을 선택합니다.

  3. 다중 AZ 배포를 거부합니다.

    [아니요, 이 인스턴스...]를 선택한 다음, [다음]을 선택합니다. 이 예제에는 다중 AZ 배포가 필요 없습니다.

  4. 기본 설정을 구성합니다.

    [DB 인스턴스 세부 정보] 페이지에서 다음 설정을 지정합니다.

    • [DB 인스턴스 클래스]: [db.t2.micro]

    • [다중 AZ 배포]: [No]

    • 할당된 스토리지: 5 GB

    • DB 인스턴스 식별자: nodeexample

    • 마스터 사용자 이름: opsworksuser.

    • Master Password:: 선택한 암호

    나중에 사용하기 위해 인스턴스 식별자, 사용자 이름 및 암호를 적어 두고 다른 옵션에 대해서는 기본 설정을 수락한 다음 [다음]을 선택합니다.

  5. 고급 설정을 구성합니다.

    [고급 설정 구성] 페이지에서 다음 설정을 지정합니다.

    • 데이터베이스 이름: nodeexampledb

    • DB 보안 그룹: AWS- OpsWorks -DB-마스터-서버

    참고

    AWS- OpsWorks -DB-Master-Server 보안 그룹은 스택의 인스턴스만 데이터베이스에 액세스할 수 있도록 허용합니다. 데이터베이스에 직접 액세스하려면 적절한 인바운드 규칙을 사용하여 RDS DB 인스턴스에 추가 보안 그룹을 연결합니다. 자세한 내용은 Amazon RDS 보안 그룹을 참조하세요. 또한 VPC에 인스턴스를 배치하여 액세스를 제어할 수도 있습니다. 자세한 내용은 VPC에서 스택 실행 섹션을 참조하세요.

    나중에 사용하기 위해 데이터베이스 이름을 적어 두고 다른 설정에 대해서는 기본값을 수락한 다음 [DB 인스턴스 시작]을 선택합니다.

다음 절차는 이 예제를 위한 Elastic Load Balancing 로드 밸런서를 생성하는 방법을 설명합니다. 자세한 내용은 Elastic Load Balancing 사용 설명서를 참조하세요.

로드 밸런서를 생성하려면
  1. Amazon EC2 콘솔을 엽니다.

    Amazon EC2 콘솔을 열고 리전이 미국 서부(오레곤)로 설정되어 있는지 확인합니다. 탐색 창에서 [로드 밸런서]를 선택한 다음 [로드 밸런서 만들기]를 선택합니다.

  2. 로드 밸런서를 정의합니다.

    [로드 밸런서 정의] 페이지에서 다음 설정을 지정하세요.

    • 명칭Node-LB

    • LB 내부 생성내 기본 VPC

    다른 옵션에 대해서는 기본 설정을 수락하고 [다음]을 선택합니다.

  3. 보안 그룹을 할당합니다.

    [보안 그룹 할당] 페이지에서 다음 그룹을 지정합니다.

    • 기본 VPC 보안 그룹

    • AWS - - 노드 OpsWorks JS - 앱 서버

    다음을 선택합니다. [보안 설정 구성] 페이지에서 [다음]을 선택합니다. 이 예제에는 보안 리스너가 필요 없습니다.

  4. 상태 확인을 구성합니다.

    상태 확인 구성 페이지에서 Ping 경로/로 설정하고 다른 설정에 대해서는 기본값을 수락합니다. 다음을 선택합니다. [EC2 인스턴스 추가] 페이지에서 [다음]을 선택합니다. [태그 추가] 페이지에서 [검토 및 생성] 을 선택합니다. AWS OpsWorks 스택은 로드 밸런서에 EC2 인스턴스를 추가하는 작업을 처리하며, 이 예제에서는 태그가 필요하지 않습니다.

  5. 로드 밸런서를 생성합니다.

    [검토] 페이지에서 [만들기]를 선택하여 로드 밸런서를 생성합니다.

스택 생성

이제 스택을 생성하는 데 필요한 모든 구성 요소가 준비되었습니다.

스택을 생성하는 방법
  1. Stacks 콘솔에 AWS OpsWorks 로그인합니다.

    AWS OpsWorks Stacks 콘솔에 로그인한 다음 스택 추가를 선택합니다.

  2. 스택을 생성합니다.

    새 스택을 생성하려면 [Chef 11 스택]을 선택하고 다음 설정을 지정합니다.

    • NodeStack

    • 리전미국 서부(오레곤)

      스택은 모든 AWS 리전에서 생성할 수 있지만 자습서의 경우 미국 서부(오레곤)를 선택하는 것이 좋습니다.

    [스택 추가]를 선택합니다. 스택 구성 설정에 대한 자세한 정보는 새 스택 생성 단원을 참조하세요.

  3. 연결된 로드 밸런서와 함께 Node.js 앱 서버 계층을 추가합니다.

    NodeStack페이지에서 레이어 추가를 선택하고 다음 설정을 지정합니다.

    • 계층 유형Node.js 앱 서버

    • 탄력적 로드 밸런서 - 노드-LB

    다른 설정에 대해서는 기본값을 수락하고 [계층 추가]를 선택합니다.

  4. 인스턴스를 계층에 추가하고 시작합니다.

    탐색 창에서 [인스턴스]를 선택하고 다음과 같이 Rails 앱 서버 계층에 인스턴스 2개를 추가합니다.

    1. Node.js 앱 서버에서 인스턴스 추가를 선택합니다.

      [크기]를 [t2.micro]로 설정하고, 다른 설정에 대해서는 기본값을 수락하고 [인스턴스 추가]를 선택합니다.

    2. [+인스턴스]를 선택한 다음 두 번째 t2.micro 인스턴스를 다른 서브넷의 계층에 추가합니다.

      이렇게 하면 해당 인스턴스가 다른 AZ(가용 영역)에 배치됩니다.

    3. [인스턴스 추가]를 선택합니다.

    4. 두 인스턴스를 모두 시작하려면 [모든 인스턴스 시작]을 선택합니다.

    이 계층에 Elastic Load Balancing 로드 밸런서를 할당했습니다. 인스턴스가 온라인 상태로 전환되거나 온라인 상태가 되면 AWS OpsWorks Stacks는 인스턴스를 로드 밸런서에 자동으로 등록 또는 등록 취소합니다.

    참고

    프로덕션 스택의 경우 다중 AZ에 애플리케이션 서버 인스턴스를 배포하는 것이 좋습니다. 사용자가 AZ에 연결할 수 없는 경우 로드 밸런서가 나머지 영역의 인스턴스로 수신 트래픽을 라우트하므로 사이트가 계속해서 작동합니다.

  5. 스택에 RDS DB 인스턴스를 등록합니다.

    탐색 창에서 [리소스]를 선택하고 다음과 같이 스택에 RDS DB 인스턴스를 등록합니다.

    1. [RDS] 탭을 선택한 다음 [미등록 RDS DB 표시] 인스턴스를 선택합니다.

    2. [nodeexampledb] 인스턴스를 선택하고 다음 설정을 지정합니다.

      • 사용자 - 인스턴스를 생성할 때 지정한 마스터 사용자 이름입니다(이 예제에서는). opsworksuser.

      • 암호 - 인스턴스를 생성할 때 지정한 마스터 암호입니다.

    3. 스택에 등록을 선택하여 스택에 RDS DB 인스턴스를 Amazon RDS 서비스 계층으로 추가합니다.

    주의

    AWS OpsWorks Stacks는 사용자 또는 암호 값을 검증하지 않고 애플리케이션에 전달하기만 합니다. 이러한 값을 잘못 입력하면 애플리케이션이 데이터베이스에 연결할 수 없습니다.

    스택에 등록을 선택하여 스택에 RDS DB 인스턴스를 Amazon RDS 서비스 계층으로 추가합니다.

애플리케이션 배포

애플리케이션은 원격 리포지토리에 저장해야 합니다. 배포할 때 AWS OpsWorks Stacks는 리포지토리의 코드 및 관련 파일을 애플리케이션 서버 인스턴스에 배포합니다. 편의를 위해 이 예제는 리포지토리로 퍼블릭 Amazon Simple Storage Service(S3) 아카이브를 사용하지만, Git 및 하위 버전을 비롯해 다수의 다른 리포지토리 유형을 사용할 수 있습니다. 자세한 내용은 애플리케이션 소스 섹션을 참조하세요.

애플리케이션을 배포하려면
  1. 애플리케이션을 아카이브 파일에 패키지로 포함합니다.

    .zip 디렉터리와 하위 디렉터리 nodedb.zip의 nodedb 아카이브를 생성합니다. 또한 gzip, bzip2 및 tarball을 비롯하여 다른 아카이브 파일 유형을 사용할 수도 있습니다. 참고로 AWS OpsWorks 스택은 압축되지 않은 타르볼을 지원하지 않습니다. 자세한 정보는 애플리케이션 소스을 참조하세요.

  2. Amazon S3로 아카이브 파일을 업로드합니다.

    nodedb.zip을 Amazon S3 버킷에 업로드하고, 이 파일을 퍼블릭으로 지정한 다음 나중에 사용하기 위해 파일의 URL을 복사해 둡니다. 버킷 생성 및 파일 업로드 방법에 대한 자세한 내용은 Amazon Simple Storage Service 시작하기를 참조하세요.

    참고

    AWS OpsWorks 스택은 Amazon S3 버킷에서 프라이빗 파일을 배포할 수도 있지만, 단순화를 위해 이 예제에서는 공개 파일을 사용합니다. 자세한 정보는 애플리케이션 소스을 참조하세요.

  3. AWS OpsWorks 스택 앱을 생성하십시오.

    AWS OpsWorks Stacks 콘솔로 돌아가서 탐색 창에서 앱을 선택한 다음 추가를 선택합니다. 다음 설정을 지정합니다.

    • 이름NodeDB.

      이 문자열은 앱의 표시 이름입니다. 대부분의 경우 앱의 짧은 이름이 필요합니다. AWS OpsWorks Stacks는 모든 문자를 소문자로 변환하고 구두점을 제거하여 표시 이름에서 이 짧은 이름을 생성합니다. 이 예제에서 짧은 이름은 nodedb입니다. 앱을 생성한 후 앱의 짧은 이름을 확인하려면 [] 페이지에서 앱을 선택하여 앱의 세부 정보 페이지를 표시합니다.

    • 유형Node.js.

    • 데이터 소스 유형RDS.

    • 데이터베이스 인스턴스 - 앞서 등록한 Amazon RDS DB 인스턴스를 선택합니다.

    • 데이터베이스 이름 - 앞서 생성한 데이터베이스 이름을 지정합니다. 이 예제에서는 nodeexampledb입니다.

    • 리포지토리 유형Http Archive.

      이 리포지토리 유형은 퍼블릭 Amazon S3 파일에 사용해야 합니다. S3 Archive 유형은 프라이빗 아카이브에만 사용됩니다.

    • 리포지토리 URL - 아카이브 파일의 Amazon S3 URL.

    나머지 설정에 대해서는 기본값을 사용하고 [앱 추가]를 클릭하여 앱을 생성합니다.

  4. 앱을 배포합니다.

    페이지로 이동한 다음 NodeDB 앱의 작업 열에서 배포를 선택합니다. 그런 다음 Deploy를 선택하여 앱을 서버 인스턴스에 배포합니다. AWS OpsWorks Stacks는 각 인스턴스에서 배포 레시피를 실행하여 리포지토리에서 애플리케이션을 다운로드하고 서버를 다시 시작합니다. 각 인스턴스에 녹색 확인 표시가 나타나고 [상태]가 [성공]이면 배포가 완료되고 애플리케이션이 요청 처리를 시작할 준비가 된 것입니다.

    참고

    배포에 실패한 경우 로그 열에서 표시를 선택하여 배포의 Chef 로그를 표시합니다. 맨 아래 근처에 오류 정보가 표시되어 있습니다.

  5. 애플리케이션을 엽니다.

    애플리케이션을 열려면 [계층]를 선택하고 로드 밸런서를 선택한 다음 로드 밸런서의 DNS 이름을 선택합니다. 그러면 로드 밸런서로 HTTP 요청이 전송됩니다. 다음과 같은 내용이 표시되어야 합니다.

참고

AWS OpsWorks Stacks는 설정 중에 새 인스턴스에 앱을 자동으로 배포합니다. 수동 배포는 온라인 인스턴스에서만 필요합니다. 자세한 내용은 앱 배포 섹션을 참조하세요. 보다 복잡한 배포 전략을 비롯해 배포에 대한 전반적인 설명은 앱과 쿡북의 관리 및 배포 단원을 참조하세요.

다음 단계

중요

이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 수명이 종료되었으며 신규 및 기존 고객 모두 사용할 수 없습니다. 고객은 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션할 것을 강력히 권장합니다. 마이그레이션에 대해 궁금한 점이 있으면 AWS re:Post 또는 Premium AWS Support를 통해 AWS Support 팀에 문의하세요.

이 연습에서는 간단한 Node.js 애플리케이션 서버 스택을 설정하는 기본 사항을 살펴보았습니다. 아래는 다음 단계에 대한 몇 가지 제안입니다.

Node.js 내장 쿡북 살펴보기

인스턴스가 어떻게 구성되어 있는지 자세히 알아보려면 Stacks가 소프트웨어를 설치하고 구성하는 데 사용하는 레시피와 관련 파일이 들어 있는 레이어의 내장 쿡북인 opsworks_nodejs와 AWS OpsWorks Stacks가 앱을 배포하는 데 사용하는 레시피가 포함된 내장 배포 쿡북을 참조하십시오. AWS OpsWorks

서버 구성 사용자 지정

이 예제 스택은 매우 기본적입니다. 프로덕션용으로 사용하려면 스택을 사용자 지정해야 할 것입니다. 자세한 내용은 스택 사용자 지정 AWS OpsWorks 섹션을 참조하세요.

SSL 지원을 추가

앱에 SSL 지원을 활성화하고 앱을 생성할 때 Stacks에 적절한 인증서를 제공할 AWS OpsWorks 수 있습니다. AWS OpsWorks 그러면 스택이 인증서를 적절한 디렉터리에 설치합니다. 자세한 정보는 SSL 사용을 참조하세요.

인 메모리 데이터 캐싱을 추가

프로덕션 수준 사이트에서 Redis 또는 Memcache와 같은 인 메모리 키-값 저장소에 데이터를 캐시하여 성능을 개선하는 경우가 종종 있습니다. 둘 중 하나를 AWS OpsWorks 스택 스택과 함께 사용할 수 있습니다. 자세한 내용은 ElastiCache RedisMemcached 섹션을 참조하세요.

보다 복잡한 배포 전략을 사용

이 예제에서는 모든 인스턴스를 동시에 업데이트하는 간단한 앱 배포 전략을 사용했습니다. 이 접근 방식은 간단하고 빠르지만 오류의 여지가 없습니다. 배포가 실패하거나 업데이트에 문제가 있을 경우 프로덕션 스택의 모든 인스턴스가 영향을 받을 수 있으므로 문제를 해결할 때까지는 사이트가 중단 또는 비활성화될 수 있습니다. 배포 전략에 대한 자세한 정보는 앱과 쿡북의 관리 및 배포 단원을 참조하세요.

Node.js 앱 서버 계층을 확장하세요.

다양한 방법으로 계층을 확장할 수 있습니다. 예를 들어 인스턴스에서 스크립트를 실행하는 레시피를 구현하거나 앱 배포를 사용자 지정하기 위한 Chef 배포 후크를 구현할 수 있습니다. 자세한 내용은 계층 확장 섹션을 참조하세요.

환경 변수를 정의

연결된 앱의 환경 변수를 정의하여 애플리케이션에 데이터를 전달할 수 있습니다. 앱을 배포할 때 AWS OpsWorks Stacks는 해당 변수를 내보내 앱에서 액세스할 수 있도록 합니다. 자세한 정보는 환경 변수 사용을 참조하세요.