App Engine 가변형 환경에서 Rails 5 실행

App Engine 가변형 환경에서 실행되는 Ruby on Rails 앱 개발을 시작합니다. 개발한 앱은 모든 Google 제품과 동일한 인프라에서 실행되므로 사용자 수에 관계없이 모든 사용자에게 서비스를 제공하도록 확장할 수 있습니다.

이 가이드는 Rails 웹 개발에 익숙한 개발자를 대상으로 하며, 새로운 Rails 앱을 배포하는 과정을 설명합니다.

이 튜토리얼에는 Ruby 2.6 또는 2.7이 필요합니다.

시작하기 전에

  1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  2. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  3. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  4. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  5. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  6. Google Cloud CLI를 설치합니다.
  7. gcloud CLI를 초기화하려면 다음 명령어를 실행합니다.

    gcloud init

Rails용 로컬 환경 설정

Rails 개발을 위해 로컬 환경을 설정하려면 다음이 필요합니다.

  1. Ruby 버전 2.6 또는 2.7 설치

  2. Rails 5 gem 설치

  3. Bundler gem을 설치합니다.

Ruby, Rails, Google Cloud CLI가 사전 설치된 상태로 제공되는 Cloud Shell을 사용해도 됩니다.

Rails와 해당 종속 항목 설치에 대한 자세한 내용은 공식 Rails 시작하기 가이드를 참조하세요.

기본 요건을 완료한 후 Rails 앱을 만들고 배포할 수 있습니다. 다음 섹션에서는 앱 구성, 실행, 배포를 안내합니다.

새 앱 만들기

  1. 새로운 Rails 샘플 앱을 만듭니다.

    rails new appengine_example
    
  2. 샘플 코드가 있는 디렉토리로 이동합니다.

    cd appengine_example
    

로컬에서 앱 실행

로컬 컴퓨터에서 새로운 Rails 앱을 실행하려면 다음 단계를 따르세요.

  1. Bundler를 사용하여 종속 항목을 설치합니다.

     bundle install
    
  2. 로컬 웹 서버를 시작합니다.

     bundle exec rails server
    
  3. 브라우저에서 http://localhost:3000/으로 이동합니다.

샘플 앱의 'Yay! You’re on Rails!' 메시지가 페이지에 표시된 샘플 앱에 나타납니다.

실행 중인 새로운 Rails 앱의 스크린샷

간단한 페이지 추가

이제 생성된 Rails 앱에 시작 페이지를 추가합니다.

  1. 새 페이지의 스캐폴딩을 생성하려면 index 작업으로 WelcomeController라는 새 Rails 컨트롤러를 만듭니다.

    bundle exec rails generate controller Welcome index
    
  2. app/views/welcome/index.html.erb 파일을 열어 다음 상용구 HTML을 확인합니다.

    <h1>Welcome#index</h1>
    <p>Find me in app/views/welcome/index.html.erb</p>
  3. 원하는 대로 파일을 수정합니다. 예를 들어, 다음 콘텐츠를 사용할 수 있습니다.

    <h1>Welcome</h1>
    <p>This is a home page for a new Rails App on Google Cloud Platform!</p>
  4. index 컨트롤러 작업을 Rails의 루트 작업으로 설정합니다. 그러면 사용자가 Rails 앱에 방문할 때마다 시작 페이지가 표시됩니다.

  5. config/routes.rb 파일을 열어 다음과 같이 생성된 콘텐츠를 확인합니다.

    Rails.application.routes.draw do
      get 'welcome/index'
    
      # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
    end
  6. 이 파일을 수정하려면 root 'welcome#index'를 추가합니다.

    Rails.application.routes.draw do
      get 'welcome/index'
    
      # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
      root 'welcome#index'
    end
  7. 파일을 저장하고 닫습니다. 이전과 동일한 방법으로 Rails 앱을 테스트합니다.

App Engine 가변형 환경에 앱 배포

App Engine 가변형 환경에서는 app.yaml이라는 파일을 사용합니다. 앱의 배포 구성을 설명합니다. 이 파일이 없으면 gcloud CLI에서 배포 구성을 추측합니다. 그러나 프로덕션 환경에서 Rails에는 비밀번호 키가 필요하므로, 이 파일을 제공하는 것이 좋습니다.

App Engine에 배포할 샘플 앱을 구성하려면 샘플 앱 디렉터리의 루트에 app.yaml이라는 새 파일을 만들고 다음을 추가합니다.

entrypoint: bundle exec rackup --port $PORT
env: flex
runtime: ruby

Rails 비밀번호 키 구성

프로덕션 환경에서 Rails 앱을 배포하는 경우, 환경 변수 SECRET_KEY_BASE를 사용자 세션 데이터를 보호하는 데 사용되는 보안 비밀 키로 설정합니다. 이 환경 변수는 config/secrets.yml 파일에서 읽혀집니다.

  1. 새 비밀번호 키를 생성합니다.

    bundle exec rails secret
    
  2. 생성된 비밀번호 키를 복사합니다. 이 비밀번호 키는 다음 단계에서 사용됩니다.

  3. 앞에서 만든 app.yaml 파일을 열고 env_variables 섹션을 추가합니다. env_variables는 App Engine 가변형 환경의 production 환경에 환경 변수를 설정합니다. app.yaml은 아래 예시와 같이 나타납니다. 여기서 [SECRET_KEY]를 복사한 보안 비밀 키로 대체합니다.

    entrypoint: bundle exec rackup --port $PORT
    env: flex
    runtime: ruby
    
    env_variables:
      SECRET_KEY_BASE: [SECRET_KEY]

App Engine 가변형 환경 앱 설정

앱을 처음 배포하는 경우라면 Rails 앱을 실행하기 위해 리전을 선택하도록 돕는 App Engine 가변형 환경을 만들어야 합니다. 자세한 내용은 리전과 영역에서 확인하세요.

  1. App Engine 앱을 만듭니다. 기본적으로 다음 명령어는 2개의 인스턴스를 만듭니다.

    gcloud app create
    
  2. Ruby 앱을 위한 App Engine 가변형 환경을 지원하는 리전을 선택합니다.

App Engine 가변형 환경에 배포

다음 명령어를 실행하여 샘플 앱을 배포합니다.

gcloud app deploy

업데이트가 완료되었다는 메시지가 표시될 때까지 기다립니다. 몇 분 정도 걸릴 수 있습니다.

배포된 Rails 앱에 액세스

  1. 프로젝트 ID를 검색하려면 gcloud info를 실행합니다.

  2. 브라우저에 다음 URL을 입력합니다.

    https://PROJECT_ID.REGION_ID.r.appspot.com

    다음을 바꿉니다.

다음과 같은 콘텐츠가 표시됩니다.

실행 중인 새로운 Rails 앱의 스크린샷

이번에는 App Engine 가변형 환경에서 실행 중인 Rails 앱에서 요청이 처리됩니다.

이 명령어는 app.yaml에 설명된 대로 앱을 배포하고 새로 배포된 버전을 기본 버전으로 설정하여 모든 새 트래픽을 제공합니다. 앱이 배포되면 플랫폼이 앱 제공 여부를 확인하는 동안 몇 차례 반복해서 메시지가 표시될 수 있습니다. 이는 정상입니다. 앱 업데이트가 완료되었다고 알리는 메시지가 표시될 때까지 기다립니다.

앱을 업데이트하는 경우 앱을 처음 배포할 때 사용한 같은 명령어를 입력하여 업데이트된 버전을 배포할 수 있습니다. 새로 배포하면 앱의 새 버전을 만들고 기본 버전으로 승격합니다. 이전 버전의 앱은 연결된 VM 인스턴스와 마찬가지로 유지됩니다. 이러한 모든 앱 버전과 VM 인스턴스는 청구 가능한 리소스입니다.

App Engine 로그 읽기

이제 Rails 앱이 배포되었으므로 로그를 읽을 수 있습니다. 콘솔에 있는 로그 탐색기를 사용하거나 gcloud app logs read를 사용하여 앱 로그를 읽을 수 있습니다. gcloud CLI를 사용하여 로그 읽기에 대해 자세히 알아보세요.

리소스 삭제

튜토리얼을 완료한 후에는 만든 리소스를 삭제하여 할당량 사용을 중지하고 요금이 청구되지 않도록 할 수 있습니다. 다음 섹션은 이러한 리소스를 삭제하거나 사용 중지하는 방법을 설명합니다.

프로젝트 삭제

비용이 청구되지 않도록 하는 가장 쉬운 방법은 가이드에서 만든 프로젝트를 삭제하는 것입니다.

프로젝트를 삭제하는 방법은 다음과 같습니다.

  1. Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.

    리소스 관리로 이동

  2. 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제를 클릭합니다.
  3. 대화상자에서 프로젝트 ID를 입력한 후 종료를 클릭하여 프로젝트를 삭제합니다.

App Engine 버전 삭제

앱 버전을 삭제하려면 다음 안내를 따르세요.

  1. Google Cloud 콘솔에서 App Engine의 버전 페이지로 이동합니다.

    Versions로 이동

  2. 삭제할 기본이 아닌 앱 버전의 체크박스를 선택합니다.
  3. 앱 버전을 삭제하려면 삭제를 클릭합니다.

다음 단계