App Engine 가변형 환경에서 실행되는 Ruby on Rails 앱 개발을 시작합니다. 개발한 앱은 모든 Google 제품과 동일한 인프라에서 실행되므로 사용자 수에 관계없이 모든 사용자에게 서비스를 제공하도록 확장할 수 있습니다.
이 가이드는 Rails 웹 개발에 익숙한 개발자를 대상으로 하며, 새로운 Rails 앱을 배포하는 과정을 설명합니다.
이 튜토리얼에는 Ruby 2.6 또는 2.7이 필요합니다.
시작하기 전에
- Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Rails용 로컬 환경 설정
Rails 개발을 위해 로컬 환경을 설정하려면 다음이 필요합니다.
Ruby, Rails, Google Cloud CLI가 사전 설치된 상태로 제공되는 Cloud Shell을 사용해도 됩니다.
Rails와 해당 종속 항목 설치에 대한 자세한 내용은 공식 Rails 시작하기 가이드를 참조하세요.
기본 요건을 완료한 후 Rails 앱을 만들고 배포할 수 있습니다. 다음 섹션에서는 앱 구성, 실행, 배포를 안내합니다.
새 앱 만들기
새로운 Rails 샘플 앱을 만듭니다.
rails new appengine_example
샘플 코드가 있는 디렉토리로 이동합니다.
cd appengine_example
로컬에서 앱 실행
로컬 컴퓨터에서 새로운 Rails 앱을 실행하려면 다음 단계를 따르세요.
Bundler를 사용하여 종속 항목을 설치합니다.
bundle install
로컬 웹 서버를 시작합니다.
bundle exec rails server
브라우저에서 http://localhost:3000/으로 이동합니다.
샘플 앱의 'Yay! You’re on Rails!' 메시지가 페이지에 표시된 샘플 앱에 나타납니다.
간단한 페이지 추가
이제 생성된 Rails 앱에 시작 페이지를 추가합니다.
새 페이지의 스캐폴딩을 생성하려면
index
작업으로WelcomeController
라는 새 Rails 컨트롤러를 만듭니다.bundle exec rails generate controller Welcome index
app/views/welcome/index.html.erb
파일을 열어 다음 상용구 HTML을 확인합니다.원하는 대로 파일을 수정합니다. 예를 들어, 다음 콘텐츠를 사용할 수 있습니다.
index
컨트롤러 작업을 Rails의 루트 작업으로 설정합니다. 그러면 사용자가 Rails 앱에 방문할 때마다 시작 페이지가 표시됩니다.config/routes.rb
파일을 열어 다음과 같이 생성된 콘텐츠를 확인합니다.이 파일을 수정하려면
root 'welcome#index'
를 추가합니다.파일을 저장하고 닫습니다. 이전과 동일한 방법으로 Rails 앱을 테스트합니다.
App Engine 가변형 환경에 앱 배포
App Engine 가변형 환경에서는 app.yaml
이라는 파일을 사용합니다.
앱의 배포 구성을 설명합니다. 이 파일이 없으면 gcloud CLI에서 배포 구성을 추측합니다. 그러나 프로덕션 환경에서 Rails에는 비밀번호 키가 필요하므로, 이 파일을 제공하는 것이 좋습니다.
App Engine에 배포할 샘플 앱을 구성하려면 샘플 앱 디렉터리의 루트에 app.yaml
이라는 새 파일을 만들고 다음을 추가합니다.
Rails 비밀번호 키 구성
프로덕션 환경에서 Rails 앱을 배포하는 경우, 환경 변수 SECRET_KEY_BASE
를 사용자 세션 데이터를 보호하는 데 사용되는 보안 비밀 키로 설정합니다. 이 환경 변수는 config/secrets.yml
파일에서 읽혀집니다.
새 비밀번호 키를 생성합니다.
bundle exec rails secret
생성된 비밀번호 키를 복사합니다. 이 비밀번호 키는 다음 단계에서 사용됩니다.
앞에서 만든
app.yaml
파일을 열고env_variables
섹션을 추가합니다.env_variables
는 App Engine 가변형 환경의production
환경에 환경 변수를 설정합니다.app.yaml
은 아래 예시와 같이 나타납니다. 여기서[SECRET_KEY]
를 복사한 보안 비밀 키로 대체합니다.
App Engine 가변형 환경 앱 설정
앱을 처음 배포하는 경우라면 Rails 앱을 실행하기 위해 리전을 선택하도록 돕는 App Engine 가변형 환경을 만들어야 합니다. 자세한 내용은 리전과 영역에서 확인하세요.
App Engine 앱을 만듭니다. 기본적으로 다음 명령어는 2개의 인스턴스를 만듭니다.
gcloud app create
Ruby 앱을 위한 App Engine 가변형 환경을 지원하는 리전을 선택합니다.
App Engine 가변형 환경에 배포
다음 명령어를 실행하여 샘플 앱을 배포합니다.
gcloud app deploy
업데이트가 완료되었다는 메시지가 표시될 때까지 기다립니다. 몇 분 정도 걸릴 수 있습니다.
배포된 Rails 앱에 액세스
프로젝트 ID를 검색하려면
gcloud info
를 실행합니다.브라우저에 다음 URL을 입력합니다.
https://PROJECT_ID.REGION_ID.r.appspot.com
다음을 바꿉니다.
PROJECT_ID
: Google Cloud 프로젝트 IDREGION_ID
: App Engine이 앱에 할당하는 코드
다음과 같은 콘텐츠가 표시됩니다.
이번에는 App Engine 가변형 환경에서 실행 중인 Rails 앱에서 요청이 처리됩니다.
이 명령어는 app.yaml
에 설명된 대로 앱을 배포하고 새로 배포된 버전을 기본 버전으로 설정하여 모든 새 트래픽을 제공합니다.
앱이 배포되면 플랫폼이 앱 제공 여부를 확인하는 동안 몇 차례 반복해서 메시지가 표시될 수 있습니다. 이는 정상입니다. 앱 업데이트가 완료되었다고 알리는 메시지가 표시될 때까지 기다립니다.
앱을 업데이트하는 경우 앱을 처음 배포할 때 사용한 같은 명령어를 입력하여 업데이트된 버전을 배포할 수 있습니다. 새로 배포하면 앱의 새 버전을 만들고 기본 버전으로 승격합니다. 이전 버전의 앱은 연결된 VM 인스턴스와 마찬가지로 유지됩니다. 이러한 모든 앱 버전과 VM 인스턴스는 청구 가능한 리소스입니다.
App Engine 로그 읽기
이제 Rails 앱이 배포되었으므로 로그를 읽을 수 있습니다. 콘솔에 있는 로그 탐색기를 사용하거나 gcloud app logs read
를 사용하여 앱 로그를 읽을 수 있습니다.
gcloud CLI를 사용하여 로그 읽기에 대해 자세히 알아보세요.
리소스 삭제
튜토리얼을 완료한 후에는 만든 리소스를 삭제하여 할당량 사용을 중지하고 요금이 청구되지 않도록 할 수 있습니다. 다음 섹션은 이러한 리소스를 삭제하거나 사용 중지하는 방법을 설명합니다.
프로젝트 삭제
비용이 청구되지 않도록 하는 가장 쉬운 방법은 가이드에서 만든 프로젝트를 삭제하는 것입니다.
프로젝트를 삭제하는 방법은 다음과 같습니다.
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
App Engine 버전 삭제
앱 버전을 삭제하려면 다음 안내를 따르세요.
- In the Google Cloud console, go to the Versions page for App Engine.
- Select the checkbox for the non-default app version that you want to delete.
- 앱 버전을 삭제하려면 삭제를 클릭합니다.
다음 단계
Rails로 MySQL용 Cloud SQL 사용 방법 알아보기
Rails로 PostgreSQL용 Clouds SQL 사용 방법 알아보기
GKE에서 Ruby Bookshelf 샘플 실행 방법 알아보기