development

Google App Engine에서 스테이징 환경을 설정하는 방법

big-blog 2021. 1. 8. 22:47
반응형

Google App Engine에서 스테이징 환경을 설정하는 방법


개발 서버와 프로덕션 서버 를 올바르게 구성한 후 새로 개발 된 버전을 프로덕션에 배포하기 전에 라이브로 테스트하는 데 유용한 Google App Engine에 스테이징 환경 을 설정하고 싶습니다 .

두 가지 다른 접근 방식을 알고 있습니다.

A. 첫 번째 옵션은 app.yaml 버전 매개 변수를 수정하는 것 입니다.

version: app-staging

이 접근 방식이 마음에 들지 않는 것은 프로덕션 데이터가 스테이징 테스트로 오염된다는 것입니다.

  1. 스테이징 버전과 프로덕션 버전은 동일한 Datastore를 공유합니다.
  2. 스테이징 버전과 프로덕션 버전은 동일한 로그를 공유합니다.

첫 번째 요점과 관련하여 새 네임 스페이스 python API를 사용하여 "고정"될 수 있는지 여부를 알 수 없습니다 .

B. 두 번째 옵션은 app.yaml 애플리케이션 매개 변수를 수정하는 것입니다.

application: foonamestaging

이 접근 방식을 사용하면 프로덕션 버전과 완전히 독립적 인 두 번째 응용 프로그램을 만들 수 있습니다.
내가 보는 유일한 단점은 두 번째 응용 프로그램을 구성해야한다는 것입니다 (관리자가 설정). Gaebar
와 같은 백업 / 복원 도구를 사용하면 이 솔루션도 잘 작동합니다.

웹 애플리케이션의 스테이징 환경을 설정하기 위해 어떤 종류의 접근 방식을 사용하고 있습니까?
또한 배포하기 전에 yaml을 변경하는 자동화 된 스크립트가 있습니까?


가장 빠른 솔루션이기 때문에 설정에서 두 번째 옵션을 선택했으며 아직 배포시 애플리케이션 매개 변수를 변경하는 스크립트를 만들지 않았습니다.

하지만 지금 제가보기에 옵션 A는 더 깨끗한 솔루션입니다. 몇 개의 코드 줄을 사용하여 버전에 따라 데이터 저장소 네임 스페이스를 전환 할 수 있습니다. http://code.google.com/appengine/docs/python/runtime.html에 설명 된대로 환경 변수 CURRENT_VERSION_ID에서 동적으로 가져올 수 있습니다 . #The_Environment


별도의 데이터 저장소가 필요한 경우 다음과 같은 이유로 옵션 B가 더 깨끗한 솔루션으로 보입니다 .

  1. 프로덕션 애플리케이션의 실제 버전 관리를 위해 버전 기능을 유지할 수 있습니다.
  2. 트래픽 분할을 위해 버전 기능을 유지할 수 있습니다.
  3. 다중 테넌시를 위해 네임 스페이스 기능을 유지할 수 있습니다.
  4. 한 앱에서 다른 앱으로 엔터티를 쉽게 복사 할 수 있습니다. 네임 스페이스 간에는 그렇게 쉽지 않습니다.
  5. 아직 네임 스페이스를 지원하지 않는 API는 거의 없습니다.
  6. 개발자가 여러 명인 팀의 경우 한 사람에게 프로덕션에 업로드 권한을 부여 할 수 있습니다.

우리는 옵션 B를 선택했습니다. 그리고 프로젝트를 완전히 분리하기 때문에 일반적으로 더 낫다고 생각합니다. 예를 들어 스테이징 서버의 일부 구성을 가지고 놀아도 보안에 영향을 미치거나 손상되지 않으며 프로덕션 환경에서 다른 나비 효과를 유발하지 않습니다.

배포 스크립트의 경우 app.yaml에서 원하는 애플리케이션 이름을 가질 수 있습니다. 더미 / 개발자 이름과 배포 할 때 -A매개 변수를 사용하십시오 .

appcfg.py -A your-app-name update .

그러면 배포 스크립트가 상당히 단순화되고 app.yaml에서 문자열을 교체하거나 이와 유사한 것을 바꿀 필요가 없습니다.


옵션 B를 사용합니다.

애플리케이션 수준에서 dev를 prod와 분리하는 이점에 대한 Zygmantas 제안 외에도, 우리는 dev 애플리케이션을 사용하여 성능을 테스트합니다.

일반적으로 dev 인스턴스는 리소스를 많이 사용하지 않고 실행됩니다. 이렇게하면 애플리케이션이 "느린"느낌을 받는지 확인하는 데 도움이됩니다. 그런 다음 성능 설정을 독립적으로 조정하여 무엇이 차이를 만드는지 확인할 수 있습니다 (예 : 프런트 엔드 인스턴스 클래스).

물론 때때로 우리는 총알을 깨물고 실시간으로 조정하고 볼 필요가 있습니다. 하지만 다른 응용 프로그램과 함께 플레이하는 것은 좋습니다.

여전히 네임 스페이스와 버전을 사용하지만 dev는 더럽고 실험적입니다.


나는 옵션 A를 선호 하고 처리를 자동화하기 위해 간단한 빌드 스크립트설정하려고 합니다.

참조 URL : https://stackoverflow.com/questions/3793860/how-to-set-up-a-staging-environment-on-google-app-engine

반응형