어떻게 곡가 클라우드 플랫폼에서 Python 서버 없는 프로그램을 실행합니까
10426 단어 serverlessgcp
MVP, 데이터 수신 파이프, 단일 기능, 성숙한 응용 프로그램을 구축하든지 간에 중요한 일에 관심을 가지는 데 도움을 줄 수 있습니다.
서버 없는 서비스에 관심을 가지고 GCP 위에서 Python 서버 없는 프로그램을 실행하는 방법을 알아보겠습니다.
Python 애플리케이션을 GCP에 배포할 수 있는 5가지 방법이 있습니다.
이런 상황에서
serverless
는 무슨 뜻입니까?시작 전: gcloud sdk 구성
Dell은 gcloud sdk을 사용하기 때문에 다음을 올바르게 설정하는 것이 좋습니다.
# You can use whatever you like for CONFIGURATION-NAME
gcloud config configurations create {CONFIGURATION-NAME}
# the project id comes from GCP
gcloud config set project {PROJECT-ID}
# This command will open a browser tab
gcloud auth login
# Check if everything works
gcloud config configurations describe {CONFIGURATION-NAME}
준비 다 됐어!애플리케이션 엔진 표준 환경
App Engine에는 두 가지 버전이 있는데, 표준 버전과 유연한 버전이 있는데, 여기서 우리가 주목하는 것은 표준 버전이다.
만약 당신이 Heroku의 팬이라면 App Engine은 GCP에서 가장 가까운 경험입니다.
하나
app.yaml
, 하나requirements.txt
가 필요하면 출발할 수 있습니다.다음은 실행 예제repository입니다.
requirements.txt
로 내보냅니다.app.yaml
및 .gcloudignore
응용 프로그램.아마르
app.yaml
는 적어도 두 개의 항목이 필요하다. runtime
과 entrypoint
.App Engine은 Python 3.7과 Python 3.8을 지원하므로 사용할 런타임을 선택할 수 있습니다.
entrypoint
는 실행하려는 명령입니다(예: Heroku proc 파일의 web
.runtime: python38
entrypoint: gunicorn main:app -w 4 -k uvicorn.workers.UvicornWorker
애플리케이션 엔진 애플리케이션 생성 및 배포
저장소를 복제한 후 로컬에서 어플리케이션을 실행하는 것과 App Engine에서 어플리케이션을 실행하는 것 사이에는 몇 가지 명령만 존재합니다.
# You'll have to select a region and you can't change it afterwards
gcloud app create
gcloud app deploy
몇 분만 기다리면 응용 프로그램이 온라인으로 실행될 것이다.깔끔하지 않아요?표현
나는 hey와 5000개의 요청
hey-n 5000 URL
을 사용하여 부하 테스트를 실행하여 아주 좋은 데이터를 얻었다.이 응용 프로그램은 많이 하지 않기 때문에 나는 기본적으로 GCP 인프라 시설의 비용을 테스트하고 있다Summary:
Total: 5.4324 secs
Slowest: 0.3870 secs
Fastest: 0.0273 secs
Average: 0.0517 secs
Requests/sec: 920.3966
잘 됐다!실례의 수량이 어떻게 위아래로 신축되는지 보니 매우 기쁘다.
클라우드 기능
클라우드 기능은 GCP 생태계에서 AWS Lambda와 가장 가까운 기능으로 중요한 차이점이 있습니다.
이벤트(클라우드 저장소, 게시/구독 등)를 통해 클라우드 기능을 터치할 수 있습니다직접 전화하든가.
실행 가능한 예시 here 를 찾을 수 있도록 클라우드 함수를 배치합니다.
하나의 주요 요구 사항이 있습니다: 당신의 기본 경로에
requirements.txt
와 하나main.py
가 필요합니다.gcloud functions deploy movie-recommender \
--entry-point recommend_movie \
--runtime python38 \
--trigger-http \
--allow-unauthenticated \
--region=europe-west1
--allow-unauthenticated
API 엔드포인트를 공개합니다.--entry-point
에서 호출할 함수를 지정합니다.성능으로 말하자면 그것들도 매우 좋다
Summary:
Total: 10.5700 secs
Slowest: 4.6717 secs
Fastest: 0.0407 secs
Average: 0.0779 secs
Requests/sec: 473.0385
구름 끝
Cloud Run은 knative를 사용하여 Kubernetes 클러스터에서 서버 없는 워크로드를 실행하는 서버가 없는 GCP 키트의 최신 추가입니다.
GKE 클러스터에서 클라우드 런을 실행하거나, 구글이 직접 관리하는 클러스터에서 클라우드 런을 실행할 수 있다는 의미다.
Cloud Run은 어플리케이션 엔진 및 클라우드 기능에 비해 다음과 같은 이점을 제공합니다.
클라우드 런을 하고 싶으면 (다른 것) runnable example 을 찾을 수 있습니다.
Cloud Run에 응용 프로그램을 배치하려면 Docker 이미지가 필요합니다. 이 이미지는 Cloud Run 서비스에서 가져올 수 있습니다.
이것은 사용 가능한 이미지를 공개할 수도 있고 GCP 용기 등록표에 위탁 관리할 수도 있다.
제 예에서 GCP를 사용하여 서비스를 구축하고 이미지를 GCP 용기 등록표로 전송하기로 결정했습니다.
저장소를 복제한 후 다음 명령을 실행할 수 있습니다
gcloud builds submit --tag eu.gcr.io/$YOUR_GCP_PROJECT/movie-recommender
이 명령은 docker 이미지를 생성하여 GCP 컨테이너 레지스트리로 전송합니다.그리고 우리는 클라우드 운행 서비스를 배치할 수 있다
gcloud run deploy movie-recommender \
--image eu.gcr.io/$YOUR_GCP_PROJECT/movie-recommender \
--platform managed \
--allow-unauthenticated \
--region europe-west1 \
--args=gunicorn,main:app,-w,4,-k,uvicorn.workers.UvicornWorker
각 로고를 설명해 보겠습니다.main.py
: 클라우드 기능과 마찬가지로 공개 액세스 가능한 URL--allow-unauthenticated
: 구글--platform
: 클라우드 컴퓨팅이 실행되는 구역--region
: 용기에서 실행하고 싶은 명령입니다Summary:
Total: 5.7388 secs
Slowest: 0.2160 secs
Fastest: 0.0386 secs
Average: 0.0554 secs
Requests/sec: 871.2571
또 아주 좋은 결과야.서버가 없는 것이 항상 정답입니까?
아니오, 원가를 떠나서 당신이 할 수 없거나 할 수 없는 일들이 있습니다.
배달하다
App Engine, Cloud Run, Cloud 기능은 모두 아주 좋은 free tier 버전이 있는데, 그것들을 사용할 때 비용을 지불하기만 하면 된다.
그것들은 모두 Serverless VPC access를 통해 전용 VPC 연결을 지원한다.서버가 없는 VPC 접근은 매우 간단합니다. 서버가 없는 창고에 복잡한 토폴로지 구조를 구축할 수 있습니다. 예를 들어 같은 네트워크에서 가상 컴퓨터와 서버가 없는 응용 프로그램을 혼합할 수 있습니다.
특히 응용 프로그램 엔진과 클라우드에 대한 잠금 계수도 낮다.
성숙한 프로그램으로서 용기에 포장해서 다른 곳에서 실행할 수 있습니다.
Stackdriver 제품 (지금은 Operations) 과 잘 통합되어 있습니다. 이것은 집중된 로그와 모니터링을 즉시 얻을 수 있음을 의미합니다.
네, structlog로 json 로그를 해석할 수 있습니다.
--args
level
check this snippet 로 변환하는 것을 기억하십시오.App Engine과 Cloud Run은 서로 다른 버전 간의 데이터 분할을 지원하기 때문에 A/B 테스트나 canary 배치를 무료로 받을 수 있습니다.
If I had to choose one.... I'd go with Cloud Run.
클라우드 기능도 훌륭하지만, 웹 응용 프로그램을 내가 싫어하는 방식으로 작성하도록 강요합니다.
하지만 이벤트 기반 시스템, 데이터 섭취 또는 이벤트 기반 파이프라인에서 클라우드 기능을 사용하는 것을 좋아합니다.
유용한 자원
Reference
이 문제에 관하여(어떻게 곡가 클라우드 플랫폼에서 Python 서버 없는 프로그램을 실행합니까), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/barrachri/how-to-run-python-serverless-applications-on-the-google-cloud-platform-1jcm텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)